파이썬에서 프로그램의 흐름을 제어할 수 있는 제어문에 대해 알아보겠습니다.
1. if 문
if 문장은 조건에 따라 흐름을 분기 할 수 있는 문장 입니다.
다음 예처럼 if 조건:, elif 조건:, else: 을 사용할 수 있습니다.
>>> x = int(input("정수를 입력해 주세요: "))
정수를 입력해 주세요: 42
>>> if x < 0:
x = 0
print("음수는 0으로 변환")
elif x == 0:
print("0 입력")
elif x == 1:
print("1 입력")
else:
print("1 초과")
1 초과
>>>
음수가 입력되면 if x < 0: 구문이 실행되고 0 이나 1일 입력되면 elif 부분이 실행됩니다. 2이상의 값이 입력되면 eslse: 부분이 실행됩니다. elif 부분은 필요한 만큼 반복될 수 있습니다.
2. for 문
파이썬의 for문은 list나 string 같은 시퀀스 타입의 각항목에 대해 반복 처리를 할 수 있게 해 줍니다.
>>> colors = ['red', 'blue', 'yellow']
>>> for item in colors:
print(item, len(item))
red 3
blue 4
yellow 6
>>>
만약 시퀀스내의 항목에 대한 반복 처리중 시퀀스의 내용을 변경해야 할 경우 복사된 시퀀스를 사용하는 것이 좋습니다. 처리중 변경된 사항이 문제를 일으킬 수 있기 때문입니다.
>>> for item in colors[:]: # 슬라이스로 만들어진 사본으로 작업함.
if len(item) > 5:
colors.insert(0, item)
>>> colors
['yellow', 'red', 'blue', 'yellow']
>>>
특정 값의 범위를 만들기 위해서는 range() 함수를 사용합니다.
>>> for i in range(5):
print(i)
0
1
2
3
4
>>>
- range(5) 는 0부터 4까지 범위를 만듭니다.
- range(1, 5) 는 1부터 4까지 범위를 만듭니다.
- range(0, 5, 2) 는 0, 2, 4 값을 만듭니다.
시퀀스를 처리하면서 숫자 인덱스가 필요할 때는 다음과 같이 사용할 수 있습니다.
>>> colors = ['red', 'blue', 'yellow']
>>> for i in range(len(colors)):
print(i, colors[i])
0 red
1 blue
2 yellow
>>>
3. while 문
while 조건: 형식에서 조건이 참이 동안 실행됩니다.
>>> i = 3
>>> while i > 0:
print(i)
i -= 1
3
2
1
>>>
4. break, continue 문
- for, while 루프내에서 break 를 만나면 루프를 바로 종료 합니다.
- for, while 루프내에서 continue를 만나면 나머지 부분을 실행하지 않고, 다음 루프로 넘어갑니다.
5. 루프(for, while)에 대한 else: 문과 pass 문
if가 아닌 for, while 루프에 대해 else: 문을 사용할 수 있습니다. 이 경우 else: 문은 break 에 의해 강제로 종료되는것이 아니라, for 문이 모두 항목을 소진하였거나, while문에 False를 만나서 종료될 때 실행됩니다.
보통 프로그래밍 언어에서 'else'라고 하면 if와 함께 오는 경우가 거의 대부분입니다.
하지만 파이썬에서는 for 문과도 함께 쓰기도 합니다.
for와 함께 쓰는 else는, for문이 중간에 break 등으로 끊기지 않고,
끝까지 수행 되었을 때 수행하는 코드를 담고 있습니다.
코딩을 하다 보면 for문이 중간에 break 되었는지, 되어있지 않는지 판별해야 되는 경우가 많이 있습니다.
테스트 변수를 둬서 확인하는 등으로 처리합니다.
파이썬에서는 else의 사용으로 간단하게 해결할 수 있습니다.
if문에 else를 사용하듯이 else를 사용하게 됩니다.
else의 들여쓰기는 for와 일치해야 합니다.
파이썬의 for 반복문은 else 명령과 짝을 이룰 수도 있다.
for 변수 in 반복가능자: 수행문들1 else: 수행문들2 |
else 블럭에 포함된 ‘수행문들2’는 for 반복문이 반복형의 마지막 요소까지 모두 반복했을 경우 그 다음에 수행된다. 즉, 모든 반복이 성공적으로 수행된 경우에 한 번 수행된다. 하지만 break문을 만나면 else 구문은 수행되지 않고 for 블럭을 완전히 빠져나간다.
for n in lst: if n==0: break print(n) else: print(‘There is no 0.’) # break문을 만나지 않았다면 수행된다. |
이 예제의 경우 lst 안에 0이 있다면 break를 만나게 되고 따라서 else 블럭은 수행되지 않고 for 반목문을 빠져 나오게 된다.
따라서 for 반복문이 종료된 시점에서 이 종료가 모든 반복을 다 수행한 후의 정상적인 종료인지, 아니면 break 명령에 의한 강제 종료인지에 따라서 수행해야 될 일을 구분할 필요가 있는 경우에 for~else 구문을 사용하면 된다.
>>> for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, '=', x, '*', n//x)
break
else:
print(n, '은 소수 입니다.')
2 은 소수 입니다.
3 은 소수 입니다.
4 = 2 * 2 5 은 소수 입니다.
6 = 2 * 3 7 은 소수 입니다.
8 = 2 * 4 9 = 3 * 3
>>>
위 예에서 else:는 if에 대한 부분이 아니라 내부의 for문에 대한 else: 입니다. 내부의 for 루프가 break에 의해 종료되지 않을때만 else: 부분이 실행됩니다.
pass 문은 구문이 필요하지만 프로그램이 아무런 조치를 하지 않을 때 사용할 수 있습니다.
>>> while True:
pass # 키보드 인터럽트 대기 중(Ctrl + C)
KeyboardInterrupt
>>>
'PYTHON' 카테고리의 다른 글
[Python / 파이썬 ] 파라미터 앞 (*args, **kwargs) (0) | 2019.07.23 |
---|---|
[Python / 파이썬] 딕셔너리 value 값 추가 / 하나의 키에 여러개의 값 넣기 (0) | 2019.07.22 |
[Python / 파이썬] 파이썬에서 정규표현식 사용하기 (0) | 2019.07.18 |
[Python 파이썬] __getitem__() 를 이용한 튜플의 리스트, 리스트의 리스트 다루기 (Handling List of Tuples, List of Lists) // 리스트 안에 튜플 (0) | 2019.07.17 |
[Python] 문자열에 문자열 리스트의 요소가 포함되어 있는지 찾기 (0) | 2019.07.16 |