2) 반복문 사용 이유
print('{} * {} = {}'.format(3, 1, (3 * 1)))
print('{} * {} = {}'.format(3, 2, (3 * 2)))
print('{} * {} = {}'.format(3, 3, (3 * 3)))
print('{} * {} = {}'.format(3, 4, (3 * 4)))
print('{} * {} = {}'.format(3, 5, (3 * 5)))
for i in range (1, 6):
print('{} * {} = {}'.format(3, i, (3 * i)))
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
for ~ in 키워드 반복 횟수: 실행문
# 회원 100명에게 메일 발송
for 1 in range(100): #0 ~ 99까지 100번 반복
print('i -> {}'.format(i))
(2) range() 함수
range (시작, 끝, 단계)
예) for i in range(1, 11, 1): 1부터 10까지 1씩 증가
for i in range(5, 10, 2): 5부터 9까지 2씩 증가
3) 조건에 의한 반복
4) 문법 구조
(1) while문
while 조건식:
실행문 >> 조건이 false가 되는 경우를 명시해야 함. 그렇지 않으면 무한 반복문이 되어 프로그램에 약영향을 줄 수 있음
#실내온도 26도까지 에어컨 작동
num = 0
while (num < 10):
print('num -> '}.format(num))
num + 1
5) for문 vs while문
1) for문이 적합한 경우
sum = 0
for i in range(1, 11):
sum += i
print('sum = {}'.format(sum))
sum = 0
n = 1
while n < 11:
sum += n
n += 1
sum = 55
sum = 55
2) while문이 적합한 경우
sum = 0
maxInt = 0
for i in range(1,101):
if i % 7 ==0 and sum <= 50:
sum += i
maxInt = i
print('i : {}'.format(i))
print('7의 배수의 합이 50이 상인 최초의 정수 : {}'.format(maxInt))
sum = 0
maxInt = 0
n = 1
while n <= 100 and sum <= 50:
n += 1
if n % 7 == 0:
sum += n
maxInt = n
print('n: {}'.format(n))
print('7의 배수의 합이 50이 상인 최초의 정수 : {}'.format(maxInt))
i : 1
i : 2
i : 3
...
i : 98
i : 99
i : 100
7의 배수의 합이 50이 상인 최초의 정수 : 28
i : 1
i : 2
i : 3
...
n: 26
n: 27
n: 28
7의 배수의 합이 50이상인 최초의 정수 : 28 >> while문을 사용했을 때 불필요한 반복 수행을 하지 않고 바로 결과를 출력함
#무한루프
n = 1
while n < 10:
print('Hello')
#9번만 실행
n = 1
while n < 10:
print('Hello')
n +=1 #n이 10이 되는 순간 조건식이 False가 되어 반복 실행 중단.
2) 조건식에서 논리형 데이터를 사용하여 무한 반복을 실행하는 경우
flag = True
num = 0
sum = 0
while flag:
num += 1
sum += num
print("{}까지의 합은 {}입니다.'.format(num, sum))
#여기까지 무한루프 실행
if sum >= 1000:
flag = False #조건이 부정되어 실행 중단
for i in range(5):
print('Hello python')
Hello python
Hello python
Hello python
Hello python
Hello python
예제 2) 사용자가 입력한 숫자에 맞는 구구단을 출력하는 코드를 작성하자.
gugudanNum = int(input('숫자 입력: '))
for num in range(9):
result = gugudanNum * (num + 1)
print('{} * {} = {}'.format(gugudanNum, (num + 1), result))
숫자 입력: 3
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
예제 3) 사용자가 반복의 시작과 끝을 입력하면 1씩 증가하는 반복문을 만들어보자.
statNum = int(input('시작: '))
endNum = int(input('끝: '))
for i in range(statNum, (endNum + 1)):
print(i)
시작: 3
끝: 10
3
4
5
6
7
8
9
10
예제 4) 예제 3에서 작성한 반복문을 이용하여 2씩 증가하는 반복문을 만들어보자.
statNum = int(input('시작: '))
endNum = int(input('끝: '))
for i in range(statNum, (endNum + 1), 2):
print(i)
시작: 3
끝: 10
3
5
7
9
예제 5) 1부터 100까지의 정수 중 2의 배수와 3의 배수를 구분하여 출력하자. (while문 사용)
while n <= 100:
if n % 2 == 0:
print('{}은 2의 배수'.format(n))
if n % 3 == 0:
print('{}은 3의 배수'.format(n))
n += 1
2은 2의 배수
3은 3의 배수
4은 2의 배수
6은 2의 배수
6은 3의 배수
8은 2의 배수
9은 3의 배수
10은 2의 배수
12은 2의 배수
12은 3의 배수
...
예제 6) while 문을 이용해서 사용자가 입력한 구구단을 출력하자.
gugudanNum = int(input('숫자: '))
n = 1
while n <=9:
result = gugudanNum * n
print('{} * {} = {}'.format(gugudanNum, n, result))
n += 1
숫자: 3
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
예제 7) 다음 반복 실행을 위해서 for문과 while문 중 가장 적합한 구문을 이용해서 프로그램을 만들어보자.

currentThickness = 30
rotationCount = 0
removeThickness = 0.15
while currentThickness >= 20:
rotationCount += 1
currentThickness -= removeThickness
safeRotationCount = rotationCount - 1
>> 만약 현재 두께가 20.1 인 경우, 한 바퀴를 더 돌 경우 현재 두께가 최소 운행 가능 바퀴 두께가 20보다 작아지기 때문에 운행 가능 횟수는 굴린 횟수에서 1을 빼주어야 함
print('운행 가능 횟수: {}'.format(safeRotationCount))
운행 가능 횟수: 66
예제 8) 하루에 독감으로 병원에 내방하는 환자 수가 50명에서 100명 사이일 때, 누적 독감 환자 수가 최초로 10,000명을 넘는 날짜를 구해보자.
import random
sum = 0
date = 0
flag = True
while flag:
patientCount = random.randint(50, 100)
sum += patientCount
date += 1
print('날짜: {}, \t 오늘 환자 수: {}, \t 누적 환자 수: {}'.format(date, patientCount, sum))
if sum >= 10000:
flag = False
날짜: 1, 오늘 환자 수: 52, 누적 환자 수: 52
날짜: 2, 오늘 환자 수: 52, 누적 환자 수: 104
날짜: 3, 오늘 환자 수: 63, 누적 환자 수: 167
...
날짜: 133, 오늘 환자 수: 52, 누적 환자 수: 9949
날짜: 134, 오늘 환자 수: 50, 누적 환자 수: 9999
날짜: 135, 오늘 환자 수: 73, 누적 환자 수: 10072