3

単語と必要な文字列を受け取り、単語が必要なすべての文字を少なくとも 1 回使用する場合に True を返すこの関数を定義しました。これを実行すると、正しい出力が得られますが、「なし」も出力される理由がわかりません。

これが私のコードです:

 def uses_all(word, allused):
    boolean = False
    for e in allused:
        if e in word:
            boolean = True
        else:
            boolean = False
            break 
    print boolean 

print uses_all('facebook', 'd')

出力:

False
None

私がどこを間違えたかについてのコメントは高く評価されます。

4

3 に答える 3

7

あなたのプログラムbooleanは False である を出力するので、それがどこから来たのかがわかります。

関数が明示的に何も返さない場合、自動的に None を返します。

print uses_all('facebook', 'd')

返されるものを出力するように要求していuses_allますが、これは None です。したがって:

False
None

ところで、あなたの関数はより簡潔に次のように書くことができると思います

def uses_all(word, allused):
    return all(e in word for e in allused)

より効率的にすることもできますが、政府の仕事には十分なはずです。all関数は非常に便利です ( も参照) any

于 2012-09-17T19:57:35.743 に答える
5

uses_all()returnステートメントがないためです。関数から値を返す場合、もちろんそうでない限り、Noneの代わりに出力されますreturn None:)

于 2012-09-17T19:57:41.813 に答える
0

関数の結果を出力しますが、関数は何もしませんreturn(--> None)

結果を にしたい場合は、関数False Falseを追加return booleanします。

または、単一Falseで十分な場合はprint uses_all('facebook', 'd')、単に変更することもできますuses_all('facebook', 'd')

于 2012-09-17T19:57:20.080 に答える