while 반복문은 일단 for 와 다른점은 반복 횟수가 정해지지 않았다는 점?
무슨 말이냐면
예를 들어서 우리가 주사위를 던지는데 3이 나올때 까지 던지기로 했다고 하자
import random
i = 0
while i !=3:
i = random.randint(1,6)
print(i)
다음과 같은 코드를 짰을때 i !=3 i가 3이나오지 않을때 계속 반복하다 즉 3이 나오면 반복을 끝낸다
출력하면 몇 번째에 3이 나올지는 미지수이다.
여튼 간략한 이야기였고 간단한 문제를 풀어보자
<문제1. >
표준 입력으로 금액(정수)이 입력됩니다. 1회당 요금은 1,350원이고, 교통카드를 사용했을 때마다의 잔액을 각 줄에 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 최초 금액은 출력하지 않아야 합니다. 그리고 잔액은 음수가 될 수 없으며 잔액이 부족하면 출력을 끝냅니다.
예
입력
10000
결과
8650
7300
5950
4600
3250
1900
550
입력
13500
결과
12150
10800
9450
8100
6750
5400
4050
2700
1350
0
a = int(input())
i=1
while i*1350<=a:
print(a-i*1350)
i+=1
일단 입력되는 숫자를 받아야하니까 a=int(input())
반복문에는 1회당 1350원씩 금액이 삭감되는데 삭감 후 금액이 음수가 되면 안되니까 i1350<=a
출력되는 숫자는 a-i1350
반복 횟수 i 는 1씩 증가 i +=1
<문제2.>
표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~200, 두 번째 입력 값의 범위는 10~200이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 다음 소스 코드를 완성하여 첫 번째 정수와 두 번째 정수 사이의 숫자 중 3으로 끝나지 않는 숫자가 출력되게 만드세요. 정답에 코드를 작성할 때는 while True:에 맞춰서 들여쓰기를 해주세요.
예
입력
1 20
결과
1 2 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20
입력
21 33
결과
21 22 24 25 26 27 28 29 30 31 32
start, stop = map(int, input().split())
i = start
while True:
for i in range(i, stop+1):
if i%10 ==3:
continue
if ((stop+1)-i)<=0:
break
print(i, end=' ')
i+=1
일단 내 생각으로는 i 가 stop 까지 반복해야하니까 for range 써주고
그 아래 if i%10 ==3 일때 continue i stop+1 보다 클때 break 써주고
잘했다고 생각했는데 멍청했다 ㅋㅋ
start, stop = map(int, input().split())
i = start
while True:
if i%10 ==3:
i +=1
continue
if i>stop:
break
print(i, end=' ')
i+=1
어짜피 if 문에 i>stop 일때 break 걸어줬으니 range 조건 필요없고
while i+=1 로 i 1씩 증가 시키면서 반복문 실행되니까
굳이 위의 for i in range(1, stop+1) 은 불필요한 문장이었다