Programming/Pyhton

파이썬: 반복문(for문, while문)

JunsuKim 2022. 7. 27.
728x90

반복문 for문과 while문이 존재한다.

파이썬에서 이들이 어떻게 쓰이는지에 대해 알아보자.

for문

파이썬의 직관적인 특징을 가장 잘 대변해 주는 것이 for문이다.

for문의 기본 구조

for 변수 in 리스트(또는 튜플, 문자열 등):
    수행할 문장1
    수행할 문장2
    ...

이는 리스트나 튜플, 문자열 등의 첫 번째 요소부터 마지막 요소까지 변수에 대입되고,

수행할 문장을 수행한다.

>>> test = ['cat', 'dog', 'cow']
>>> for i in test:
...     print(i)
...
cat
dog
cow

>>> test2 = [(1, 2), (3, 4), (5, 6)]:
>>> for (first, second) in test2:
...    print(first + second)
...
3
7
11

2번째 예제는 리스트의 요소값이 튜플이므로, 각각의 요소가 자동으로 (first, second) 변수에 대입된다.

range( ) 함수

range( )함수는 for문과 함께 자주 사용된다.

range(10)이 있다고 하자.

이는 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어준다.

for문과 range( ) 함수를 함께 사용하면, 다음과 같다.

>>> for i in range(10):
>>>     print(i)
>>>
0
1
2
3
4
5
6
7
8
9

이처럼 범위를 지정해주는데 효율적으로 사용할 수 있다.

while문

for문과 마찬가지로 반복해서 문장을 수행해야 할 경우 사용된다.

while문의 기본 구조

while 조건문:
    수행할 문장1
    수행할 문장2
    ...

while문은 조건문이 참인 동안 수행할 문장들을 수행한다.

>>> eat = 1
>>> while eat <= 3:
...    if i == 1:
...        print("아침 먹고,")
...    elif i == 2:
...        print("점심 먹고,")
...    else
...        print("저녁도 먹었다!")
...    eat += 1
...
아침 먹고,
점심 먹고,
저녁도 먹었다!

위 예제에서의 조건은 eat이 3보다 작거나 같을 때까지이다.

따라서 eat이 4가 되는 순간부터 반복문이 수행되지 않는다.

while문의 안에서 eat을 1씩 증가시켜줌으로써 특정 순간 while문을 빠져나가게 된다.

while문 무한 루프

C와 Java와 같은 언어에서는 for문도 무한 반복이 되지만, 파이썬에서는 while문에서만 무한 반복이 가능하다.

무한 루프의 기본 형태는 다음과 같다.

while True:
    수행할 문장1
    수행할 문장2
    ...
    
while 1:
    수행할 문장1
    수행할 문장2
    ...

while문의 조건으로 True나 1을 주면 된다.

무한 반복은 생각보다 많이 사용된다.

이 때 주의할 점으로는 탈출 조건을 설정해줘야 한다는 것이다.

continue

continue를 사용하면 어떠한 조건일 때 수행할 문장을 수행하지 않고 넘어갈 수 있다.

>>> for i in range(10):
...    if(i % 2 == 0):
...        continue
...    print(i)
...
1
3
5
7
9

while문에서도 똑같이 사용된다.

>>> i = 0
>>> while i < 10:
...    if i % 2 == 0:
...        continue
...    print(i)
...    i += 1
...
1
3
5
7
9

break

continue는 특정 조건이면 다음으로 넘어갔지만,

break는 특정 조건이 되면 반복문을 탈출해버린다.

예를 들어, 한 마트에 초콜렛이 있다고 해보자.

초콜렛의 재고가 남아있다면, 계속 판매를 할 수 있지만, 재고가 떨어졌다면 판매를 중지해야 한다.

이를 구현해보면 다음과 같다.

>>> chocolate = 10
>>> while True:
...    if chocolate == 0:
...        break
...    chocolate -= 1
...    print("남은 초콜릿 갯수:", chocolate)
...
남은 초콜릿 갯수: 10
남은 초콜릿 갯수: 9
남은 초콜릿 갯수: 8
남은 초콜릿 갯수: 7
남은 초콜릿 갯수: 6
남은 초콜릿 갯수: 5
남은 초콜릿 갯수: 4
남은 초콜릿 갯수: 3
남은 초콜릿 갯수: 2
남은 초콜릿 갯수: 1
남은 초콜릿 갯수: 0

 

728x90

댓글