我想接受用户的输入,请给我一个ID。取得ID后,我应该检查与ID相关的答案是否与已经给出的正确答案匹配。如果是这样,我应该打印一个“ +”,否则打印一个“”。 这类似于我的第一个问题,但是不幸的是我仍然没有真正理解这个问题,在整个测试过程中我遇到了两个不同的错误,其中一个是列表超出范围,另一个是字符串索引必须是整数。我的正确答案在一个仅包含一个元素的列表中,我不知道将其不包含在列表中是否更容易,而只是将一个字符串连接到变量是否更容易。 Correct_answer =“ BCCCDBBBBCDAAA”或correct_answer = [“ BCCCDBBBBCDAAA”]。另一个列表(答案)由一个长长的列表组成,具有类似以下的子列表['AB123','BXCDBBACACADBC']。在我的情况下,我输入“ 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="")
我的预期输出将加号放在正确答案的下面,当不匹配时留空格。
但是我得到了错误。如果有人可以在比较索引时解释问题以及为什么会有问题,这将有很多意义。
答案 0 :(得分:1)
使用for index in line[1]:
,index
是line[1]
中存在的元素,而不是索引值。
参见range
,下面的代码可以为您提供帮助。
for index in range(0, len(line[1])):
if line[1][index] == correct_answer[index]:
print("+", end="")
else:
print(" ", end="")
答案 1 :(得分:1)
这两行没有多大意义:
for index in line[1]:
if line[1][index] == correct_answer[index]:
您将变量命名为index
,但更准确的名称为character
。
Zip可能是摆脱这种麻烦的最简单,最Python化的方法:
for ans_ch, corr_ch in zip(line[1], correct_answer):
if ans_ch == corr_ch:
或者,您可以使用for i in range(len(line[1])):
,然后使用i
进行索引。