-5

这是我+ - *的代码,它必须包含在代码中,并且必须随机选择,但它不起作用,它没有说出正确的答案,我将不胜感激,谢谢。

import random
import operator
question_number = 0
score = 0

ops = {'+':operator.add,
           '-':operator.sub,
           '*':operator.mul,
           '/':operator.truediv}
number1 = random.randint(0,12)
number2 = random.randint(1,10)
op = random.choice(list(ops.keys()))

print ("this is a short maths quiz")
name = input ("what is your name")
age = input ("how old are you " +name)
print ("ok "+name+" im going to start the quiz now")
print(number1, op, number2)
user_input=int(input())
answer = (number1,op,number2)
if user_input == answer:
    print("Well done")
    score = score + 1

else:
    print("WRONG!")
    print("The answer was",answer)

question_number = question_number + 1
4

2 回答 2

0

您需要op作为键从opsdict 和call两个数字上获取适当的值:

answer = ops[op](number1, number2)

您的代码正在将一个 int 与一个元组进行比较,即 9 == (3, '+', 6)

除非您需要负数,否则您可能还希望将较大的数字保留在左侧,而将较小的数字保留在右侧。

answer = ops[op](max(number1,number2),min(number1, number2))

此外,除非这是在一个 while 循环question_number = question_number + 1中,否则不会做太多事情。

于 2015-02-22T16:41:10.893 回答
0

您需要使 op 成为 op 而不是字符串。这是您修复的代码。

import random
import operator

question_number = 0
score = 0

ops = {'+':operator.add,
           '-':operator.sub,
           '*':operator.mul,
           '/':operator.truediv}
number1 = random.randint(0,12)
number2 = random.randint(1,10)
op = random.choice(list(ops.keys()))

print ("this is a short maths quiz")
name = input ("what is your name")
age = input ("how old are you " +name)
print ("ok "+name+" im going to start the quiz now")
print(number1, op, number2)
user_input=int(input())
if op == "+":
    answer = (number1+number2)
elif op == "-":
    answer = (number1-number2)
elif op == "*":
    answer = (number1*number2)
elif op == "/":
    answer = (number1/number2)
if user_input == answer:
    print("Well done")
    score = score + 1

else:
    print("WRONG!")
    print("The answer was",answer)

question_number = question_number + 1

您可以添加一个while循环以使其重复

于 2015-05-17T16:49:00.010 回答