Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 2.7中,如何检查原始输入是否为整数?_Python_String_Python 2.7_Integer_Raw Input - Fatal编程技术网

在python 2.7中,如何检查原始输入是否为整数?

在python 2.7中,如何检查原始输入是否为整数?,python,string,python-2.7,integer,raw-input,Python,String,Python 2.7,Integer,Raw Input,是否有一种方法可以用来检查原始输入是否为整数 我在网上研究后发现了这个方法: print isinstance(raw_input("number: ")), int) 但当我运行它并输入4时,例如,我得到FALSE。 我对python有点陌生,任何帮助都将不胜感激 isinstance(原始输入(“number”)),int)总是产生False,因为原始输入作为结果返回字符串对象 使用try:int(…)。。。除值错误外: number = raw_input("number: ") try

是否有一种方法可以用来检查
原始输入是否为整数

我在网上研究后发现了这个方法:

print isinstance(raw_input("number: ")), int)
但当我运行它并输入
4
时,例如,我得到
FALSE
。 我对python有点陌生,任何帮助都将不胜感激

isinstance(原始输入(“number”)),int)
总是产生
False
,因为
原始输入作为结果返回字符串对象

使用
try:int(…)。。。除值错误外

number = raw_input("number: ")
try:
    int(number)
except ValueError:
    print False
else:
    print True
或使用:

注意第二个值为
-4
生成
False
,因为它包含非数字字符。如果只需要数字,请使用第二个

更新正如J.F.塞巴斯蒂安指出的那样,
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'
导入区域设置 >>>locale.getpreferredencoding() “cp1252” >>>“\xb2”.isdigit()#上标二 假的 >>>locale.setlocale(locale.LC_ALL,“丹麦语”) “丹麦(丹麦)1252” >>>“\xb2”.isdigit() 真的 >>>int('\xb2') 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:基数为10的int()的文本无效:'\xb2'
您可以这样做:

try:
    val = int(raw_input("number: "))
except ValueError:
    # not an integer
这是我的解决办法

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

尝试此方法。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)

或者,如果他们想将变量转换成一个数字,
number=int(number)
str.isdigit()
可能取决于区域设置(因为Microsoft),即它可能返回
True
甚至
int()
都会对输入产生value错误。@J.F.Sebastian,
raw\u input()
返回一个
str
对象,不是
unicode
对象。因此,我认为str.isdigit将按预期工作。你能给我举个例子吗。使用cp1252语言环境,而不是cp1251。PYTHONIOENCODING是不相关的。@J.F.Sebastian,是的,我检查过了:。我忘了粘贴那个部分。再次感谢你:请考虑编辑你的帖子来解释这是如何工作的,因为只有代码的答案并不总是让OP清楚如何解决他们的问题。
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)