반복문
- if, elif, else는 조건에 따라 선택적으로 구문을 실행하지만, 위에서 아래로 코드를 실행 (즉, 앞에서 실행 했던 코드를 다시 실행하지 못함)
- 같은 코드를 여러 번 반복해서 실행할 경우, 반복문을 사용
- while구문
- for in 구문
while
while문은 파이썬에서 가장 간단한 반복 구문
while문의 구조
while <조건식>:
문장1
문장2
...
문장n
while 실습 예제
예제1) 사용자가 양의 정수 N을 입력하면 1~N까지 숫자를 출력하는 프로그램을 작성하라.
n = int(input("정수를 입력하세요: "))
i = 1
while i<=n:
print(i)
i = i + 1
예제2) 위 예제 1은 음수를 입력하면 문제가 발생한다. 음수를 입력하면 '잘못된 입력' 이라고 출력하고 프로그램을 종료하도록 업그레이드 하여라.
import sys
n = int(input("정수를 입력하세요: "))
i = 1
if n <= 0:
print('잘못 입력하였습니다')
sys.exit()
while i<=n:
print(i)
i = i + 1
for in
다음과 같은 리스트의 요소들을 하나씩 출력하는 프로그램을 while문으로 작성하는 경우
fruits = ['apple' , 'orange', 'grape', 'pineapple']
index = 0
while index < len(fruits):
print(fruits[index])
index += 1
파이썬에서 시퀸스 구조 등 순회 가능한 iterable 객체의 요소를 반복적으로 처리할 경우 for in 구문을 많이 사용
for fruit in fruits:
print(fruit)
for in 구문의 구조
for item in <순회 가능한 객체>:
문장1
문장2
...
문장N
순회 가능한 객체에서 요소를 하나씩 가져와 문장1 ~문장N을 실행하며, 더 이상 가져올 요소가 없을 때까지 반복한다.
for in 실습 예제
다음 코드들을 실행해 보자
ex
d = {'apple': '사과', 'orange': '오렌지', 'grape':'포도'}
for k in d:
print(k)
print('\n')
for v in d.values():
print(v)
print('\n')
for item in d.items():
print(item)
print('\n')
for k, v in d.items():
print(k,v)
apple
orange
grape
사과
오렌지
포도
('apple', '사과')
('orange', '오렌지')
('grape', '포도')
apple 사과
orange 오렌지
grape 포도
zip(), range()
zip()
- 여러 시퀸스를 병합한 순회 가능한 객체를 생성
- 가장 짧은 시퀸스를 기준으로 병합
- ex
names = ['홍길동', '임꺽정', '유관순']
ages = [19, 30, 25, 100]
genders = ['남', '남', '여']
for name, age, gender in zip(names, ages, genders):
print('이름:', name, '나이:', age, '성별:' , gender)
이름: 홍길동 나이: 19 성별: 남
이름: 임꺽정 나이: 30 성별: 남
이름: 유관순 나이: 25 성별: 여
range()
- range([start, ]stop[,step])의 형태로 사용
- start와 step은 생략 가능하고, stop은 반드시 입력해야 함
- start를 생략할 경우 기본값은 0
- step을 생략할 경우 기본값은 1
- 슬라이스와 유사: start에서 stop보다 작은 수까지의 수를 step 만큼씩 증가시켜가면서 수를 생성하는 순회 가능한 객체 생성
- 예1) range(10): 0~9까지의 정수를 생성
- 예2) range(1, 11): 1~10까지의 정수 생성
- 예3) range(1, 11, 2): 1, 3, 5, 7, 9를 순서대로 생성
break, continue
break
반복문에서 brak문이 실행되면 반복이 중단되고 해당 반복문 다음 코드를 실행
continue
반복문에서 continue문이 실행되면 continue문의 다음 문장이 실행되지 않고 반복문의 처음으로 돌아가 실행
반복문에서의 else
- 반복문 내에서 brak 구문을 사용했을 때, break 구문이 한 번도 실행되지 않았을 경우 반복문과 쌍을 이루는 else구문이 실행
- 쉽게 말해, break 구문의 실행 여부를 체크하는 구문
예제
break 사용 예제) 사용자로부터 문자열을 입력받아 이를 대문자로 바꿔 출력하는 프로그램을 작성하되, q가 입력될 때까지 반복해서 실행하라.
while True:
s = input('입력: ')
if s == 'q':
break
print(s.upper())
continue 사용예제) 1~100사이의 짝수만 출력하는 프로그램을 작성해라.
for n in range(2, 101, 2):
print(n)
Problems
양의 정수 N을 입력받아 N의 약수를 출력하는 프로그램을 작성하시오
(HINT) 1~N까지의 수를 하나씩 순회하면서 순회하는 수 i가 N을 나누어 나머지가 0 일 때, i는 N의 약수이다. 즉, N % i == 0일 때, i는 N의 약수
n = int(input('정수를 입력하시오: '))
i = 1
while i<=n:
if n % i == 0:
print(i)
i += 1
숫자 맞추기 게임) 1~100 사이의 임의의 수를 생성하고, 사용자가 생성된 숫자를 맞추는 프로그램을 작성하라.
(게임규칙)예를 들어 무작위로 생성된 수가 77이라고 가정했을 때, 플레이어가 처음에 40을 입력하면 77은 40보다 크므로, '더 큰수 입니다' 라고 출력, 다시 90을 입력하면 '더 작은 수 입니다' 라고 출력하면서 플레이어가 맞춰야 할 숫자의 범위를 좁혀 가서 맞출 수 있도록 한다. 최종적으로 77을 입력하면 '맞췄습니다'라고 출력하고 프로그램 종료.
import random
computer_random_number = random.randint(1,100)
while True:
user_input_number = int(input('숫자를 입력하세요: '))
if computer_random_number > user_input_number:
print('더 큰 수 입니다')
continue
elif computer_random_number < user_input_number:
print('더 작은 수 입니다')
continue
elif computer_random_number == user_input_number:
print('맞췄습니다!')
break
Summary
- 반복문은 같은 코드를 여러 번 실행할 수 있게 해주며, while 구문과 for in 구문이 있다.
- while 구문은 조건식이 참인 동안 while 구문 안의 문장을 반복해서 실행한다.
- for in 구문은 순회 가능한 객체에서 요소를 하나씩 가져오면서 구문 안의 문장을 반복해서 실행하며 더 이상 가져올 요소가 없을 때 반복을 끝낸다.
- zip() 함수는 두 개 이상의 순회 가능한 객체를 튜플로 병합한 순회 가능한 객체를 생성하며, range() 함수는 특정 범위의 숫자를 순회할 수 있는 객체를 생성한다.
- break 구문은 반복문의 실행을 중지하는 구문이며, continue는 다음 코드의 반복을 건너뛰어 다시 반복문의 처음부터 실행하게 하는 구문이다.
'Language > Python' 카테고리의 다른 글
[Python] Ch5 - 함수 (0) | 2021.04.24 |
---|---|
[Python] Ch4 - part 3. 컴프리헨션 (0) | 2021.04.07 |
[Python] Ch4 - part 1. 조건문 (0) | 2021.03.28 |
[Python] Ch3 - part 3. 셋 (0) | 2021.03.27 |
[Python] Ch3 - part 2. 딕셔너리 (0) | 2021.03.26 |