当我尝试这个时
if question.isdigit() is True:
我可以很好地输入数字,这会过滤掉字母/字母数字字符串
例如,当我尝试“s1”和“s”时,它会转到(else)。
问题是,当我输入负数(例如 -1)时,“.isdigit”将“-”符号计为字符串值并拒绝它。我怎样才能使“.isdigit”允许负号“-”?
这是代码。我尝试过的事情。
while a <=10 + Z:
question = input("What is " + str(n1) + str(op) + str(n2) + "?")
a = a+1
if question.lstrip("-").isdigit() is True:
ans = ops[op](n1, n2)
n1 = random.randint(1,9)
n2 = random.randint(1,9)
op = random.choice(list(ops))
if int(question) is ans:
count = count + 1
Z = Z + 0
print ("Well done")
else:
count = count + 0
Z = Z + 0
print ("WRONG")
else:
count = count + 0
Z = Z + 1
print ("Please type in the number")
Use lstrip
:
question.lstrip("-").isdigit()
Example:
>>>'-6'.lstrip('-')
'6'
>>>'-6'.lstrip('-').isdigit()
True
You can lstrip('+-')
如果你想考虑+6
一个有效的数字。
但我不会用isdigit
, 你可以试试int(question)
,如果该值不能表示为,则会抛出异常int
:
try:
int(question)
except ValueError:
# not int
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)