web-dev-qa-db-ja.com

python 2.7で生入力が整数であるかどうかを確認するにはどうすればよいですか?

raw_inputが整数かどうかを確認するために使用できる方法はありますか?

私はウェブで調査した後にこの方法を見つけました:

print isinstance(raw_input("number: ")), int)

しかし、実行して4などを入力すると、FALSEが得られます。私はpythonに慣れていないので、助けていただければ幸いです。

13

_raw_input_は結果として文字列オブジェクトを返すため、isinstance(raw_input("number: ")), int)は常にFalseを生成します。

try: int(...) ... except ValueErrorを使用します。

_number = raw_input("number: ")
try:
    int(number)
except ValueError:
    print False
else:
    print True
_

または _str.isdigit_ を使用します:

_print raw_input("number: ").isdigit()
_

[〜#〜] note [〜#〜]2番目のものは、_-4_にFalseを生成します。数字。数字のみが必要な場合は、2番目を使用します。

[〜#〜] update [〜#〜]J.F. Sebastianが指摘したように、_str.isdigit_はロケール依存です(Windows)。 Trueを返すかもしれませんint()でも入力に対してValueErrorを送出します。

_>>> import locale
>>> locale.getpreferredencoding()
'cp1252'
>>> '\xb2'.isdigit()  # SUPERSCRIPT TWO
False
>>> locale.setlocale(locale.LC_ALL, 'Danish')
'Danish_Denmark.1252'
>>> '\xb2'.isdigit()
True
>>> int('\xb2')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '\xb2'
_
20
falsetru

次の方法でできます:

try:
    val = int(raw_input("number: "))
except ValueError:
    # not an integer
8
Dietrich Epp

ここに私の解決策があります

`x =raw_input('Enter a number or a Word: ')
y = x.isdigit()
if (y == False):
    for i in range(len(x)):
        print('I'),
else:
    for i in range(int(x)):
        print('I'),

`

1
user5322265
def checker():
  inputt = raw_input("how many u want to check?")
  try:
      return int(inputt)
  except ValueError:
      print "Error!, pls enter int!"
      return checker()
0
Frank Musteman

このメソッド.isdigit()を試してください。以下の例を参照してください。

user_input = raw_input()
if user_input.isdigit():
    print "That is a number."

else:
    print "That is not a number."

さらに使用するために入力を数字のままにする必要がある場合は、次のようなものを追加できます。

new_variable = int(user_input)
0
Elf Machine