0

False文字列内で文字「e」を検索し、文字列内で「e」が見つかった場合に戻り、「e」が見つからなかった場合に返す次のコードがありますTrue

def has_no_e(word):
    for letter in word:
        if letter == 'e':
            return False
        return True

私の理解によると、forループは文字にword1つずつアクセスし、設定した条件に対してチェックします。if letter == 'e'

プログラムを実行するたびに、何らかの理由で for ループが最初の文字だけをチェックしているようです!

したがって、で関数を呼び出すと、has_no_e('dde','e')結果は return になりTrueます。しかし、それを切り替えると元has_no_e('edd','e')に戻りますFalse

x86 Windows 7 Ultimate マシンで Python 2.7.3 を実行しています...ありがとう

4

3 に答える 3

7

他の人はあなたのエラーを指摘していますが、全体の機能は非常に複雑です。あなたはこれを行うことができます:

def has_no_e(word):
    return 'e' not in word
于 2012-04-23T10:58:17.673 に答える
3
return True

はforループの本体の内側にあるため、最初の文字がそうであるかどうかを確認した後、すぐに実行されます'e'(最初の文字がそうでない場合は、e戻りFalseます)。

于 2012-04-23T10:46:06.757 に答える
3

あなたreturnは間違ってインデントされています。(と同じレベルにfor)インデントを解除すると、機能します

于 2012-04-23T10:46:52.493 に答える