Python 3.x 比较两个列表时出现问题

Python 3.x 比较两个列表时出现问题,python-3.x,Python 3.x,我想接受用户的输入,给我一个ID。获得ID后,我应该检查连接到ID的答案是否与已经给出的正确答案匹配。如果他们这样做,我应该打印一个“+”,否则打印一个“”。 这与我的第一个问题类似,但不幸的是,我仍然没有真正理解这个问题,在整个测试过程中,我遇到了两个不同的错误,一个是列表超出范围,另一个是字符串索引必须是整数。我的正确答案在一个列表中,只包含一个元素,我不知道如果不在列表中,而只是一个连接到变量的字符串,是否更容易。correct_-answer=“bcccdbbcdaaa”或correct

我想接受用户的输入,给我一个ID。获得ID后,我应该检查连接到ID的答案是否与已经给出的正确答案匹配。如果他们这样做,我应该打印一个“+”,否则打印一个“”。 这与我的第一个问题类似,但不幸的是,我仍然没有真正理解这个问题,在整个测试过程中,我遇到了两个不同的错误,一个是列表超出范围,另一个是字符串索引必须是整数。我的正确答案在一个列表中,只包含一个元素,我不知道如果不在列表中,而只是一个连接到变量的字符串,是否更容易。correct_-answer=“bcccdbbcdaaa”或correct_-answer=[“BCCCDBBBBCDAAA”]。另一个列表,答案由一个长列表组成,子列表如下所示,['AB123','bxcdbbacadbc']。在我的例子中,我输入“AB123”作为我的选择

第三部分进行了评述

user_choice = input("Provide an ID")
print(correct_answer,"(a helyes megoldás)")
for line in answers:
    if user_choice == line[0]:
        for index in line[1]:
            if line[1][index] == correct_answer[index]:
                print("+", end="")
            else:
                print(" ", end="")
我的预期输出是将加号放在正确答案下面,在不匹配时留下空格


但是我得到了错误。如果有人能在比较索引时解释问题以及为什么会出现问题,这将意味着很多。

使用此
作为第[1]行中的索引:
索引是第[1]行中存在的元素,而不是索引值

有关
范围
,请参见下面的代码可以帮助您

for index in range(0, len(line[1])):
     if line[1][index] == correct_answer[index]:
         print("+", end="")
     else:
         print(" ", end="")

这两行没有多大意义:

        for index in line[1]:
            if line[1][index] == correct_answer[index]:
您将变量命名为
索引
,但更准确的名称是
字符

Zip可能是解决这一问题的最简单、最具吸引力的方法:

        for ans_ch, corr_ch in zip(line[1], correct_answer):
            if ans_ch == corr_ch:

或者,您可以对范围内的i(len(第[1]行))使用
,然后使用
i

进行索引。非常感谢,它与可选选项一起工作,但我将检查更具python风格的选项,只是第二个似乎更容易。