1. 배운 내용

2. 작성한 코드

3. 숙제





배운 내용

while문

while문은 프로그램에서 반복 작업을 수행할 때 사용한다. 사용하는 방법은 아래와 같다.

while <조건식>:
    <코드>
    <코드>
    <코드>
    .
    .
    .

if문과 같이 조건식이 True일 때 들여쓰기한 부분의 코드가 실행되며 조건식이 False가 될 때 까지 코드를 반복해서 실행한다.


예제1

a = 5
while a > 0:
    print(a)
    a = a - 1
'''
(출력 예시)
5
4
3
2
1
'''

이 예제에서의 조건식은 a > 0 이다.
a의 값은 5 이며 5 > 0 가 True이므로 while문의 코드를 실행한다.
while문 내에선 변수 a의 값을 출력하고 a의 값을 수정한다.
a = a - 1을 통해 변수 a에 저장된 값에서 1을 뺀 값을 다시 a에 저장한다.
이렇게되면 반복문 코드가 실행될 때마다 a의 값이 줄어들게 되고 a가 0이 되었을 때 조건식이 False가 되면서 반복문을 탈출하게 된다.
(만약 a의 값을 수정하지 않는다면 조건식이 항상 5 > 0 이기 때문에 반복문이 멈추지 않을 것이다. 궁금하면 a = a - 1 코드를 주석처리 해보자)


작성한 코드

LoopExample.py

숙제 3번에서 while문을 통해 수정한 예제

결과적으로 price 리스트에 저장된 모든 값의 총합이 sum에 저장되어 출력된다.

price = [1100,1200,0,1400,0,1200,1200,1100]
price[2] = 4800
price[4] = 1200

sum = 0
index = 0
while index < 8:
    sum = sum + price[index]
    index = index + 1

print(sum)


DoorLock.py

이전 수업에서 작성했던 DoorLock 코드이다.
우리는 if을 활용하여 비밀번호를 확인는 코드를 작성하였다.

# if문을 활용한 기존 코드
passcodeNumber = [5, 2, 4, 7]
userInput = [0, 0, 0, 0]

userInput[0] = int(input("첫 번째 숫자를 넣어주세요: "))
userInput[1] = int(input("두 번째 숫자를 넣어주세요: "))
userInput[2] = int(input("세 번째 숫자를 넣어주세요: "))
userInput[3] = int(input("네 번째 숫자를 넣어주세요: "))

if userInput[0] == passcodeNumber[0] and userInput[1] == passcodeNumber[1] and userInput[2] == passcodeNumber[2] and userInput[3] == passcodeNumber[3]:
    print("문이 열렸습니다.")
else:
    print("비밀번호가 틀렸습니다.")


하지만 이 코드는 비밀번호가 한번만 틀려도 프로그램이 종료되는 문제가 있었고, 비밀번호가 틀리더라도 다시 시도할 수 있도록 하기 위하여 while을 사용하도록 코드를 수정해 주었다.

# while문을 사용하도록 수정한 코드
passcodeNumber = [5, 2, 4, 7]
userInput = [0, 0, 0, 0]

# while문에서 조건을 확인하기 위해 첫 입력은 미리 받아두어야 한다.
userInput[0] = int(input("첫 번째 숫자를 넣어주세요: "))
userInput[1] = int(input("두 번째 숫자를 넣어주세요: "))
userInput[2] = int(input("세 번째 숫자를 넣어주세요: "))
userInput[3] = int(input("네 번째 숫자를 넣어주세요: "))

# 비밀번호가 틀렸을 떄 while문을 반복시키기 위해 not이 붙었다.
while not (userInput[0] == passcodeNumber[0] and userInput[1] == passcodeNumber[1] and userInput[2] == passcodeNumber[2] and userInput[3] == passcodeNumber[3]):
    print("비밀번호가 틀렸습니다.")
    userInput[0] = int(input("첫 번째 숫자를 넣어주세요: "))
    userInput[1] = int(input("두 번째 숫자를 넣어주세요: "))
    userInput[2] = int(input("세 번째 숫자를 넣어주세요: "))
    userInput[3] = int(input("네 번째 숫자를 넣어주세요: "))

print("문이 열렸습니다.")

if문이 while문으로 바뀌고 조건식에 not이 추가되었다. 또한 비밀번호를 입력 받는 코드도 두 부분이나 있다.
코드가 헷갈릴 수 있겠으나 하나하나 잘 살펴보자.

userInput[0] == passcodeNumber[0] and
userInput[1] == passcodeNumber[1] and
userInput[2] == passcodeNumber[2] and
userInput[3] == passcodeNumber[3]

if문과 while문 조건식에 동일하게 사용되는 조건식이다.
이 조건식은 각 사용자가 입력한 비밀번호가 이미 설정된 비밀번호(passcodeNumber)와 동일한지 확인한다.
올바르게 입력했다면 True, 잘못된 입력이면 False가 될 것이다.

근데 여기서 if문은 비밀번호가 맞을 때 문이 열렸다는 코드를 실행시키는 것이고, while문은 비밀번호가 틀렸을 때 사용자 입력을 다시 받는 코드를 실행시킨다는 차이점이 있다. 비밀번호가 틀렸을 때 반복돼야 했기에 while문 조건식에 not이 붙은 것이다.


숙제

예제1과 DoorLock.py 코드를 직접 작성 해보고 실행 결과를 스크린샷으로 저장하기.

직접 코드를 쓰는게 귀찮고 복사 붙여넣기를 하고 싶겠지만 눈으로 쓱 보고 이해했어~ 하고 넘어가는 것과 코드를 직접 작성하며 그 의미를 이해하는 것은 분명한 차이가 있어. 귀찮겠지만 조금 더 힘내주길 바래 ㅠ.ㅠ
반복문 이후 함수 개념까지 익힌다면 간단한 프로그램 정돈 직접 작성할 수 있게 될꺼야!
열심히 하고, 다음 수업 때 보자!

혹시 스크린샷 남기는 법을 모른다면 물어보고~