Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果我得到了正确的答案,它会打印一些东西,我该怎么做呢_Python_Python 3.x - Fatal编程技术网

Python 如果我得到了正确的答案,它会打印一些东西,我该怎么做呢

Python 如果我得到了正确的答案,它会打印一些东西,我该怎么做呢,python,python-3.x,Python,Python 3.x,你需要做实际的计算来找出答案。下面是一个快速而肮脏的方法: if problem == answer: print("Correct!") 然后调用此函数以获得预期答案,并将其与用户给出的答案进行比较 def arithmetic(op, a, b): if op == "+": return a + b elif op == "-": return a - b

你需要做实际的计算来找出答案。下面是一个快速而肮脏的方法:

if problem == answer:
            print("Correct!")
然后调用此函数以获得预期答案,并将其与用户给出的答案进行比较

def arithmetic(op, a, b):
    if op == "+":
        return a + b
    elif op == "-":
        return a - b
    elif op == "*":
        return a * b
    elif op == "/":
        return a / b

而计数器
问题
是一个类似
“5+4=“
的字符串<代码>答案是一个字符串,例如
“9”
。为什么你期望这两个字符串相等?您需要使用
第一个
第二个
随机运算符
计算预期答案,并将其与输入的
答案
(转换为
整数
浮点
)进行比较,即使在这种情况下使用
eval
似乎是安全的,当存在其他评估预期答案的方法时,不建议使用此方法-1用于传播糟糕的编程实践,但不包括caveat@PranavHosangadi我确实说过“又快又脏”。这显然不是关键代码,这将为此目的发挥作用。我编辑了您的答案以包含一个替代解决方案,因为它根本不足以证明使用
eval
是合理的。即使这是一个良性的案例,使用
eval
是不安全的,但如果没有上下文说明原因,特别是对于初学者来说,这也不是一个好建议。
import random
operators = ['*', '/', '+', '-']
number = input('How many problems would you like?')
number = int(number)
counter = 1

while counter <= number:
    first = random.randint(0,10)
    second = random.randint(0,10)
    randoperator = random.choice(operators)
    problem = '{} {} {}'.format(first, randoperator, second)
    answer = input(problem + ' =  ')
    if eval(problem) == float(answer):
        print("Correct!")
    counter+=1
def arithmetic(op, a, b):
    if op == "+":
        return a + b
    elif op == "-":
        return a - b
    elif op == "*":
        return a * b
    elif op == "/":
        return a / b
while counter <= number:
    first = random.randint(0,10)
    second = random.randint(0,10)
    randoperator = random.choice(operators)
    problem = '{} {} {}'.format(first, randoperator, second)
    answer = input(problem + ' =  ')
    if arithmetic(randoperator, first, second) == float(answer):
        print("Correct!")
    counter+=1