2

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

(str) -> 布尔值

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
4

2 回答 2

6

观察:

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

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

更一般地说,有更好的方法来做你正在做的事情。可能像这样:

def valid_letter_sequence(abc):
    return not (set(abc) - set('AEIOU'))
于 2012-10-16T05:52:43.957 回答
1

您当然应该使用len()来查找abc. 另一个缺点count()是它需要再次扫描字符串。Python 已经知道长度,所以直接询问会更有效。

all允许函数在遇到不在“AEIOU”中的字符时立即返回。这称为短路评估

def valid_letter_sequence(abc):
    return all(x in "AEIOU" for x in abc)
于 2012-10-16T05:59:24.760 回答