Chapter 4. 파이썬의 제어문
section6. 반복문 while
응용예제1
정수를 입력받아서 그 횟수만큼 'Hello'를 출력하는 프로그램을 구현하세요.
0 이하의 값이 입력되면 '잘못된 입력입니다'라는 오류 메시지를 출력하세요
<실행 예>
정수를 입력하세요 >>> 5
1번째 Hello
2번째 Hello
3번째 Hello
4번째 Hello
5번째 Hello
===================
정수를 입력하세요 >>> -5
잘못된 입력입니다.
i = int(input('정수를 입력하세요.')) j = 1 if i>0: while j <= i: print('{}번째 Hello'.format(i)) j += 1 else: print('잘못된 입력입니다.') |
응용예제2
1부터 100 사이의 모든 정수 중에서 7의 배수만 출력하는 프로그램을 구현하세요.
<실행 예>
7
14
21
28
35
...
84
91
98
i = 1 while i <= 100: if i % 7 == 0: print(i) i +=1 |
응용예제3
커피 1잔을 300원에 판매하는 커피자판기가 있습니다.
이 커피자판기에 돈을 넣으면 자판기에서 뽑을 수 있는 커피가 몇 잔이며
잔돈은 얼마인지를 함께 출력하는 프로그램을 구현하세요.
<실행 예>
자판기에 얼마를 넣을까요? >>> 1400
커피 1잔, 잔돈 1100원
커피 2잔, 잔돈 800원
커피 3잔, 잔돈 500원
커피 4잔, 잔돈 200원
i = int(input('자판기에 얼마를 넣을까요?')) count = 0 while i >= 300: count += 1 i -= 300 print('커피 {}잔, 잔돈 {}원.'.format(count, i)) |
응용예제4
사용자로부터 0부터 9사이의 정수를 입력받습니다.
이 때 입력된 정수가 5개가 될 때까지 입력받는 프로그램을 구현하세요.
이 때 중복된 값이 입력되면 해당 입력은 무시하세요.
<실행 예>
0 ~ 9 사이 정수를 입력하세요 >>> 0
0 ~ 9 사이 정수를 입력하세요 >>> 0
0 ~ 9 사이 정수를 입력하세요 >>> 0
0 ~ 9 사이 정수를 입력하세요 >>> 1
0 ~ 9 사이 정수를 입력하세요 >>> 2
0 ~ 9 사이 정수를 입력하세요 >>> 5
0 ~ 9 사이 정수를 입력하세요 >>> 3
모두 입력되었습니다.
입력된 값은 {0, 1, 2, 3, 5} 입니다.
count = 0 numbers = [] while count <5: num = int(input('0~9사이의 정수를 입력하세요')) if num >= 0 and num <= 9: count += 1 numbers.append(num) else: print('잘못 입력했습니다.') print('모두 입력되었습니다. 입력된 값은 {}입니다.'.format(numbers)) |
응용예제5
1부터 100 사이의 모든 정수를 한 줄에 10개씩 출력하는 프로그램을 구현하세요.
<실행 예>
1 2 3 4 ... 8 9 10
11 12 13 14 ... 18 19 20
....
91 92 93 94 ... 98 99 100
number = 1 while number <= 100: print(number, end=" ") if number % 10 == 0: print() number += 1 |
응용예제6
전체 구구단을 다음과 같은 모습으로 출력하는 프로그램을 구현하세요.
<실행 예>
2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9
2*2=4 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
...
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
i = 2 while i <= 9: j = 1 while j <= 9: print('{}X{}={}'.format(i, j, i*j), end= " ") j += 1 print() i += 1 |
section7. 반복문 for
응용예제1
1부터 5 사이에 존재하는 모든 정수를 역순으로 출력하는 프로그램을 구현하세요.
<실행 예>
5
4
3
2
1
for i in range(5,0,-1): print(i) |
응용예제2
사용자로부터 임의의 양의 정수를 하나 입력받은 뒤 1부터 입력받은 정수까지 모든 정수의 합계를 출력하는 프로그램을 구현하세요.
<실행 예>
임의의 양수를 입력하세요 >>> 5
1부터 5 사이 모든 정수의 합계는 15입니다.
i = int(input('임의의 양수를 입력하세요')) if i > 0: total = 0 for j in range(1, i+1): total += j print('1부터 {} 사이 모든 정수의 합계는 {}입니다.'.format(i, total)) |
응용예제3
사용자로부터 임의의 양의 정수를 하나 입력받은 뒤 그 숫자만큼 '과일이름'을 입력받아 'basket'리스트에
저장하는 프로그램을 구현하세요.
<실행 예>
몇 개의 과일을 보관할까요? >>> 5
1번째 과일을 입력하세요 >>> 사과
2번째 과일을 입력하세요 >>> 바나나
3번째 과일을 입력하세요 >>> 체리
4번째 과일을 입력하세요 >>> 오렌지
5번째 과일을 입력하세요 >>> 망고
입력받은 과일들은 ['사과', '바나나', '체리', '오렌지', '망고']입니다.
num = int(input('몇 개의 과일을 보관할까요?')) list = [ ] for i in range(1, num+1): fruit = input('{}번째 과일을 입력하세요.'.format(i)) list.append(fruit) print('입력받은 과일들은{}입니다.'.format(list)) |
응용예제4
중간고사 성적이 발표되었습니다.
한 반에 총 10명의 학생이 있고, 각 학생의 국어점수를 번호순으로 나열하면 다음과 같습니다.
exam = [99, 78, 100, 91, 81, 85, 54, 100, 71, 50]
100점을 받은 학생의 점수를 제외한 나머지 학생들의 점수를 5점씩 증가시킨 'score'리스트를 생성하고
출력하는 프로그램을 구현하세요. 단, 증가된 점수가 100점이 초과하지 않도록 처리하세요.
<실행 예>
[100, 83, 100, 96, 86, 90, 59, 100, 76, 55]
exam = [99, 78, 100, 91, 81, 85, 54, 100, 71, 50] exam_mod = [] for i in exam: i = i+5 exam_mod.append(i) score = [ ] for j in exam_mod: if j >= 100: j = 100 score.append(j) print(score) |
응용예제5
1부터 99사이의 모든 정수를 대상으로 369게임의 결과를 출력하는 프로그램을 구현하세요.
<실행 예>
1 2 짝 4 5 짝 7 8 짝 10
....
81 82 짝 84 85 짝 87 88 짝 짝
짝 짝 짝짝 짝 짝 짝짝 짝 짝 짝짝
for i in range(0,10): print() for j in range(1,11): if str(33) in str(i*10+j) or str(36) in str(i*10+j) or str(39) in str(i*10+j) or str(63) in str(i*10+j) or str(66) in str(i*10+j) or str(69) in str(i*10+j) or str(93) in str(i*10+j) or str(96) in str(i*10+j) or str(99) in str(i*10+j): print("짝짝", end=" ") elif str(3) in str(i*10+j) or str(6) in str(i*10+j) or str(9) in str(i*10+j): print("짝", end=" ") else: print(i*10+j, end=" ") |
section8. 기타 제어문
기본예제4
다음은 사용자로부터 5개의 양의 정수를 입력받아 그 합계를 구하는 프로그램입니다.
만약 0 이하의 값이 입력되면 사용자에게 재입력을 요구합니다.
count = 1 total = 0 while count <= 5: n = int(input('{}번째 정수를 입력하세요.'.format(count))) if n <= 0: print('재입력하세요') continue total += n count += 1 print('입력된 5개 양수의 합은 {}입니다.'.format(total)) |
응용예제1
현재 10000원을 가지고 있음. 얼마를 사용할 것인지 반복해서 입력받아 10000원을 모두 사용하세요.
0 이하의 금액은 사용할 수 없으며, 현재 가지고 있는 돈보다 더 큰 금액도 사용할 수 없습니다.
<실행 예>
현재 10000원이 있습니다.
사용할 금액 입력 >>> 5000
현재 5000원이 있습니다.
사용할 금액 입력 >>> -5000
0 이하의 금액은 사용할 수 없습니다.
현재 5000원이 있습니다.
사용할 금액 입력 >>> 6000
1000원이 부족합니다.
현재 5000원이 있습니다.
사용할 금액 입력 >>> 4000
현재 1000원이 있습니다.
사용할 금액 입력 >>> 1000
현재 0원이 있습니다.
money = 10000 while True: use = int(input('사용할 금액을 입력하세요.')) if use <= 0: print('0이하의 금액은 사용할 수 없습니다') continue if use > money: print('현재 갖고 있는 금액보다 더 큰 금액을 사용할 수 없습니다.') continue money -= use if money == 0: print('현재 0원이 있습니다.') break print('남은 잔액:{}'.format(money)) |
응용예제2
영화 평점을 1부터 5 사이의 정수로 입력받아 해당 평점만큼 ★을 표시하는 프로그램을 구현하세요.
표시할 수 있는 범위를 벗어나면 재입력을 요구하세요.
<실행 예>
이번 영화의 평점을 입력하세요 >>> 10
평점은 1~5 사이만 입력할 수 있습니다.
이번 영화의 평점을 입력하세요 >>> -2
평점은 1~5 사이만 입력할 수 있습니다.
이번 영화의 평점을 입력하세요 >>> 5
평점: ★★★★★
while True: score = int(input('이번 영화의 평점을 입력하세요.')) if score >= 1 and score <= 5: print("★"*score) break else: print("평점은 1~5 사이만 입력할 수 있습니다.") |
응용예제3
저장된 비밀번호를 맞히는 프로그램을 구현하세요.
저장된 비밀번호는 'qwerty'이며, 최대 5번 시도할 수 있습니다.
5번 이내에 비밀번호를 맞히면 '비밀번호를 맞췄습니다'를 출력하고,
그렇지 않으면 '비밀번호 입력 횟수를 초과했습니다'를 입력하세요.
<실행 예>
비밀번호를 입력하세요 >>> 123456
비밀번호를 입력하세요 >>> asdfgh
비밀번호를 입력하세요 >>> qwerty
비밀번호를 맞혔습니다.
==============================
비밀번호를 입력하세요 >>> 123456
비밀번호를 입력하세요 >>> asdfgh
비밀번호를 입력하세요 >>> zxcvbn
비밀번호를 입력하세요 >>> 098765
비밀번호를 입력하세요 >>> poiuyt
비밀번호 입력 횟수를 초과했습니다.
password = "qwerty" count = 5 while True: write = input('비밀번호를 입력하세요.') if write == password: print("비밀번호를 맞혔습니다.") break elif count == 1: print('비밀번호 입력횟수를 초과했습니다.') break else: "비밀번호를 입력하세요" count -= 1 |
응용예제4
다음 조건을 만족하는 구구단을 출력하세요
1. 짝수인 단(2,4,6,8단)은 출력하지 말고 blank line만 추가하세요.
2. 각 단까지만 출력하세요. 예를 들어, 3단은 3*3까지만 출력하고, 5단은 5*5까지만 출력하세요.
<실행 예>
3*1=3
3*2=6
3*3=9
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
...
for i in range(1,10,2): for j in range(1,i+1): print('{}*{}={}'.format(i, j, i*j), end=" ") |