16

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

Webで調査した後、この方法を見つけました:

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

しかし、それを実行して入力すると4、たとえばFALSE. 私はpythonが初めてなので、助けていただければ幸いです。

4

5 に答える 5

24

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

使用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()

2 番目のものは、数字以外の文字が含まれているため、Falseforになります。-4数字のみが必要な場合は、2 番目のものを使用します。

更新JF Sebastian が指摘したように、str.isdigitロケールに依存します (Windows)。入力に対して ValueError が発生することTrueさえあります。int()

>>> 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'
于 2013-10-18T03:09:14.827 に答える
1

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

`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'),

`

于 2015-09-12T06:18:43.203 に答える