어떤 동작을 반복해야 할 때, 코드의 간결함 등을 위하여 많이 사용
for문은 반복 횟수가 정해진 경우, 즉 복권을 몇 번이 당첨되든 50번 사야하는 상황 등에서 유리
while문은 몇 번 수행해야할지는 모르더라도 특정 조건이 만족될 때까지 수행해야 하는 경우, 예를 들면 복권을 몇 번 사든 당첨될때까지 사야하는 상황 등에 유리
while문 내부에 while문을 중첩시키는 것도 가능하며, while문과 for문을 중첩하여 혼합 사용하는 것도 가능
import random
win = 0
while win == 0:
print('복권을 사겠습니다.')
seed = random.random() # 0 ~ 1 사이의 랜덤 숫자
if seed <= 0.1:
print('축하합니다. 당첨입니다!')
win = 1
else:
print('아쉽네요! 꽝입니다.')
num = 0
while True:
if num >= 6:
break
num += 1
if num % 2 == 0:
continue
print('숫자를 셉니다!', num)
위 코드의 실행 결과:
숫자를 셉니다! 1
숫자를 셉니다! 3
숫자를 셉니다! 5
우선, num이 홀수이면 while 문의 맨 아래에 있는 print가 무사히 실행됨
num이 짝수라면 if문의 continue를 만나 print를 실행하지 못하고, while 문의 맨 위로 올라감
num이 6이 되었을 때는, if문의 break를 만나 반복문 종료
while True:
num = input('''
무엇을 주문하시겠습니까?
1. 콜라
2. 사이다
3. 환타
4. 생수
5. 제로콜라
종료를 원하시면 6을 입력해주세요. ''')
if num == '1':
print('콜라 입니다.')
# ...
elif num == '6':
print('프로그램을 종료합니다.')
break
cnt = 0
sum = 0
# range(10) == 0, 1, 2, …, 9
for i in range(10):
cnt += 1
sum += i
print(cnt) # 10
print(sum) # 45 → 0+1+2+3+4+5+6+7+8+9
cnt = 0
sum = 0
list_a = [1, 3, 5]
# i가 1, 3, 5로 바뀌면서 실행
for i in list_a:
cnt += 1
sum += i
print(cnt) # 3
print(sum) # 9 → 1+3+5
cnt = 0
sum = 0
dict_a = {'a' : 1, 'b' : 2}
# dict_a의 value들의 모임인 1, 2에 대해서 실행
for val in dict_a.values():
cnt += 1
sum += val
print(cnt) # 2
print(sum) # 3 → 1+2
sum_i = 0
sum_j = 0
list_a = [1, 3, 5, 7]
# i는 0, 1, 2, 3으로 몇 번째인지를 나타내며 순회, j는 리스트 내 요소 순회
for i, j in enumerate(list_a):
sum_i += i
sum_j += j
print(sum_i) # 6 → 0+1+2+3
print(sum_j) # 16 → 1+3+5+7
cnt = 0
sum = 0
list_a = [1, 2, 3, 6, 10]
# i가 1, 2일 때는 정상 수행
# i가 3일 때는 continue를 만나 바로 6으로 진행
# i가 6이면 for문 순회가 멈추고 10은 미진행
for i in list_a:
if i == 3:
continue
cnt += 1
sum += i
if i == 6:
break
print(cnt) # 3 → i가 1, 2, 6일 때 실행
print(sum) # 9 → 1 + 2 + 6
for i in range(2, 10):
for j in range(2, 10):
print(i, 'x', j, '=', i * j)
print('-' * 10)