当我尝试这个
if question.isdigit() is True:
我可以很好地键入数字,这会过滤掉字母/字母数字字符串
例如,当我尝试使用“s1”和“s”时,它将转到(其他)。
问题是,当我输入负数(例如-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")
最佳答案
使用try/except,如果我们不能转换为int,它将is_dig
设置为False
:
try:
int(question)
is_dig = True
except ValueError:
is_dig = False
if is_dig:
......
或做一个功能:
def is_digit(n):
try:
int(n)
return True
except ValueError:
return False
if is_digit(question):
....
首先查看您对int的编辑转换,检查输入是否为数字,然后转换无意义,请一步一步完成:
while a < 10:
try:
question = int(input("What is {} {} {} ?".format(n1,op,n2)))
except ValueError:
print("Invalid input")
continue # if we are here we ask user for input again
ans = ops[op](n1, n2)
n1 = random.randint(1,9)
n2 = random.randint(1,9)
op = random.choice(list(ops))
if question == ans:
print ("Well done")
else:
print("Wrong answer")
a += 1
不确定Z到底在做什么,但
Z = Z + 0
与完全不对Z
做任何操作相同使用函数获取输入,我们可以使用范围:
def is_digit(n1,op,n2):
while True:
try:
n = int(input("What is {} {} {} ?".format(n1,op,n2)))
return n
except ValueError:
print("Invalid input")
for _ in range(a):
question = is_digit(n1,op,n2) # will only return a value when we get legal input
ans = ops[op](n1, n2)
n1 = random.randint(1,9)
n2 = random.randint(1,9)
op = random.choice(list(ops))
if question == ans:
print ("Well done")
else:
print("Wrong answer")
关于python - 如何用.isdigit键入负数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28279732/