2024-04-23 13:52:02 发布
网友
有没有方法可以用来检查raw_input是否为整数?
raw_input
我在网上调查后发现了这种方法:
print isinstance(raw_input("number: ")), int)
但是当我运行它并输入4例如,我得到FALSE。 我对python还不太熟悉,如果有什么帮助我会很感激的。
4
FALSE
isinstance(raw_input("number: ")), int)总是产生False,因为raw_input结果返回字符串对象。
isinstance(raw_input("number: ")), int)
False
使用try: int(...) ... except ValueError:
try: int(...) ... except ValueError
number = raw_input("number: ") try: int(number) except ValueError: print False else: print True
或者使用^{}:
print raw_input("number: ").isdigit()
注意第二个生成False的-4,因为它包含非数字字符。如果你只想要数字,就用第二个。
-4
更新正如J.F.Sebastian指出的,str.isdigit依赖于区域设置(Windows)。它可能返回True,甚至int()也会为输入增加ValueError。
str.isdigit
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'
这是我的解决方案
`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'),
`
你可以这样做:
try: val = int(raw_input("number: ")) except ValueError: # not an integer
isinstance(raw_input("number: ")), int)
总是产生False
,因为raw_input
结果返回字符串对象。使用
try: int(...) ... except ValueError
:或者使用^{} :
注意第二个生成
False
的-4
,因为它包含非数字字符。如果你只想要数字,就用第二个。更新正如J.F.Sebastian指出的,
str.isdigit
依赖于区域设置(Windows)。它可能返回True
,甚至int()
也会为输入增加ValueError。这是我的解决方案
`
你可以这样做:
相关问题 更多 >
编程相关推荐