找到正确的颜色

时间:2017-10-24 00:57:00

标签: python python-3.x

我的代码适用于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 

2 个答案:

答案 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]