我有一大堆措辞数字作为问题,如果一轮中的问题数不是10,则需要将它们添加到另一轮中,因为上一轮的错误答案被添加到第二轮。我可以将问题添加到第2轮,但如何将问题与单独列表中的答案相匹配?或者我可以将它们放在同一个列表中吗?
extraquestions=[]
extraanswers=[]
q30='two thousand and two'
a30='2002'
extraquestions.append(q30)
extraanswers.append(a30)
x = len(round2questions)
while x != 10:
round2questions.append(extraquestions[random.randint(0,18)])
我还有19个额外的问题
答案 0 :(得分:1)
最好将每个问题分组并用元组进行分组,例如,您将拥有extraquestions = [('three',3),('twelve',12),...,('two thousand and two',2002)]
。然后,您可以将(question,answer)
对添加到round2questions
列表中。
否则,如果您希望保留两个单独的列表,我猜您可以将随机索引保存到变量中以获取问题和答案。顺便说一句,你不应该在循环条件中使用变量x
,因为它不会刷新"刷新"每个append
。
while len(round2questions) != 10:
i = random.randint(0,18)
round2questions.append(extraquestions[i])
round2answers.append(extraanswers[i])
答案 1 :(得分:1)
我不喜欢while循环,没有任何while循环可以做到for循环不能做得更好。
您可以通过将while循环更改为
来节省一些麻烦for x in range(9):
让我解释为什么这更好。 while循环对你的例子有好处,但是当你开始进入更多细节时,循环有问题,他们可能永远不会结束。使用for循环,你会给出一个特定的中断条件,除非你的断点是len(someList)并且你增加了列表,否则它总会在某个时刻得到满足。 x将在循环结束时以0递增1开始,当x达到10时循环结束。
如果您使用
while len(someList) != 10
如果列表的长度从未为10,该怎么办?然后循环永远不会结束。 for循环以增量方式工作,while循环在布尔逻辑中工作。主要是说明循环:
while True:
if "some variable" == "some condition":
break
else:
"perform a task"
答案 2 :(得分:0)
嗯。这就是我将你的问题放在一起的方式:
1)你有一些措辞和答案:
round1questions=["two thousand and two", "one thousand and one"] # and more
round2answers=["2002", "1001"] # and more
2)根据我对你的问题的理解,在每一轮中,都会询问TEN问题,并提出TEN答案...... 3)如果任何问题得到错误答案,则在另一轮中再次询问错误回答的问题。
所以这是我解决问题的方法:
questions=["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
answers=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
ans_correct=[None, None, None, None, None, None, None, None, None, None]
#You can use this method to add "None" to the ans_correct list if you have many questions
#and you're too lazy to write so many "None"s.
'''
ans_correct=[]
for each in questions:
ans_correct.append(None)
'''
while (False in ans_correct) or (None in ans_correct):
for each in questions:
if ans_correct[questions.index(each)]!=True:
ans=str(input("What is the numerical form of %s?" %(each)))
if ans==answers[questions.index(each)]:
print("Correct!")
ans_correct[questions.index(each)]=True
else:
print("Wrong!")
ans_correct[questions.index(each)]=False
基本上,上面的代码会一直问你问题,直到所有的答案都是正确的。如果错误地回答了任何问题,将再次询问他们。