파이썬 기초 5. 반복문, for- in range, while, break, continue
1. 반복문이란?
반복문은 프로그램을 간결하게 만드는데 도움이 되며, 프로그래밍에서는 루프(loop)라고 함
-횟수 제어 반복문: 반복을 시작하기 전에 반복할 횟수를 미리 아는 경우
-조건 제어 반복문: 특정한 조건이 만족되는 동안 반복을 처리하는 경우
2. for 변수 in range(종료값):
-반복하려는 문장들은 들여쓰기를 반드시 해야하며, 조건에 맞으면 들여쓰기가 되어있는 문장이 반복되어 실행됨
-들여쓰기가 된 문장들을 블록(block)이라고 함
for 변수 in range(종료값):
print("반복할 문장")
3. range(start= 값1,stop,step=값2 ) 함수
-숫자를 생성하는 함수
range(5)=range(0,5,1) 같은 의미
-> 0부터 시작하여 1씩 증가하며 5가 되면 멈추라는 의미
예제1) 1부터 100까지 합을 구하는 프로그램
sum=0 #변수선언
for i in range(1,101):
sum +=i #값을 1씩 증가하며 반복
print("1부터 100까지의 합은",sum,"입니다.")
예제2) 팩토리얼 계산 프로그램
팩토리얼 n!은 1부터 n까지의 정수를 모두 곱한 것을 의미합니다.
n=int(input("정수를 입력하시오: "))
fact=1
for a in range(1,n+1):
fact=fact*a
print(n,"!은",fact,"이다.")
4. while 문
while은 루프라고도 하며, 조건 제어 반복문에 사용됨
response="아니"
while response=="아니":
response=input("엄마, 다됐어?");
print("먹자")
예제 2) 1부터 100까지 합을 구하는 프로그램
count=1 #count 변수는 1부터 시작하여 100까지 숫자정보를 가지고 있음
sum=0
while count<=100: #count변수 값이 100보다 작을때만 실행
sum=sum+count #반복 조건이 맞으면 현재 저장된 sum값에 count값을 추가함
count=count+1#count+=1과 같은 의미
print("1부터 100까지의 합은",sum,"입니다.")
예제3) 로그인 프로그램
조건 제어 루프를 사용하여 로그인 프로그램 만들기
password="" #처음 시작시에는 패스워드가 아무것도 없음으로 시작
while password!="sweetpotato": #암호와 일치하는 지 여부 판단
password=input("암호를 입력하시오:")
print("로그인 성공") #암호와 일치할 경우 노출
5.중첩 반복문
반복문 안에 다른 반복문을 넣는 것을 의미하며, for루프와 while루프를 중첩하여 사용할 수 있음
예제4) '*'을 이용하여 사각형 출력하기
for i in range(5): #5개의 사각형 줄 변수 I는 0부터 4까지 반복
for j in range(10): #한 줄에 '*'이 10개 이므로 j값은 0부터 9까지 반복
print("*",end="")#'*' 1개 출력 후 줄바꿈 하지 않음
print("") #10번 출력 후 줄바꿈
6. 무한 반복(infinite loop)
while 루프 조건은 'TRUE'이기 때문에 조건이 항상 참이므로 무한 반복
예제5) 무한반복을 이용한 시호등 프로그램
sign=True
while sign:
light=input("신호등 색상을 입력하시오")
if light=="blue":
sign=False
print("전진!")
7. break와 continue
특정 조건에서 반복을 끝내거나 해당 차례는 건너 뛰고 다음 차례로 반복문을 수행해야 할 때 사용
7-1.break
무한 반복을 탈출할 필요가 있을 경우 사용
while True:
light=input("신호등 색상을 입력하시오:")
if light=="blue":
break
print("전진!")
7-2. continue
특정 조건에서 반복의 나머지 부분을 건너뛰고 새롭게 다음 차례의 반복을 수행하고 싶은 경우 사용
예제6) 10까지의 수에서 홀수만 보여주고 싶을 때
for n in range(10):
if n%2==0:
continue
print(n)
예제7) 범인 찾기 게임
경찰에 쫒기던 범인이 3개의 방 중 한 곳에 숨었다. 범인은 방 문을 열 때마다 무작위로 3개의 방 중 하나의 방으로 이동을 한다고 할 때, 3개의 방 중 하나의 방을 선택했을 때, 범인이 없으면 -10, 범인은 다른 방으로 이동한다.
범인을 잡으면 기존의 점수에 +100을 한 후 게임은 종료된다.
<변수 설정>
-score : 게임 점수 저장
-room: 범인이 들어간 방 번호
-n: 사용자가 입력한 방 번호
import random
score=0
while True:
room=random.randint(1,3)
n=int(input("방 번호를 입력하세요 :"))
if n==room:
print("범인 체포!")
score+=100
break
elif n>3:
print("n번 방은 없습니다.")
else:
print("범인이 없습니다.")
score-=10
print("게임종료")
print("점수:",score, "점")
예제8) 숫자 맞추기 게임
컴퓨터가 1에서 100사이의 숫자를 무작위로 추출하고 그 숫자를 맞추는 게임 프로그램을 코딩
import random
tries=0 #게임 시도 횟수 저장
guess=0 #사용자가 입력한 수 저장
answer=random.randint(1,100) #사용자가 입력한 수 저장
print("1부터 100 사이의 숫자를 맞추시오")
guess=int(input("숫자를 입력하시오:"))
while guess!=answer:
tries+=1
if guess<answer:
print("낮음!")
elif guess>answer:
print("높음!")
guess=int(input("숫자를 입력하시오:"))
if guess==answer:
print("축하합니다. 시도횟수=", tries)