Python正则表达式参数问题

标签 python regex

我目前正在创建一个测验来测试 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/

相关文章:

python - 检查子图是否是 NetworkX 中的集团的最快方法

javascript - 正则表达式单独工作,但与 | 结合使用时不起作用

python - SDL: "working natively in C++"是什么意思?

java - 带括号的标准电话号码的电话号码正则表达式

java - 如何在java中使用正则表达式截断文本

python - 添加确认以在 Python 中使用正则表达式搜索和替换

javascript - 在 RegExp 中使用可变长度后视删除前导空格

用于创建和可视化 HyperGraph 的 Python 库

python - 有没有办法将 "array of strings"设置为函数中参数的类型?

python - 如何在 python 中创建一个简单且安全的 Socks5 代理?