回答
は、私は以下のコードの一部が容易に理解される方法であなたの問題を解決すると思います。
user_input = input("Enter a number: ")
while not user_input.isnumeric():
user_input = input("Error: Enter a number: ")
説明
あなたが持っているコードがあるためwhile user_input != int
で動作しませんでした。
input
関数を呼び出して、ユーザーが入力を提供すると、その入力は常に文字列です。
>>> num = input('Enter a number: ') # 5, as a string
>>> num
'5'
num
が数字であるかどうかを確認することです。したがって、文字列が数字を表すかどうかを確認するには、str.isdigit()
、str.isdecimal()
、およびstr.isnumeric()
のメソッドを使用できます。詳しくはhereをご覧ください。
次のアプローチが実行可能であると誤解するのは簡単ですが、すぐに乱雑になる可能性があります。
while not isinstance(user_input, int):
は、あなたが文字列になります
input
関数の呼び出しの結果として受け取る入力を忘れないでください。したがって、上記のコードは常にTrueになります。これはあなたが望むものではありません。しかし、
user_input
を
int
に変更すると、上記のコードが動作する可能性があります。
>>> num = input('Enter a number: ') # 5, as a string
>>> num
'5'
>>> int(num)
5
>>> isinstance(num, int)
True
しかしnum
は何か他のものだった場合、インタープリタはエラーをスローしていました。
>>> num = input('Enter a number: ') # 'A'
>>> int(num)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'A'
これはバック文字列は、いくつかの数を表しているかどうかを確認するために、文字列のメソッドを使用することを含む答え、に私たちをもたらします。最もフレキシブルなので、str.isnumeric()
メソッドを使用することにしました。
これがあなたの質問に答えることを願っています。ハッピーコーディング!
'user_input.isnumeric()'がほしいかもしれません。 –