2

True文字列(フレーズ)に母音しかない場合は(私にとっては)言うべきです。別段言いFalseます。False(x >= x) は常にを返すため、常に が返される理由がわかりませんTrue。このクエリの解決策を確認してくれた人に感謝します。

(文字列) -> ブール

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渡すと、文字列の長さよりも 1 つ長くなります (文字のすべてのペアの間だけでなく、両端にも空の文字列が見つかるため)。なぜあなただ​​けを使用しないのですlen(abc)か?

より一般的には、あなたがしていることを行うためのより良い方法があります。多分これのように:

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

len()もちろん、 の長さを見つけるために使用する必要がありabcます。のもう 1 つの欠点はcount()、文字列を再度スキャンする必要があることです。Python はすでに長さを知っているので、単にそれを要求する方が効率的です。

all「AEIOU」にない文字に遭遇するとすぐに関数を返すことができます。これは、短絡評価として知られています。

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