我目前正在用 python 创建一个测验程序。在 random.choice 选择每个问题后,我希望程序从列表中删除这个问题,这样它就不会被问两次。但是程序并没有删除题号,所以还是可以重新选择的。这是我的代码:
questionNumbers = [1,2]
questionChosen = random.choice(questionNumbers)
if questionChosen == 1:
del questionNumbers[questionNumbers.index(questionChosen)]
q1 = "Who is John Von Neumann?"
print(q1)
我们将不胜感激。
最好的方法是在您的原始列表中使用 random.shuffle
来更改项目位置。然后 pop
它们直到你的列表中没有更多的项目
例子:
import random
questionNumbers = [1,2,3,4]
random.shuffle(questionNumbers)
while questionNumbers:
print(questionNumbers.pop())
这每次都以随机顺序打印 1,2,3,4
。
稍微更详细的示例,问题和答案作为列表中的元组:
import random
questionNumbers = [("who killed Kennedy","Lee Harvey Oswald"),("Who starred in XXX","Vin Diesel")] # sorry for the bad Q&A
random.shuffle(questionNumbers)
while questionNumbers:
q,a = questionNumbers.pop()
print("right" if input("{} ?".format(q))==a else "wrong")
我是一名优秀的程序员,十分优秀!