我目前正在创建一个测验来测试 children 将两个数字相加、相减和相乘的能力。您可以查看下面的代码来了解我到目前为止所开发的内容:
from random import randint
import re
first_number = randint(30,60)
second_number = randint(30,60)
correct_ans = str(first_number - second_number)
while True:
user_input = input("%s - %s = " %(first_number, second_number))
if re.search(r'[\d]', user_input):
print("Error. You have entered a non - integer character. The question will be asked again.")
elif re.search(r'[0-9]', user_input):
if (user_input == correct_ans):
print("Correct! Well done!")
break
else:
print("Your answer is incorrect. The correct answer was %s" %(correct_ans))
break
简要解释一下该程序 -
生成两个随机数,此函数仅将这些数字相乘。 while 循环询问用户正确的结果。现在,第一个正则表达式分析输入,看看他们是否输入了任何非数字字符(标点符号、字母)等。如果有,他们会收到一条消息,并再次询问问题。
现在,if 语句的第二部分检查是否输入了数字,如果输入了,则程序检查输入是否正确。如果是,他们会收到一条消息说干得好!程序就中断了。如果他们弄错了,程序会输出一条消息,但他们仍然会弄错。
我遇到的问题是 IDLE 始终输出第一条消息“错误,您已输入...”,如下所示:
50 - 60 = -10
Error. You have entered a non - integer character. The question will be asked again.
50 - 60 =
我该如何解决这个问题?更重要的是,如何让计算机接受减法运算的负值,因为它有一个“-”并认为它是一个标点符号?
最佳答案
只需使用 try/except
即可处理负数:
from random import randint
first_number = randint(30,60)
second_number = randint(30,60)
correct_ans = first_number - second_number
while True:
user_input = input("%s - %s = " %(first_number, second_number))
try:
user_input = int(user_input)
except ValueError:
print("Error. You have entered a non - integer character. The question will be asked again.")
else:
if user_input == correct_ans:
print("Correct! Well done!")
break
else:
print("Your answer is incorrect. The correct answer was %s" %(correct_ans))
break
关于Python正则表达式参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27601471/