我目前正在python上创建一个测验程序。在random.choice选择每个问题后,我希望程序从列表中删除这个问题,这样就不会被问到两次。但该程序不会删除问题编号,因此仍可以再次选择。这是我的代码:
{{1}}
任何帮助将不胜感激。
答案 0 :(得分:4)
最好的方法是在原始列表中使用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")
答案 1 :(得分:0)
您可以使用list.remove(item)
从列表中删除项目。
import random
questionNumbers = [1,2]
questionChosen = random.choice(questionNumbers)
if questionChosen == 1:
questionNumbers.remove(questionChosen)
q1 = "Who is John Von Neumann?"
print(q1)
答案 2 :(得分:0)
我建议不要从列表中明确删除 - 实际上使用del很少见。最好只是弄清楚你想要提前循环的内容,然后循环遍历列表。您可以使用shuffle
模块中的random
随机排序问题编号,然后循环浏览随机列表:
from random import shuffle
x = [1,2,3,4]
shuffle(x)
for q_num in x:
print(q_num)