2012-04-23 18 views
0

文字列内で文字 'e'を検索すると仮定すると、Falseが返されます。 'e'が文字列内に見つかった場合は、Trueが見つかりませんでした:検索機能が実際に検索されていません

私の理解あたりとして
def has_no_e(word): 
    for letter in word: 
     if letter == 'e': 
      return False 
     return True 

forループが一つword 1内の文字にアクセスすると、私はif letter == 'e'

私はプログラムを実行するたびにある、設定した条件に対してそれらをチェックし、 forループは最初の文字のみをチェックしているようです 何らかの理由で!

したがって、has_no_e('dde','e')で関数を呼び出すと、戻り値Trueが返されます。しかし、私の周りhas_no_e('edd','e')それを切り替えた場合、それはFalse

私は、x86のWindows 7の究極のマシン上のPython 2.7.3を実行しているよ...おかげ

答えて

3
return True 

は、forループの本体内で戻りますので、最初の文字が'e'であるかどうかをチェックした直後に実行されます(最初の文字がeでない場合はFalseが返されます)。

+0

ありがとうございました!それは役に立ちました – tamiromara

+0

それは大丈夫ですが、@DanielRosemanの答えを参照してくださいそれはホイールを再発明しないことをお勧めします:D – jamylak

3

returnは間違っています。 (forと同じレベルに)それを取り消し、それは動作します

+0

ありがとう。帰ってきたことが答えでした!それは愚かなものが学習することができる方法を驚くほどです:P – tamiromara

7

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

def has_no_e(word): 
    return 'e' not in word 
+0

niiiice。この種のプログラミング思考を開発するには時間がかかります。私はまだPythonとプログラミング一般には非常に新しいです。再度、感謝します。 – tamiromara

関連する問題