我正在尝试比较用户收到的输入,检查输入是否实际上是一个数字.这是我到目前为止所拥有的:
numstring = input("Choose a number between 1 and 10")
Run Code Online (Sandbox Code Playgroud)
然后比较我在这样的方法中有它:
def check(a):
if int(a) == int:
print("It's a number!")
else:
print("It's not a number!")
Run Code Online (Sandbox Code Playgroud)
它总是打印出它不是一个数字,即使它是.
这个计划的目标:我正在做一个猜谜游戏:
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)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!实际的代码有效,但它只是检查它失败了.
你可以使用str.isdigit()方法:
def check(a):
if a.isdigit():
print("It's a number!")
else:
print("It's not a number!")
Run Code Online (Sandbox Code Playgroud)
对于负数输入,上述方法将失败.'-5'.isdigit()给False.因此,另一种解决方案是使用try-except:
try:
val = int(a)
print("It's a number!")
except ValueError:
print("It's not a number!")
Run Code Online (Sandbox Code Playgroud)
int(a)并且int不相等因为int()返回一个整数而且只有intno ()是python2中的类型.(或python3中的类)
>>> a = '10'
>>> int(a)
10
>>> int
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
如果你只处理整数,那么使用try-except和int其他人一样.要处理任何类型的数字,您可以使用ast.literal_evaltry-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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |