2017-03-05 2 views
1

인공 지능을 가지고 놀 수있는 바위, 종이 및 가위 시뮬레이터를 구축하고 있습니다.입력 유형 만 허용합니다.

print('1.Rock 2.Scissors 3.Paper') 
choice = int(input('Input your choice:\n')) 

코드의 일부분은 사용자에게 표시 할 내용을 입력하도록 요청합니다. 플레이어가 바위, 종이, 가위를 연주하고 싶다면. 예를 들어 누군가가 바위를 사용하고자한다면 1을 입력 할 것입니다. 다른 숫자 나 문자를 입력하지 않거나 오류를 표시하고 질문을 다시 입력하도록하고 싶습니다.

무엇을 사용해야합니까?이라면 을 사용하려고 생각하고 있습니다.하지만 더 좋은 방법이 있다고 생각합니다. if는 문제가되지 않습니다 사용

while True: 
    try: 
     selection = int(input("Input your choice:\n")) 
     if selection < 1 or selection > 3: #Valid number but outside range, don't let through 
      raise ValueError 
     else: #Valid number within range, quit loop and the variable selection contains the input. 
      break 
    except ValueError: #Invalid input 
     print("Enter a number from 1 to 3.") 
+1

'if '를 사용하면 여러분의 필요를 충족시키는 훌륭한 방법입니다. – DyZ

+0

그리고 Ctrl + 문자를 사용하지 못하게하려면 어떻게해야합니까? 그들이 Ctrl + 문자를 누르면 프로그램이 충돌합니다. – prossellob

+0

'int()'를 호출하기 전에 입력의 유효성을 검사해야합니다. 예외 처리에 대해 읽어보십시오. – DyZ

답변

1

여기에 하나의 방법입니다.

그것은 다음과 같이 보일 것이다 : 당신은 또한 입력을 확인하기 위해 정규 표현식을 사용할 수 있습니다

if not (1 <= choice <= 3): 
    raise ValueError() 

.

+0

"ValueError를 발생시키는"무엇이 예외를 호출하는지 잘 이해하지 못합니까? 미안하지만 초보자 야. – prossellob

+0

예, "raise ValueError"는 효과적으로 코드를 except 문으로 이동시킵니다. 좀 더 자세한 정의가 필요하면 [예외 발생에 관한 python 문서] (https://docs.python.org/3/tutorial/errors.html#raising-exceptions)를 확인하십시오. – anonymoose

+0

감사합니다 :) 나는 그것을 볼 것이다 :) – prossellob

관련 문제