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