흐름 제어
포스트
취소

흐름 제어

흐름 제어

파이썬에서는 조건에 맞게 실행하거나,
같은 코드를 반복적으로 실행하는 등
흐름을 제어하는 문법을 제공한다.

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)

출처

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.