使用随机方程在python中进行数学测验。我不知道如何阻止程序两次问同样的事情? 程序从加,减或乘的列表中提出十个问题,每个问题都使用随机数。我已经设法让这十个问题随机,但我不知道如何阻止它两次选择相同的两个数字?例如,它会为一个问题选择1 + 3,但之后会多次提出相同的问题。这是代码:
import random
#Asks for name
name = input("What's your name?")
#Stops user from entering invalid input when entering their class
classchoices = ["A","B","C"]
classname = input("What class are you in?")
while classname not in classchoices:
classname = input("Not a valid class, try again:")
print(name, ",", classname)
print("Begin quiz!")
questions = 0
def add(a,b):
addQ = int(input(str(a) + "+" + str(b) + "="))
result = int(int(a) + int(b))
if addQ != result:
print ("Incorrect!", result)
else:
print("Correct")
a = random.randint(1,12)
b = random.randint(1,12)
def multiply(a,b):
multQ = int(input(str(c) + "X" + str(d) + "="))
results = int(int(c) * int(d))
if multQ != results:
print ("Incorrect! The answer is", results)
else:
print("Correct")
c = random.randint(1,12)
d = random.randint(1,12)
def subtract(a,b):
subQ = int(input(str(e) + "-" + str(f) + "="))
resultss = int(int(e) - int(f))
if subQ != resultss:
print ("Incorrect! The answer is", resultss)
else:
print("Correct")
e = random.randint(1,12)
f = random.randint(1,12)
while questions in range(10):
Qlist = [add, subtract, multiply]
random.choice(Qlist)(a,b)
questions += 1
if questions == 10:
print ("End of quiz")
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:1)
这里的问题是您在程序开始时生成随机数,但每次询问时都不会重新生成它们:add
函数将始终使用a
和{{1 }},b
将始终使用multiply
和c
,而d
将始终使用subtract
和e
进行所有相应的计算,其价值永远不会改变。
此外,您输入的参数对f
和multiply
没有任何价值,因为您只是忽略它们并分别使用subtract
和c, d
而没有注明输入的参数。
为了解决这两个问题,我会在e, f
循环中随机生成数字,并使函数使用正确的输入参数进行计算。
此外,while
迭代有点冗余,简单while
没有额外的位更直接。因此for questions in range(10)
变量无用。
考虑到所有这些,这里是重写的代码。
questions
可以通过创建一个管理打印和检查结果的函数来进一步改进程序,该函数取决于第三个参数,该参数指示它应该执行什么操作。
答案 1 :(得分:0)
对于您提出的每个问题,您可以将其添加到一组" ask_questions"并使用"在"测试是否已被询问的方法,如果是,则生成新问题。
不确定它是否是最有效的方法,但它绝对有效,并且足以满足您的小应用。