我正在尝试比较用户收到的输入,检查输入是否实际为数字。这是我到目前为止所做的:
numstring = input("Choose a number between 1 and 10")
然后比较我在这样的方法中得到它:
def check(a):
if int(a) == int:
print("It's a number!")
else:
print("It's not a number!")
它总是打印出它不是数字,即使它是。
该计划的目标: 我在做一个猜谜游戏:
import random
numstring = input("Choose a number between 1 and 10")
def check(a):
if int(a) == int:
print("It's a number!")
else:
print("It's not a number!")
if abs(int(a)) < 1:
print("You chose a number less than one!")
elif abs(int(a)) > 10:
print("You chose a number more than ten!")
else:
randomnum = random.randint(1, 10)
randomnumstring = str(abs(randomnum))
if randomnum == abs(int(a)):
print("You won! You chose " + a + "and the computer chose " + randomnumstring)
else:
print("You lost! You chose " + a + " and the computer chose " + randomnumstring)
check(numstring)
感谢您的帮助!实际的代码可以工作,但它只是检查它。
答案 0 :(得分:9)
您可以使用str.isdigit()
方法:
def check(a):
if a.isdigit():
print("It's a number!")
else:
print("It's not a number!")
对于负数输入,上述方法将失败。 '-5'.isdigit()
给出False
。因此,另一种解决方案是使用try-except
:
try:
val = int(a)
print("It's a number!")
except ValueError:
print("It's not a number!")
答案 1 :(得分:5)
int(a)
和int
不相等,因为int()
返回一个整数而int
只有()
是python2中的类型。(或类python3)
>>> a = '10'
>>> int(a)
10
>>> int
<type 'int'>
如果你只处理整数,那么就像其他人所说的那样使用try {except和int
。要处理任何类型的号码,您可以使用ast.literal_eval
和try-except:
>>> from ast import literal_eval
>>> from numbers import Number
def check(a):
try:
return isinstance(literal_eval(a), Number)
except ValueError:
return False
>>> check('foo')
False
>>> check('-100')
True
>>> check('1.001')
True
>>> check('1+1j')
True
>>> check('1e100')
True
答案 2 :(得分:3)
尝试将输入转换为int
块中的try/except
:
numstring = input("Choose a number between 1 and 10")
try:
a = int(numstring)
print("It's a number!")
except ValueError:
print("It's not a number!")
如果您使用的是python 2,请考虑切换到raw_input()
而不是input()
。 input()
接受任何python表达式,这很糟糕且不安全,例如eval()
。 raw_input()
只是将输入读作字符串:
numstring = raw_input("Choose a number between 1 and 10")
try:
a = int(numstring)
print("It's a number!")
except ValueError:
print("It's not a number!")
请注意,raw_input()
已在python 3中重命名为input()
。
另见:
希望有所帮助。