흐름 제어
파이썬에서는 조건에 맞게 실행하거나,
같은 코드를 반복적으로 실행하는 등
흐름을 제어하는 문법을 제공한다.
if
조건에 따라 코드를 선택적으로 실행한다.
기본 사용법
x = 10
if 조건문1:
명령문1
elif 조건문2:
명령문2-1
elif 조건문3:
명령문3-1
명령문3-2
else:
명령문4
if 조건문 실행할_명령
을 통해 조건문의 결과가 참일 경우
지정된 실행할 명령문들을 실행한다.
elif 조건문 실행할_명령
을 통해 앞선 if의 조건문이 참이 아닐 때,
다른 조건을 지정해 실행할 명령문을 지정한다.
elif는 여러 번 정의할 수 있다. 다른 언어의 else if
와 헷갈리지 않게 조심하자.
else 실행할_명령
은 if나 elif의 조건문이 모두 거짓일 경우
실행할 명령문을 지정한다.
예제
x = 10
if x > 5:
print("x는 5보다 큽니다.")
elif x == 5:
print("x는 5입니다.")
else:
print("x는 5보다 작습니다.")
for
- 특정 코드를 반복해서 실행할 때 사용한다.
- 컬렉션의 개수만큼 반복해서 실행된다.
기본 사용법
for 변수명 in 컬렉션:
명령문1
else:
명령문2
컬렉션
은 리스트나 튜플같은 컬렉션 데이터를 의미한다.
해당 컬렉션을 변수명을 통해 순회하면서
데이터를 꺼내서 사용할 수 있다.
참고로 이 때 컬렉션이라는 것은 리스트나 튜플뿐만 아니라
딕셔너리나 집합도 가능하다.
다만 딕셔너리로 가져올 경우에는 키만 가져오게 된다.
단, for는 컬렉션에 데이터가 존재할 때 동작한다.
만약 컬렉션에 데이터가 없다면 else를 통해
컬렉션에 데이터가 없는 경우에 대한 처리를 할 수 있다.
예제
for i in [1, 2, 3, 4, 5]:
print(i)
dic = {'name': '홍길동', 'age': 30}
for key in dic:
print(key, dic[key])
for i in []:
print(i)
else:
print("컬렉션이 비어 있습니다.")
while
- 특정 코드를 반복해서 실행할 때 사용한다.
- 조건이 참인 동안 계속 실행된다.
기본 사용법
while 조건문:
명령문
예제
count = 0
while count < 5:
print(count)
count += 1
range와 enumerate
for문과 함께 자주 사용되는 함수인
range와 enumerate에 대해서 알아보자.
range
필요한 만큼의 범위를 만들어내는 함수다.
입력받은 숫자에 해당되는 범위의 값을 반복 가능한 객체로 만들어서 반환한다.
range([시작값], 종료값, [단계값])
처럼 사용한다.
시작값과 단계값은 생략 가능하며,
시작값은 생략 시 0이 되며,
단계값은 생략 시 1이 된다.
그리고 종료값은 정확히는 종료값보다는 종료 다음 값을 의미한다.
예를 들어 range(3, 5)
의 경우에는 3~5까지가 아니라 3~4까지가 되낟.
# 종료값만 명시
# range(5)일 경우 0~4를 나타낸다.
print("==================================")
for i in range(5):
print(i)
# 시작과 종료값 명시
# range(3, 5)일 경우 3~4를 나타낸다.
print("==================================")
for i in range(3, 5):
print(i)
# 시작과 종료값과 단계값 명시
# range(1, 5, 2)일 경우 1, 3을 나타낸다.
# range(1, 5)일 경우 1~4인데 2씩 증가하니 1, 3이 된다.
print("==================================")
for i in range(1, 5, 2):
print(i)
enumerate
컬렉션 자료형을 전달하면 해당 컬렉션의 순서와 값을 반환하는
새로운 컬렉션을 만들어내는 함수다.
enumerate(컬렉션)
처럼 사용한다.
# 리스트를 사용한 경우
print("==================================")
for i, value in enumerate([1, 2, 3]):
print(i, " : ", value)
# 튜플을 사용한 경우
print("==================================")
for i, value in enumerate((1, 2, 3)):
print(i, " : ", value)
# 집합을 사용한 경우
print("==================================")
for i, value in enumerate({1, 2, 3}):
print(i, " : ", value)
# 딕셔너리를 사용한 경우
print("==================================")
for i, value in enumerate({'key1': 1, 'key2': 2, 'key3': 3}):
print(i, " : ", value)
# 문자열을 사용한 경우
print("==================================")
for i, value in enumerate("문자열"):
print(i, " : ", value)
반복문 제어
반복문을 사용하다 보면
도중에 반복을 멈추거나 또는 해당 단계를 넘기는 등의
작업이 필요하다.
그럴 때 사용하는 것이 break
, continue
, pass
다.
break는 해당 반복문을 완전히 종료시킬 때 사용한다.
continue는 특정 단계를 넘길 때 사용한다.
pass는 자리 채우기 용도로 사용한다.
pass는 좀 특이한 성격의 키워드다.
“뭔가 나중에 이 자리에 작업을 해야할 것 같은데?”라는 생각이 들 때
자리 채우기만 하는 용도로 사용한다.
그래서 프로그램을 설계하는 중간 단계에서 틀만 잡아두려고 할 때 사용한다.
pass는 뭐지
# break 사용 시 해당 반복문을 종료시킨다.
# 아래 내용 실행 시 0~1만 출력 후 반복문을 종료한다.
print("==================================")
for i in range(5):
if i == 2:
break
print(i)
# continue 사용 시 해당 단계를 건너뛴다.
# 아래 내용 실행 시 0, 1 출력 후 2를 건너뛰고 3, 4를 출력한다.
print("==================================")
for i in range(5):
if i == 2:
continue
print(i)
# pass 사용 시 아무 동작이 없다.
# 아래 내용 실행 시 0~4를 모두 출력한다.
print("==================================")
for i in range(5):
if i == 2:
pass
print(i)