这是为什么str.count( '')≠(从str.count( 'A

2019-08-01 12:10发布

它(应该,对我来说,)说True如果只有字符串中的元音(短语); 说,否则False 。 我不明白为什么它总是会返回False的,因为(X> = X)总是返回True 。 我感谢任何人检查解决这个查询。

(STR) - > BOOL

def valid_letter_sequence(abc):

    valid_letters = abc.count('A') + abc.count('E') + abc.count('I') + abc.count('O') + abc.count('U')
    counted_letters = abc.count('')
    if valid_letters >= counted_letters:
        return True
    else:
        return False

Answer 1:

注意:

>>> 'abc'.count('')
4

通过一个空字符串count给你比字符串的长度多一个(因为它找到一个空字符串在两端以及每对字符之间)。 你为什么不只是使用len(abc)

更一般地,有更好的方法做,你在做什么。 也许就像这样:

def valid_letter_sequence(abc):
    return not (set(abc) - set('AEIOU'))


Answer 2:

当然,你应该用len()发现的长度abc 。 的另一个缺点count()的是,它需要重新扫描的字符串。 Python已经知道了长度,所以它更有效地自讨苦吃。

all允许的功能,只要遇到一个字符不是“AEIOU”返回。 这被称为短路评价

def valid_letter_sequence(abc):
    return all(x in "AEIOU" for x in abc)


文章来源: why is that str.count('') ≠ (from str.count('A') + str.count('B') + … + str.count('Z'))