마케팅/파이썬

파이썬 기초 5. 반복문, for- in range, while, break, continue

내이름은뭘까 2023. 5. 26. 03:23

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)