스터디/파이썬 스터디 강의자료

[4팀/김민혜] 4차시 파이썬 스터디 - 반복문

알 수 없는 사용자 2023. 4. 5. 11:59

4차시_반복문_해답.pdf
0.13MB
4차시_반복문_강의안.pdf
0.39MB
4차시_반복문_과제.pdf
0.24MB

1. 반복문 loop


개념

DEF) 문장을 반복하도록 만드는 것. 정해진 동작을 반복적으로 수행할 때 사용하는 명령어

  • 일상에서의 예
    • 학생 100명의 성적 산출
    • 쇼핑몰에서 상품 추천 ← 사용자의 상품 구매 특징 vs 다른 상품 간의 특징
    • MS워드에서 단어 바꾸기 명령 실행 ← 바꾸고자 하는 단어와 각 단어의 비교를 통한 전체 단어에 적용
  • 구성 요소: 반복 시작 조건, 종료 조건, 수행 명령
  • for, while이라는 명령 키워드 사용

 

2. 명령어


for문

DEF) 가장 기본적인 반복문으로, 반복 범위를 지정하여 반복을 수행

  • for를 입력하고 반복되는 범위의 지정 필요
for looper in [1,2,3,4,5]:
		print("hello")
hello
hello
hello
hello
hello

*리스트에 있는 각각의 값을 하나씩 가져와 looper라는 변수에 할당.

*한 번 할당할 때마다 다음 줄의 print(”hello”)를 실행 → 총 5번의 반복

  • 변수 자체를 출력하는 경우
for looper in [1,2,3,4,5]
		print(looper)
1
2
3
4
5
  • 만일 100번을 반복해야 한다면? range 키워드 사용
for looper in range(100):
		print("hello")
hello      #100번 반복
.
.
hello
  • 이 코드에서 looper 변수에는 0~99까지의 값, 총 100개의 값이 들어감. (리스트의 인덱싱 문법과 유사)
for 변수 in range(시작 번호, 마지막 번호, 증가값)
  • ‘시작 번호’와 ‘증가값’은 생략 가능 (자동으로 초기 시작 번호는 0, 증가값은 1)
  • ‘마지막 번호’에 입력한 숫자 바로 앞까지 리스트를 생성함.
    • range(1,5) → [1,2,3,4]
    • range(0,5) → [0,1,2,3,4]
  • 문자열 리스트의 경우
for i in 'abcdefg':
		print(i)
a
b
c
d
e
f
g
for i in ['americano','latte','frappuccino']:
		print(i)
americano
latte
frappuccino

 

❗- 반복문의 변수는 대부분 i, j, k로 지정

    - 반복문은 대부분 0부터 반복을 시작

    - 반복문을 잘못 작성하면 무한 루프라고 하는 오류 발생

 

  • 변형: 증가값 지정
for i in range(1, 10, 2):     #1부터 9까지 2씩 증가시키면서 반복문을 수행한다
		print(i)
1
3
5
7
9
for i in range(10, 1, -1):     #10부터 2까지 1씩 감소시키면서 반복문을 수행한다.
		print(i)
10
9
8
.
.
2

 

while문

DEF) 어떤 조건이 만족하는 동안 명령 블록을 수행하고, 해당 조건이 거짓일 경우 더이상 반복 명령문을 수행하지 않는 구문

i=1
while i<10:       #i가 10 미만일 때까지
		print(i)
		i += 1        #i에 1을 더하는 것을 반복하다가 i가 10이 되면 반복 종료
1
2
3
4
5
6
7
8
9

*i가 10이 되는 순간 = (i<10)이 False가 됨을 의미 ⇒ 반복문 종료

  • for문과 while문의 차이?
    • 기본적으로 유사하며 서로 변환이 가능. But, 쓰임에 차이가 있음
    • for문은 반복 횟수를 정확히 알고 있고, 반복 횟수가 변하지 않을 때 사용
    • while문은 반복 실행횟수가 명확하지 X, 어떤 조건 만족시 프로그램을 종료하고자 할 때 사용
    for i in range(0,5):
    		print(i)
    0
    1
    2
    3
    4
    
    *for문 예시) 반복 실행횟수를 명확히 알 때*while문 예시) 반복 실행 횟수가 불명확할 때
  • i=0 while i<5: print(i) i=i+1 0 1 2 3 4

 

3. 반복문의 제어


break문

DEF) 반복문에서 논리적으로 반복을 종료하는 방법

for i in range(10):
		if i==5: break         #i가 5가 되면 반복 종료
		print(i)
print("End of Program")    #반복 종료 후 'End of Program' 출력
0
1
2
3
4
End of Program

 

continue문

  • break문과 달리 특정 조건에서 남은 명령을 건너뛰고 다음 반복문 수행
for i in range(10):
		if i==5: continue     #i가 5가 되면 i를 출력하지 않음
		print(i)
print("End of Program")
0
1
2
3
4
6
7
8
9
End of Program

 

else문

DEF) 어떤 조건이 완전히 끝났을 때 한번 더 실행해주는 역할

  • 본래 반복문 수행이 끝나면 반복문을 빠져나와 다음 코드를 수행하기에 필요 없을 수 있음
  • 그러나 break 등으로 코드 종료시 else문이 수행되지 않으므로 해당 반복문이 중간에 종료 없이 완벽히 수행되었는지를 명시적으로 확인하기 위해 필요
for i in range(10):
		print(i)
else:
		print("End of Program")
0
1
2
3
4
5
6
7
8
9
End of Program

*continue문, break문, else문 모두 while문에서도 사용 가능

  • 앞서 설명한 제어 구문은 특히 긴 코드를 작성할 때는 사용하지 않길 권유
  • break문이나 continue문이 있다면 의도치 않게 코드가 오작동할 수도 있음.

 

실습


구구단 계산기

1) 프로그램 시작시 ‘구구단 몇 단을 계산할까?’가 출력됨
2) 사용자는 계산하고 싶은 구구단 단수 입력
3) 프로그램은 ‘구구단 n단을 계산한다.’라는 메세지와 함께 구구단의 결과를 출력

print("구구단 몇 단을 계산할까?")               #'구구단 몇 단을 계산할까?' 출력
user_input=input()                            #사용자가 입력한 값을 변수 user_input에 할당
print("구구단", user_input, "단을 계산한다.")   #몇 단을 계산할지 출력
int_input = int(user_input)                   #사용자에게 입력받은 단수를 정수형으로 변환
for i in range(1,10):
		result = int_input * i                    #단수에 차례로 1부터 9까지를 곱한 것이 결과값이 됨
		print(user_input, "x", i, "=", result)    #'사용자 입력값(문자열) X 1~9 = 결과값'을 텍스트로 출력