5주차 수업 복습
반복과 반복문
반복의 종류
1. 계수 반복 (counting loop) : 정해진 횟수만큼 반복하는 것, 주로 for문을 사용
2. 조건 반복 (conditional loop) : 어떤 조건이 만족될까지 반복하는 것, 주로 while문을 사용
3.루프: while,for문과 같은 반복을 위한 문장
반복을 위한 자료구조 시퀸스
시퀸스: 여러 원소들을 모아놓은 순서형 자료 (문자열,리스트,튜플)
for문
시퀸스 내의 각 원소에 대해서 실행문을 반복
>>> sum=0
>>> for x in [1,2,3,4,5]:
sum=sum+x
>>> print(sum)
15
>>> for x in "chicken":
print(x)
c
h
i
c
k
e
n
시퀸스 자료에는 꼭 정수 리스트만 있는 것이 아니라, 문자열도 가능하다!
정수 범위를 이용한 for 문:
range(N)은 0부터 N-1까지의 정수 범위를 나타냄.
range(M,N)은 M부터 N-1까지의 정수 범위를 나타냄
range(M,N,K)는 M부터 시작해서 K만큼 증가하여 N-1까지의 정수로 이루어진 범위
sum=0
N=int(input("N을 입력하시오: "))
for count in range(1,N+1):
sum=sum+count
print("합계:",sum)
적금예제
balance=0
amount=30000
rate=0.002
for month in range(1,37):
balance=balance*(1+rate)
balance=balance+amount
print("%2d 개월 입금, 현재 금액: %10.2f 원" %(month,balance))
화씨->섭씨 예제
for fahr in range(0,101,10):
celsius=(fahr-32)*5/9
print(fahr,"F=%.1f"%celsius,"C")
while문
반복 횟수를 미리 알기 어려운 경우
입력을 받아 입력에 따라 반복하는 경우
주어진 limit 값에 대해서 특정 조건을 만족하는 N의 최소값을 계산할 경우
에 주로 while 반복문을 사용함.
while문은 조건식이 참인 동안 실행문을 반복하여 실행.
count=1
sum=0
limit=1000
while sum<=limit:
sum=sum+count
count=count+1
print("1부터",count,"까지의 합계는 ",sum)
1부터 46 까지의 합계는 1035
for문을 while문으로 표현
for 변수 in range(M,N,K):
실행문
=
변수=M
while 변수<N:
실행문
변수=변수+K
무한루프 (infinite loop)
루프 본체가 무한히 반복해서 실행되는 상황.
ex. 실수로 1씩 감소하는 경우, 절대 조건이 만족될 수 없는 경우.
break/continue
break: 루프 내에서 어떤 조건이 만족되면 중간에 루프에서 빠져나오는데 사용함.
continue: 루프 내에서 현재 반복을 중단하고 다음 반복으로 건너뛰기.
list = [24.9, 29.3, 28.3, 29.9, 29.6, 32.5, 29.7, 26.3, 31.8, 34.3,
36.0, 28.0, 24.9, 31.4, 33.9, 28.9, 29.6, 24.8, 29.8, 31.2,
29.6, 31.7, 32.1, 24.4, 26.4, 30.0, 30.0, 31.2, 28.8, 33.1]
target=float(input("기준 온도: "))
for index in range(len(list)):
if list[index]>target:
break
if index<len(list)-1:
print("찾음: %d 일 %5.1f" %((index+1) , list[index]))
else:
print("찾지 못함")
기준 온도: 40
찾지 못함
기준 온도: 33
찾음: 10 일 34.3
for i in range(10):
if i%4==0:
continue
print(i)
1
2
3
5
6
7
9
continue 문을 이용해서 4의 배수를 제외한 수들을 출력하도록 할 수 있다!
중첩 루프
중첩 루프는 왜 필요할까요?
>>> for j in range(1,10):
print("2*",j,"=",2*j)
2* 1 = 2
2* 2 = 4
2* 3 = 6
2* 4 = 8
2* 5 = 10
2* 6 = 12
2* 7 = 14
2* 8 = 16
2* 9 = 18
2의 배수를 출력할 수 있네요~이 뿐만 아니라
구구단 출력도 가능하다는 사실!
(대충 흰 캐릭터가 엄지척하는 이모티콘)
>>> for i in range(1,10):
for j in range(1,10):
print(i,"*",j,"=",i*j)
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
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
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
for문의 중첩
for i in range(N):
for j in range(M):
실행문
#내부 실행문을 총 M*N번 반복해서 실행됨
물론 while문 중첩도 가능, 다른 반복문이 중첩되는 것도 가능함.
scores = [[80,90,85], [70,80,80], [90,90,95], [60,70,65], [90,80,75]]
stud = []
for lst in scores:
sum = 0
for score in lst:
sum += score
stud.append(sum)
print(stud)
리스트를 이용하여 학생들의 점수 합을 각각 출력하게 할 수 있다.
예제 연습....알아서 복습해야지
댓글