IFP 겨울방학 스터디(Unit 17)

유재우·2022년 1월 15일
0

IFP-겨울방학 스터디

목록 보기
15/38

While 반복문 사용하기

  • for과 마찬가지로 조건식에 쓰이는 변수(i)를 while 블록 안에서 사용할 수 있고 초기값을 감소시키는 기능 또한 구현 가능하다.
구조)
초기식
while 조건식:
    반복할 코드
예)
i = 0                          # 초기식
while i < 10:                 # while 조건식
     print('Hello!')    # 반복할 코드
     i += 1                 

Hello! 10번 출력


반복 횟수가 정해지지 않았을 때

  • while문은 for문과는 달리 반복 횟수가 정해지지 않았을 때 더 많이 사용한다.
  • 파이썬에서 난수를 생성 할 때엔 import random 키워드를 사용하여 가져올 수 있다.
import random
dice = [1, 2, 3, 4, 5, 6]
random.randint(1,6)  # 1~6 사이의 수 하나를 랜덤으로 생성
random.choice(dice)  # dice안에 들어있는 객체 하나를 임의로 선택
예)
import random
i = 0
while i != 2:
    i = random.randint(1, 6)
    print(i)
# 랜덤으로 선택한수가 2 가 나올 때까지 무한 반복한다.

17.4 퀴즈

  • 다음 중 while 반복문에 대한 설명으로 잘못된 것을 모두 고르세요.
  1. while 반복문에는 조건식 또는 값을 지정하면 된다.
  2. while 반복문은 조건식의 결과가 True이면 반복을 끝낸다.
  3. while 반복문은 반복 횟수가 정해져 있을 때만 사용할 수 있다.
  4. while 반복문의 다음 줄은 반드시 들여쓰기를 해야 한다.
  5. while 반복문의 조건식에 True를 지정하면 무한 루프가 된다.

정답) 2, 3
풀이)
2 - 조건식 결과가 True일 때에는 무한 반복한다.
3 - 반복 횟수가 정해져있지 않아도 사용가능하다.

  • 다음 while 반복문을 실행했을 때 출력 결과를 고르세요.
i = 10
while i < 19:
    print(i, end=' ')
    i += 2
  1. 10 11 12 13 14 15 16 17 18 19
  2. 10 11 12 13 14 15 16 17 18
  3. 10 12 14 16 18 19
  4. 10 12 14 16 18
  5. 10 12 14 16

정답) 4
풀이) i = 10이기 때문에 10으로 시작하고 while 조건식을 보면 i가 19보다 작을 때 까지 무한 루프를 돌고 i값에 2씩 더하므로 답은 4이다.
  • while 반복문으로 'Hello, world!'를 10번 출력한다고 했을 때 잘못된 부분을 고르세요.
a. i = 0
b. 
c. while i > 20:
d.     print('Hello, world!')
e.     i = i + 2

정답) c
풀이) 조건식을 처음부터 만족하지않아 while문이 작동하지 않으므로 i < 20으로 바꿔야 정상적으로 작동한다.

  • 다음 while 반복문 중 무한 루프를 모두 고르세요.
  1. while '':
  2. while 1.1:
  3. while None:
  4. while False:
  5. while not 0:

정답) 2, 5
풀이)
2 - 실수는 True로 취급하므로 무한루프된다.
5 - 0은 False이지만 not을 이용해 값을 뒤집어서 True이므로 무한루프된다.

17.5 연습문제: 변수 두 개를 다르게 반복하기

  • 다음 소스 코드를 완성하여 정수 2 5, 4 4, 8 3, 16 2, 32 1이 각 줄에 출력되게 만드세요. while에 조건식은 두 개 지정하고, 두 변수를 모두 변화시켜야 합니다.
i = 2
j = 5
① _____________or______
    print(i, j)
    ②_________
    ③_________
실행결과)
2 5
4 4
8 3
16 2
32 1

정답) 
① : while i <= 32 or j >=1:
② : i *= 2
③ : j -= 1
풀이) 
i는 두 배씩 높아지면서 출력이 되고 32로 마무리가 되었고
j는 1씩 감소하면서 출력이 되고 1로 마무리가 되었으므로 
조건식과 반복할 코드를 이를 토대로 작성하면 된다.

17.6 심사문제: 교통카드 잔액 출력하기

  • 표준 입력으로 금액(정수)이 입력됩니다. 1회당 요금은 1,350원이고, 교통카드를 사용했을 때마다의 잔액을 각 줄에 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 최초 금액은 출력하지 않아야 합니다. 그리고 잔액은 음수가 될 수 없으며 잔액이 부족하면 출력을 끝냅니다.
입력) 10000
결과)
8650
7300
5950
4600
3250
1900
550

정답)
price = int(input())
while price >=1350:
    price -= 1350
    print(price)
풀이)
금액에 대한 입력을 받을 변수 price를 선언하고 정수형으로 바꿔준다.
입력 받은 price가 1350보다 작을 때에 출력을 끝내므로 1350 이상일 때로 조건을 걸고 최초 금액을 출력 하지않으므로 price에서 교통금액을 뺀 후 출력을 한다.

profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글

관련 채용 정보