[Python]자료구조: 반복문
반복문
특정 실행 반복
반복문을 사용하는 이유:
프로그래밍이 간결, 유지보수 용이-> 효율적.
횟수에 의한 반복
정해놓은 반복 횟수에 따라 반복 실행
횟수에 의한 반복은 주로 for문 사용
횟수 지정-> 횟수만큼 반복 실행 (range,len 등)
대량 메일 또는 문자 발송, 인사말 반복, mp3 반복 재생.
#문자열 반복문 , 횟수 증가 'Hello Python! loop' * 5
for h in range(5):
print('Hello Python!', end = '')
print('loop')
구구단 for문
for i in range(1,10):
result = 5 * i
print(‘{}x{}={}’.format(5,i,result))
pass
나중에 코딩
for k in range(100):
pass
코드블록, 들여쓰기
반복문/조건문 작성 시, 들여쓰기, 코드블록(코드블록이 상위개념.) 를 통해 for문/조건식 코드를 인식
조건에 의한 반복
조건 지정 -> 조건에 만족할 때까지 반복 실행. while문
반복 범위 설정(range()함수)
for i in range(0,11,2) -> 0부터 10까지 2씩 증가하면서 반복
시작 매개변수 생략: 시작이 0인 경우 생략 가능함. 0부터 10까지 1씩 증가(암묵적)
#n1~n2사이에서 2씩 증가하는 반복문
n1 = int(input())
n2 = int(input())
for i in range(n1,n2+1):
print(i)
조건에 의한 반복
조건에 만족하면 반복 실행. 그렇지 않으면 중단.
조건에 의한 반복은 주로 while문 사용.
매일 아침 기상알람, 타이머
n = 0
while n < 10:
print('Hello')
print('Python')
n += 1
#자연수 50 전까지 2의 배수 혹은 3의 배수 혹은 2와3의 배수도 아닌 수 판단.
n = 1
while n < 50:
if n % 2 == 0:
print('{}은 2의 배수이다'.format(n))
elif n % 3 == 0:
print('{}은 3의 배수이다'.format(n))
else:
print('{}은 2의 배수도, 3의 배수도 아니다'.format(n))
n += 1
endNum = 10
n = 0
while n <= endNum:
print(n)
n += 1
n = 1
while n < 10:
result = 5 * n
print('{} * {} = {}'.format(5,n,result))
n += 1
#while문을 이용해 사용자가 입력한 구구단 출력.
gugu = int(input())
n = 1
while n < 101:
result = gugu * n
print('')
sum = 0
n = 1
while n < 11:
n += 1 #(무한반복에 빠지지 않기위해 )
print('sum :{}'.format(sum))
while문이 적합한 경우
조건에 의한 반복은 while문이 더 적합.
for문은 횟수반복
#7의 배수 합 구하기
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
while n <=100 and sum <= 50:
n += 1
if n % 5 ==0:
sum += n
maxInt = n
print('n : {}')
round = 0
thick = 30
while thick >= 20:
round += 1
thick -= 0.15
rounds = rounds - 1
print('앞으로 구를 수 있는 횟수:{}'.format(rounds))
무한루프
무한 반복 실행: 반복문을 빠져나올 수 없는 경우
while문에서 조건식의 결과가 항상 True인 경우
n = 1
while n < 10:
print('HI~')
n +=1
논리형 데이터 사용
조건식에 논리형 데이터를 사용해서 무한 반복 실행
flag=True
n = 0
s = 0
while flag:
n += 1
s += n
print(n,',',s)
if s > 100:
flag = False
sum = 0
num = 0
while sum < 1000:
num += 1
sum += num
print ('{}까지의 수의 합은 {}입니다'.format(num,sum))
import random
sum = 0
date = 1
flag = True
while flag:
patientCount = random.randint(50,100)
sum += patientCount
date += 1
print ('날짜 : {}, 하루 환자 수: {}, 누적 환자 수: {}'.format(date,patientCount,sum))
if sum >= 10000:
flag = False
continue 키워드
반복 실행 중 continue 시 실행 생략, 다음 반복 실행문으로 넘어감.
for i in range(100):
if i % 2 == 0:
continue
print(i) #(2의 배수가 아닌 수)
else 키워드
else의 실행문은 반복문이 종료된 후 실행.
break 키워드
반복 실행 중 break 만나면 반복문 빠져나온다.
sum = 1
searchNum = 0
for i in range(1,11):
sum *= i
if sum > 50:
searchNum = i
break
print('sum: {}, searchNum: {}'.format(sum,searchNum))
중첩 반복문
반복문안에 또 다른 반복문 선언
for i in range(10,0,-1):
for j in range(i):
print('*', end='')
print()
for i in range(2,10):
for j in range(1,10):
result = i*j
print('{} * {} = {}'.format(i, j , result))
endNum = 10
n = 0
while n <= endNum:
print(n)
n += 1
n = 1
while n < 10:
result = 7 * n
print('{} * {} = {}'.format(7,n,result))
n += 1
중첩 반복문 주의사항
너무 많은 반복문을 중첩하는 것은 코드를 보기 어렵고, 다량 연산으로 시스템 과부화가 걸릴 수 있기에 주의해야 한다.
(2개 적절.)