如何使用 while 循环比较两个列表

How to compare two lists with a while loop

我正在尝试制作一个脚本,该脚本接受一个答案并将其附加到一个新列表,然后检查新列表是否与另一个列表相同。当这些列表相同时,while 循环应该会中断。

注意:每道题不要重复。

这是我的代码

import random 

questions = ['a','b','c','d','e']

answered_q = []

while len(answered_q) < len(questions):
    question = random.choice(questions)
    answered_q.append(question)
    raw_input = str(input(question + ": "))
    if sorted(questions) == sorted(answered_q):
        break

执行时我仍然收到随机问题,但是当列表具有相同的内容时,代码不会中断

输出 :

['b','c','b,'d','d']

如果有人能帮忙就太好了! 提前致谢!

我认为您真正想要做的只是在要添加的元素不存在的情况下追加到新列表中,因此请为此添加一个检查。

while len(answered_q) < len(questions):
    question = random.choice(questions)
    if question not in answered_q:
        answered_q.append(question)
        raw_input = str(input(question + ": "))
        if sorted(questions) == sorted(answered_q):
            break

当然,在这种方案下,即使没有最后一个 if 语句,循环也应该结束,因为两个列表的长度将在两个排序列表相等时相等。

首先,您得到的是随机问题(因此是排序),但您是在与一组排序进行比较 [a,b,c,d]

要用您当前的实现解决这个问题,请使用集合 - { "a", "b", "c", "d" }

尽管就我个人而言,我只是 pop 从一个列表到另一个列表,循环 len(questions) > 0,这保证您不会多次收到问题。