【问题标题】:how do i make my python code work? random math quiz如何使我的 python 代码工作?随机数学测验
【发布时间】:2015-04-23 23:34:25
【问题描述】:

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

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

【问题讨论】:

  • 请您说得更具体一些。
  • 试试print(answer) 并考虑它是否曾经会等于一个整数...
  • Trying to loop just some parts of a math quiz program 的可能副本。似乎每天,每天四次,我们都会遇到一个随机的数学测验问题。
  • @MalikBrahimi,可能是类似的,但与 OP 使用的内容无关,为什么他们的代码不起作用。

标签: python math random slickquiz


【解决方案1】:

您需要将 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 循环以使其重复

【讨论】:

    【解决方案2】:

    您需要以op 为键,从ops dict 和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-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多