2017-03-05 9 views
1

私は、AIでプレイできる岩石、紙、はさみシミュレータを構築しています。入力の種類のみを受け入れる

コードの一部は、表示する内容を入力するようにユーザーに求めます。プレイヤーが岩、紙、はさみをプレイしたい場合。たとえば、誰かが岩を使用したいと思っている場合、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

は、ここに1つの方法です。

それは次のようになります。

また、入力を確認するために、正規表現を使用することができます。

+0

私は非常によく理解していません "ValueErrorを発生させる"それは例外を呼び出しますか?申し訳ありません、私は初心者です。 – prossellob

+0

はい、 "raise ValueError"は、コードを実質的にexceptステートメントに移動させます。より完全な定義が必要な場合は、[例外の発生に関するpythonのドキュメント](https://docs.python.org/3/tutorial/errors.html#raising-exceptions)を参照してください。 – anonymoose

+0

ありがとう:)私はそれを見てみましょう:) – prossellob

関連する問題