我想让python向用户提问 - 来自列表中的随机变量。 它需要询问需要用户输入的问题。
到目前为止,这是我的代码:
import time
import random
question = "0"
score = "0"
name = input("What is your full name?")
print ("Hello " + name, "welcome to The Arithmetic Quiz")
time.sleep(2)
numbers = list(range(1, 50))
operators = ["+", "-", "*"]
numbers1 = list(range(1,10))
print(str(random.choice(numbers)) + random.choice(operators) + str(random.choice(numbers1)))`
如何让最后一行代码提出问题并从用户那里获得输入?
另外我怎么做才能让python说当我不知道python会问什么时这是否正确?
答案 0 :(得分:4)
答案已在您的代码中。
user_input = input(str(random.choice(numbers)) + random.choice(operators) + str(random.choice(numbers)) + "? ")
应该有用。
从numbers
获取一个样本随机数,从operators
获取一个随机运算符,从numbers
获取另一个随机数,并将输入存储到变量user_input
要让Python检查你的答案,将随机生成的参数存储在变量中并检查它们。 (如果有更好的方法,如果有人向我指出,我会很感激。)
operand1 = random.choice(numbers)
operand2 = random.choice(numbers)
operator = random.choice(operators)
if operator == '+':
answer = operand1 + operand2
elif operator == '-':
answer = operand1 - operand2
else:
answer = operand1 * operand2
user_input = input(str(operand1) + operator + str(operand2) + "? ")
if str(answer) == user_input:
print('Correct!')
else:
print('Wrong!')
编辑:@mhawke's answer有更好的存储和操作操作数的方法。不是将运算符存储在列表中,而是将它们存储在dict
中,并将它们映射到相应的运算符函数,如下所示:
import operator
operators = {"+": operator.add, "-": operator.sub, "*": operator.mul}
operand1 = random.choice(numbers)
operand2 = random.choice(numbers)
op = random.choice(operators)
expected_answer = op(operand1, operand2)
operator的文档。
答案 1 :(得分:1)
对于问题的第二部分,如何确定用户是否输入了正确答案,您可以存储随机选择的值并评估结果表达式。然后将其与用户的值进行比较:
import operator
operators = {"+": operator.add, "-": operator.sub, "*": operator.mul}
operand1 = random.choice(numbers)
operand2 = random.choice(numbers1)
op = random.choice(operators)
expected_answer = op(operand1, operand2)
user_answer = input('{} {} {} = ?: '.format(operand1, op, operand2)
if int(user_answer) == expected_answer:
print('Correct!')
else:
print('Wrong. The correct answer is {}'.format(expected_answer)
运算符存储在字典中。运算符标记(+, - ,*)是此字典中的键,值是来自执行操作的operator
模块的函数。使用这样的字典非常灵活,因为如果你想支持一个新的运算符,例如除法,你可以将它添加到operators
字典:
operators = {"+": operator.add, "-": operator.sub, "*": operator.mul, '/': operators.div}