더북(TheBook)


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() 함수를 만날 때 오류는 절대 발생하지 않습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.