来自exorcism.io的pangram问题,python跟踪,为什么我的解决方案不起作用?

时间:2020-04-12 08:01:45

标签: python pangram

def is_pangram(sentence):
    alf = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    sentence = sentence.lower()
    for x in alf:
        if x not in sentence:
            return False
        else:
            return True

我的代码在每种情况下都无法返回True。

我在exercism.io上使用了指导模式,但是python跟踪被超额订阅,并且仅提供有关主要练习的反馈。

我希望这里的python向导可以指出我的错误。非常感谢。...

1 个答案:

答案 0 :(得分:0)

任务是检查句子是否包含字母的所有个字母。因此,当您发现句子中没有的第一个字母时,可以确定情况不是(strong>不是)(即return false),则无法说明相反的情况(即return true),直到您检查了所有个字母。

def is_pangram(sentence):
    alf = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    sentence = sentence.lower()
    for x in alf:
        if x not in sentence:
            return False
    return True

附录: 还有一个仅使用python的,鲜为人知且很少使用的for/else语言功能see docsfor循环可能有一个else子句,当循环“正常退出”时会调用该子句”(即不会因breakreturn或异常而提前停止)。这使以下代码成为可行的替代方案。请注意,与OP代码相比,else子句的缩进不同。

def is_pangram(sentence):
    alf = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    sentence = sentence.lower()
    for x in alf:
        if x not in sentence:
            return False
    else:
        return True