while 반복문으로 Hello, world! 100번 출력하기
https://dojang.io/mod/page/view.php?id=2247
while 반복문은 조건식으로만 동작하며 반복할 코드 안에 조건식에 영향을 주는 변화식이 들어간다.
i = 0 # 초기식
while i < 100: # while 조건식
print('Hello, world!') # 반복할 코드
i += 1 # 변화식
조건식
→ 반복할 코드 및 변화식
→ 조건식
으로 순환하는 부분이 루프(loop)이다.
while 반복문은 조건식
을 지정하고 끝에 :
(콜론)을 붙인 뒤 다음 줄에 반복할 코드
와 변화식
을 넣는다.
초기식
while 조건식
반복할 코드
변화식
while 다음 줄에 오는 코드는 반드시 들여쓰기 해준다.
while 반복문으로 'Hello, world!'를 100번 출력해보자.
i = 0 # 초기식
while i < 100: # while 조건식
print('Hello, world!') # 반복할 코드
i += 1 # 변화식
-----------------------------------------
Hello, world!
... (생략)
Hello, world!
Hello, world!
Hello, world!
이번에는 i
에 0이 아니라 1을 할당하여 100번 출력해보자.
i = 1 # 초기식
while i <= 100: # while 조건식
print('Hello, world!', i) # 반복할 코드
i += 1 # 변화식
------------------------------------------
Hello, world! 1
Hello, world! 2
Hello, world! 3
... (생략)
Hello, world! 99
Hello, world! 100
i
에 1 을 넣었으므로 while 조건식은 i <= 100
과 같이 지정한다.
i
가 1 부터 증가하므로 100번 반복하게 된다.
만약 i
가 101 이 되면 i <= 100
은 거짓(False)이 되므로 반복문을 끝낸다.
i = 1 # 초기식
while i <= 100: # while 조건식
print('Hello, world!', i) # 반복할 코드
i += 2 # 변화식
-------------------------------------------
Hello, world! 1
Hello, world! 3
Hello, world! 5
... (생략)
Hello, world! 97
Hello, world! 99
변화식을 +2로 바꾸면 홀수만 출력된다.
i = 2 # 초기식
while i <= 100: # while 조건식
print('Hello, world!', i) # 반복할 코드
i += 2 # 변화식
-------------------------------------------
Hello, world! 2
Hello, world! 4
Hello, world! 6
... (생략)
Hello, world! 98
Hello, world! 100
초기식을 2로 바꿔주면 짝수만 출력된다.
반대로 초깃값을 크게 주고, 변수를 감소시키면서 반복할 수도 있다.
다음은 100부터 1까지 100번 반복한다.
i = 100 # 초기식
while i > 0: # while 조건식
print('Hello, world!', i) # 반복할 코드
i -= 1 # 변화식
--------------------------------------------
Hello, world! 100
Hello, world! 99
Hello, world! 98
... (생략)
Hello, world! 2
Hello, world! 1
i 에 100을 할당한다.
while 조건식은 i > 0
과 같이 지정하여 1까지만 반복하도록 만든다.
변화식을 i -= 1
로 지정하여 변수의 값을 1씩 감소시킨다.
이렇게 하면 i 가 100부터 1까지 감소하면서 반복한다.
i 가 0이 되면 i > 0
은 거짓(False)이므로 반복문을 끝낸다.
입력한 횟수대로 반복하기
count = int(input('반복할 횟수를 입력하세요: '))
i = 0
while i < count:
print('Hello, world!', i)
i += 1
---------------------------------------------
반복할 횟수를 입력하세요: 3 (입력)
Hello, world! 0
Hello, world! 1
Hello, world! 2
코드를 실행하면 '반복할 횟수를 입력하세요: '가 출력된다.
여기에 3을 입력하고 엔터를 누른다.
input으로 입력값을 받아서 conut 변수에 저장했다.
그리고 i에는 0을 할당하고,
while 반복분의 조건식에서 i < count
와 같이 지정하여 count에 들어있는 값만큼 반복하도록 만들었다.
여기서는 3을 입력했으므로 'Hello, world!'는 3번만 출력된다.
이번에는 초깃값을 받은 뒤 초깃값 만큼 출력해보자.
count = int(input('반복할 횟수를 입력하세요: '))
while count > 0: # count가 0보다 클 때 반복
print('Hello, world!', count)
count -= 1 # count를 1씩 감소시킴
--------------------------------------------
반복할 횟수를 입력하세요: 3 (입력)
Hello, world! 3
Hello, world! 2
Hello, world! 1
input으로 입력값을 받아서 count 변수에 저장했다.
조건식에서 count > 0
와 같이 지정하여 count에 들어있는 값만큼 반복하도록 만들었다.
여기서는 변수 i 대신 count를 바로 사용하므로 변화식을 count -= 1
로 지정하여 반복할 때마다 count를 감소시키고 count가 0이 되면 반복문을 끝낸다.
난수(random number): 특정 주기로 반복되지 않으며 규칙 없이 무작위로 나열되는 숫자
파이썬에서 난수를 생성하려면 random
모듈이 필요하다.
모듈은 import
키워드를 사용하여 가져올 수 있다.
import random
print(random.random())
-----------------------------
👉 0.8202557619301757
👉 0.0650261259749908
👉 0.019305069712103995
random.random()
을 실행할 때마다 계속 다른 실수가 출력된다. 이 숫자가 난수이다.
random 모듈
의 randint 함수
를 사용해보자.
randint 함수
는 난수를 생성할 범위를 지정하며, 범위에 지정한 숫자도 난수에 포함된다.
random.randint(a, b)
randint 함수
로 주사위를 만들어보자.
random.randint(1, 6)
처럼 1과 6을 넣으면 1과 6 사이의 난수가 생성된다. (6 포함)
import random
print(random.randint(1, 6))
------------------------------
👉 1
👉 3
👉 5
👉 6
random.randint(1, 6)
을 실행할 때마다 다른 숫자가 나온다.
이 함수를 while 반복문에 사용해보자.
import random # random 모듈을 가져옴
i = 0
while i != 3: # 3이 아닐 때 계속 반복
i = random.randint(1, 6) # randint를 사용하여 1과 6 사이의 난수를 생성
print(i)
------------------------------
6
5
4
5
5
2
2
6
5
2
6
2
4
3
while 반복문에서 i != 3
과 같이 조건식을 지정하여 3이 아닐 때 계속 반복하도록 만든다. 그리고 반복할 코드에서 i = random.randint(1,6)
과 같이 1과 6 사이의 난수를 생성하여 변수 i에 저장합니다.
정수가 무작위로 생성되어 실행할 때마다 반복 횟수가 달라진다.
random.choice(시퀀스객체)
random.choice(시퀀스객체)
함수를 사용하면 '시퀀스 객체'에서 요소를 무작위로 선택할 수 있다.
(시퀀스 객체: 리스트, 튜플, 문자열, range 등)
👇 리스트에서 무작위로 숫자를 선택한다.
import random
dice = [1, 2, 3, 4, 5, 6]
print(random.choice(dice))
----------------------------
👉 1
👉 6
👉 5
while에 True
를 지정하면 무한 루프
while에 조건식 대신 True를 지정하면 무한히 반복하는 무한 루프가 만들어진다. 따라서 조건식이 항상 참(True)이므로 변화식도 필요 없다.
Ctrl+C
를 누르면 무한 루프에서 나올 수 있다.
while True:
print('Hello, world!')
-----------------------------
Hello, world!
Hello, world!
Hello, world!
Hello, world!
... (계속 반복)
while에 True 대신 True로 취급하는 값
을 사용해도 무한 루프로 동작
👇 0이 아닌 숫자는 True로 취급하여 무한 루프로 동작
while 1:
print('Hello, world!')
👇 내용이 있는 문자열은 True로 취급하여 무한 루프로 동작
while 'Hello':
print('Hello, world!')
- while 반복문은 조건식이 참(True)일 때 반복하고 거짓(False)일 때 반복을 끝낸다.
- while 반복문은 반복 횟수가 정해져 있지 않을 때 자주 사용한다.
- for 반복문은 반복 횟수가 정해져 있을 때 자주 사용한다.
- for와 while의 차이점을 정확히 익혀 두고 적절한 곳에 사용하는 것이 좋다.
다음 소스 코드를 완성하여 정수 2 5
, 4 4
, 8 3
, 16 2
, 32 1
이 각 줄에 출력되게 만드세요. while에 조건식은 두 개 지정하고, 두 변수를 모두 변화시켜야 합니다.
i = 2
j = 5
while i <= 32 or j >= 1:
print(i, j)
i *= 2
j -= 1
-------------------------
2 5
4 4
8 3
16 2
32 1
표준 입력으로 금액(정수)이 입력됩니다. 1회당 요금은 1,350원이고, 교통카드를 사용했을 때마다의 잔액을 각 줄에 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 최초 금액은 출력하지 않아야 합니다. 그리고 잔액은 음수가 될 수 없으며 잔액이 부족하면 출력을 끝냅니다.
x = int(input())
while x >= 1350:
x -= 1350
print(x)
--------------------
13500 (입력)
12150
10800
9450
8100
6750
5400
4050
2700
1350
0