让python从字符串中提问

让python从字符串中提问,python,string,list,random,input,Python,String,List,Random,Input,我想让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,

我想让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说这是否正确?

答案已经在您的代码中了

user_input=input(str(random.choice(numbers))+random.choice(operators)+str(random.choice(numbers))+“?”

它从
numbers
中获取一个样本随机数,从
operators
中获取一个随机运算符,从
numbers
中获取另一个随机数,并将输入存储到变量
user\u input

要让Python检查您的答案,请将随机生成的参数存储在变量中并进行检查。(如果有更好的方法,如果有人向我指出,我将不胜感激)

编辑:具有更好的存储和操作操作数的方法。与其将运算符存储在列表中,不如将它们存储在
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)

文档。

对于问题的第二部分,如何确定用户输入的答案是否正确,您可以存储随机选择的值并计算结果表达式。然后将其与用户的值进行比较:

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)
运算符存储在字典中。运算符标记(+、-、*)是此字典中的键,值是执行操作的
运算符
模块中的函数。使用这样的字典非常灵活,因为如果您想支持一个新的运算符,例如除法,您只需将其添加到
运算符
字典:

operators = {"+": operator.add, "-": operator.sub, "*": operator.mul, '/': operators.div}

你在使用python3.x吗?为什么不像以前那样使用输入?与上次打印不同,将其定义为,即
number2
,然后
answe=input(“什么是”+numbers2)
@hugohonorem我现在已经这样做了,请看我编辑的答案这表示有一个“类型错误:不能将序列乘以'list'类型的非整数”。这是针对“answer=numbers*numbers1”的,它对我有效。在哪里分配
数字
numbers1
。如果int(用户答案==预期答案):-冒号被认为是无效语法?如果int(用户答案==预期答案:
,则应该是
。你自己试着调试一下。@ChuckLoganLim:谢谢你的打字错误。
operators = {"+": operator.add, "-": operator.sub, "*": operator.mul, '/': operators.div}