我的代码适用于docstring中的前两个示例,但它不适用于第三个示例。我希望第三个返回一个空列表,但我不知道如何。有人可以帮我解决这个问题吗?我想说如果两个列表中的str值相同但位于不同位置则返回'w',如果它们位于相同位置则返回空列表。
def find_colour_correct(answer, guess):
'''
(list, list) -> list
给定两个单字符strs列表返回'w'的列表 'w'的数量等于第二个列表中的str的数量 与第一个列表中的str相同,但位置不同。
>>> find_colour_correct(['d', 'c', 'b', 'a'], ['a', 'b', 'e', 'f'])
['w', 'w']
>> find_colour_correct(['c', 'd', 'e', 'f'], ['g', 'h', 'd', 'i'])
['w']
find_colour_correct(['a', 'b', 'c', 'd'], ['a', 'e', 'f', 'g'])
[]
'''
result = []
for char in guess:
if char in answer:
result.append('w')
return result
答案 0 :(得分:0)
我认为你只是错过了职位检查:
result = []
def find_colour_correct(answer, guess):
for x in range(len(answer)):
if answer[x] in guess and answer[x] != guess[x]:
result.append('w')
return result
答案 1 :(得分:0)
如果你有一个包含少量项目的列表,那么双循环可能会起作用并且不应该成为问题:
def find_colour_correct(answer, guess):
result = []
for index, char in enumerate(guess):
for index2, char2 in enumerate(answer):
if char == char2 and not index == index2:
result.append('w')
return result
或者如果你喜欢(可能太长)单行:
def find_colour_correct(answer, guess):
return ["w" for i, c in enumerate(guess) for i2, c2 in enumerate(answer) if c == c2 and not i == i2]