Skip to main content
 首页 » 编程设计

Python正则表达式参数问题

2024年10月25日34小虾米

我目前正在创建一个测验来测试 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 语句的第二部分会检查他们是否输入了数字,如果输入了,则程序会检查输入是否正确到 correct_ans。如果是,他们会收到一条消息,说做得好!程序中断了。如果他们做错了,程序会输出一条消息,但他们仍然做错了。

我遇到的问题是 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