Level 02 |
02_제어문과 반복문 기초 |
1_제어문의 구조
설명 01
SHAPE \* MERGEFORMAT
if 불리언:
불리언이 True 인 경우 실행되는 코드
else:
불리언이 False 일 경우 실행되는 코드
예)
age = 3
if age < 5:
print('영 유아 입니다.')
else:
print('영 유아가 아닙니다.')
if 의 의미는 '만약 ~ 이라면' 이지요.
만약 불리언이 참 이라면, 들여쓰기 된 부분을 실행 하겠다는 의미를 갖고 있습니다.
불리언이 거짓인 경우, 다음 단계인 else로 넘어갑니다.
만약 ~ 이라면 이렇게, 아니면 저렇게
두 가지 경우의 수가 있는 것입니다.
여기에서 더 나아가 두 가지를 더 다뤄보겠습니다.
1). 참인 경우에만 코드를 실행하고, 거짓인 경우에는 아무것도 하지 않게 하려면
2). 두 가지를 넘는, 여러 가지 경우의 수가 있다면
2_참인 경우에만 코드를 실행하고, 거짓인 경우에는 아무것도 하지 않게 하려면
설명 01
SHAPE \* MERGEFORMAT
if 불리언:
불리언이 True 인 경우 실행되는 코드
예)
age = 3
if age < 5:
print('영 유아 입니다.')
생각보다 너무 간단했나요?
else 부분을 지우면 됩니다.
이러면 이렇게, 저러면 저렇게 만드는 것이 if ~ else 라고 하였죠?
'저러면 저렇게' 부분을 지우는 것으로 간단하게 구현할 수 있습니다.
3_두 가지를 넘는, 여러 가지 경우의 수가 있다면
설명 01
SHAPE \* MERGEFORMAT
if 불리언_1:
불리언_1 이 True 인 경우 실행되는 코드
elif 불리언_2:
불리언_2 이 True 인 경우 실행되는 코드
else:
위 모든 조건이 False 일 경우 실행되는 코드
예)
age = 3
if age < 5:
print('영 유아 입니다.')
elif age < 20:
print('학생 입니다.')
elif age < 25:
print('아직 어른이 아닙니다.')
else:
print('어른 입니다.')
if 에서는, 오른쪽 불리언이 False 일 경우 다음 단계인 else 로 내려갔었죠?
if 와 else 사이에 elif 라는 것을 추가하면 새로운 경우의 수를 추가할 수 있습니다.
elif 는 여러 번 넣을 수 있어요.
$$ 중요한 점
맨 처음에 if 로 판별한 후, 다음 단계로 한 단계씩 내려가면서 불리언을 판별하게 됩니다.
if 부터 else 를 만날 때 까지 순서대로 내려오면서 확인하기 때문에 순서 가 중요합니다.
[순서도 그림 첨부]
[순서도 그림 첨부]
else 까지 내려오는 것은 if 와 모든 elif 에서 False 인 경우 입니다.
4_(while) 반복문의 구조
설명 01
SHAPE \* MERGEFORMAT
while 불리언:
반복할 부분
예)
age = 3
while age < 5:
print('영 유아 입니다.')
age = age + 1
while 문은 기본적으로 if 문과 동일하게 구성되어있습니다.
if 문에서의 '만약 불리언이 참 이라면, 들여쓰기 된 부분을 실행 하겠다는 의미'를 동일하게 갖고 있습니다.
딱 한가지 다른 점은
들여쓰기 된 부분을 실행하고 나서 불리언이 참인지를 다시 한 번 확인한다는 것입니다.
이렇게 다시 한 번 확인하는 과정이 있기 때문에 반복이 일어나게 됩니다.
만약 불리언이 참 이라면, 들여쓰기 된 부분을 실행합니다.
이 때 불리언이 참이라면 들여쓰기 된 부분을 다시 수행하고, 불리언이 참인지를 다시 확인합니다.
볼드체는 if 문과 동일한 부분입니다.
볼드체가 아닌 부분은 while 문에서 반복되는 영역입니다.
5_(for) 반복문의 구조
설명 01
SHAPE \* MERGEFORMAT
for 변수명 in 묶음:
반복할 부분
예)
sample = [1, 3, 5, 7, 9]
for i in sample:
print(i)
for 문을 이해하는 방법:
1) in 오른쪽의 '묶음' 으로부터 하나를 꺼내 in 왼쪽의 '변수' 에 대입합니다.
2) (if 문과 동일하게) 불리언이 참일 경우 들여쓰기 된 부분을 실행합니다.
3) -> 1) 로 돌아가 새롭게 하나를 꺼내서 반복합니다.
묶음 안에 5 개가 있으면 5번 꺼낼 수 있으므로
반복이 5번 일어나게 됩니다.
$$ 조금 더 깊게 알아보기
(in 을 불리언으로 이해하는 방법)
이 불리언은 묶음으로부터 꺼낸 값이 묶음 안에 존재하는지를 나타내는 것이므로 항상 '참' 입니다.
항상 '참' 인 경우가 묶음 안에 들어있는 개수만큼 있기 때문에, 그 개수만큼 반복합니다.
5_ 조건문과 반복문 중간정리
설명 01
SHAPE \* MERGEFORMAT
[3 가지 사이의 공통점]
1) 조건 부분과 실행 부분으로 이루어져 있습니다.
2) 조건이 참인 경우 들여쓰기 된 부분이 실행됩니다.
if 불리언: <- 조건 부분
들여쓰기 된 부분 <- 실행 부분
while 불리언: <- 조건 부분
들여쓰기 된 부분 <- 실행 부분
for 변수명 in 묶음: <- 조건 부분
들여쓰기 된 부분 <- 실행 부분
[while 과 for 의 공통점]
1) 들여쓰기 된 부분을 실행 한 이후 조건에 따라 반복합니다.
[while 과 for 의 차이점]
반복하는 기준이 다릅니다.
while 은 조건 부분이 '거짓' 이 될 때 까지 반복합니다.
for 는 in 기준 오른쪽인 묶음의 개수만큼 반복합니다.
지난 시간에 딕셔너리 구조를 다루었습니다.
날씨와, 뉴스제목 정보를 폴더 트리구조로 이해해 보았죠.
뉴스정보와 날씨가 여러 개 있었지만 하나씩만 조회했었는데요,
이제 우리가 배운 반복문으로 전부 알아볼 수 있겠어요!
[예제문제]
네이버에서 뉴스 실시간으로 가져오기 첫걸음(웹 자료형 XML)
우리에게 필요한건 단 하나(RSS)
예제코드:
import requests
import xmltodict
url = ''' 접속할 RSS주소를 입력 '''
req = requests.get(url).text.encode(encoding="ISO-8859-1")
diction = xmltodict.parse(req)
for news in diction['rss']['channel']['item']:
print(news['title'])
# diction['rss']['channel']['item'] 까지가 리스트 이었기 때문에, 하나씩 뽑아올 수 있는 for 문을 사용할 수 있어요.
# 하나를 뽑아온 후, 이것은 딕셔너리처럼 '키' 로 조회할 수 있기 때문에 대괄호 안에 키를 넣어 조회하였습니다.
[도전문제]
날씨에 대한 예제코드를 보고, 아래 조건대로 개선해보기
- day 에는 오늘(0), 내일(1), 모레(2) 정보가 있습니다.
이를 이용해 오늘의 정보만 출력되게끔 제어 / 반복문을 만들어주세요.
예제코드:
import requests
import xmltodict
url = 'http://www.kma.go.kr/wid/queryDFSRSS.jsp?zone=1117052000'
req = requests.get(url).text
diction = xmltodict.parse(req)
for weather in diction['rss']['channel']['item']['description']['body']['data']:
print(weather['wfKor'])
# 위의 예제와 사실상 동일합니다.
# diction['rss']['channel']['item']['description']['body']['data'] 까지가 리스트 이었기 때문에,
# 하나씩 뽑아올 수 있는 for 문을 사용할 수 있어요.
# 하나를 뽑아온 후, 이것은 딕셔너리처럼 '키' 로 조회할 수 있기 때문에 대괄호 안에 키를 넣어 조회하였습니다.
'[일상봇 만들기] 나의 하루하루를 도와줄 친구!' 카테고리의 다른 글
level_03_part_2 (0) | 2019.07.03 |
---|---|
level_03_part_1 (0) | 2019.07.02 |
level_02_part_1 (0) | 2019.06.20 |
mok_cha (0) | 2019.06.20 |
level_00_들어가며 (0) | 2019.06.20 |