4.2while 문
이번 절에서는 플레이어가 숫자를 입력하지 않는 경우에 대한 예외 처리를 하면서 while 문을 익혀 보겠습니다. 예외 처리는 try ~ except 문을 사용합니다. 하지만 이번 예제에서는 while 문을 이용해 예외 처리를 해 보겠습니다.
코드 부록-7 appendix/number_guess_game2.py ④
# 이 코드의 위치는 number_guess_game2.py에서 7번째 줄에 위치한 # player_num = int(input("Make a guess(1~9) : "))를 수정한 것입니다. player_num = input("Make a guess(1~9) : ") #1 while not player_num.isdigit(): print("Must be an integer from 1 to 9") player_num = input("Make a guess(1~9) : ") player_num = int(player_num) #2
코드에 조금 변화가 생겼습니다. 이전엔 player_num = int(input("Make a guess(1~9) : "))였는데 int() 함수를 벗겨냈습니다(#1). input() 함수는 문자열을 받아옵니다. player_num은 문자열이므로 str 내장 함수인 isdigit() 함수를 사용해 숫자 문자열인지 알 수 있습니다.
또한 while 문을 작성할 때 while <조건>:에서 조건이 참일 때만 while 문 안의 코드가 실행됩니다. while not player_num.isdigit(): 문장은 player_num이 ‘숫자 문자열이 아니면’ 참이 되어 while 문 안에 있는 내용이 실행됩니다.
사용자가 ‘a’나 ‘가’와 같은 문자를 입력하면 "Must be an integer from 1 to 9"(입력이 1과 9 사이의 정수여야 한다)라는 경고문을 보여 주고 다시 숫자를 입력받습니다. 숫자 문자열을 입력하지 않으면 조건이 참이 되어 while 문은 계속 실행됩니다. 따라서 #2에서 int() 함수를 만날 때 오류는 절대 발생하지 않습니다.