Как мне заставить мой код Python работать? случайный математический тест

Это мой код, который он должен иметь + - * в коде, и он должен быть выбран случайным образом, но он не работает, он не говорит правильный ответ, я был бы признателен за любую помощь, спасибо.

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

2 ответа

Вам нужно op в качестве ключа, чтобы получить соответствующее значение из ops диктовать и call это на двух числах:

answer = ops[op](number1, number2)

Ваш код сравнивает int с кортежем, т.е. 9 == (3, '+', 6)

Возможно, вы также захотите оставить большее число слева и меньшее справа, если только вам не нужны отрицательные числа.

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

Кроме того, если это не в цикле question_number = question_number + 1 не собирается делать много.

Вам нужно сделать оп опера, а не строку. это ваш код исправлен.

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 цикл, чтобы сделать это повторение

Другие вопросы по тегам