-1
def name(x):
    return x==('Jenson'or'Amra'or'McCay'or'Spinner'or'Jones')
print(name('Jenson'))
print(name('McCay'))

これが質問です:

「人の名前(「smith」、「jones」など)を入力として受け取る関数を記述します。この関数は、その名前がボード上の5人の名前の1つであるかどうかを確認する必要があります。5人名前は、「Jenson」、「Amra」、「McCay」、「Spinner」、および「Jones」です。関数に入力された名前がこれら5つの名前のいずれかである場合、関数はブール値Trueを返す必要があります。そうでない場合、関数はFalseを返す必要があります(入力タイプ、説明、およびテストケースを含むコメントを覚えておいてください)関数をテストして、機能することを確認します。」

ジェンソンをやっているとうまくいきますが、他の名前を入れると間違って出てきます。

4

4 に答える 4

4

このようにしてみてください、

def name(x):
    return x in ('Jenson', 'Amra' ,'McCay', 'Spinner','Jones')
于 2013-03-04T04:39:00.880 に答える
3

「長い」道はどうですか:

def check_name(x):
   names_to_check = ('Jenson','Amra','McCay','Spinner','Jones')
   for i in names_to_check:
       if i == x:
          return True
   return False

コードで起こっていることは次のとおりです。

x = 'Jenson'、これはあなたが渡したものだからです。

この行x == ('Jenson' or 'Amra' or 'McCay' or 'Jones')は実際にはブール演算であり、その結果は常にJensonです。

ブール演算は真理値をチェックし、Pythonの空でない文字列は常にTrueです。つまり、実際に('Jenson' or 'Amra' or 'McCay' or 'Jones')言っているのは次のとおりです。

JensonまたはAmraまたはMcCayまたはどちらかJones一方True、値をそれに設定します」。

Jensonは最初の項目であり、その(つまり、空の文字列ではない)ためTrue、式全体はに等しくなりますJenson(これが、渡した場合にのみ機能する理由ですJenson)。

簡単な例:

>>> ('a' or 'b' or 'c')
'a'
>>> ('b' or 'a' or 'c')
'b'
>>> ('' or '' or 'a')
'a'
>>> (0 or 0 or 1)
1
>>> (False or False or True)
True

最後の3つは、同じ比較を示しています。2つの空の文字列とをチェックしています'a'。空の文字列はFalsePythonにあるため、「True」であるのは'a'、と比較0した場合と同じように返されるものだけ1です。

于 2013-03-04T04:43:22.633 に答える
0

構文x==('Jenson'または'Amra'または'McCay'または'Spinner'または'Jones')が間違っています。それはアデムが言うようでなければなりません。または多分

def name(x):
    return x=='Jenson' or x== 'Amra' or x  == 'McCay' or x == 'Spinner' or x == 'Jones'
于 2013-03-04T04:48:35.150 に答える
0

何が起こっているのかは('Jenson'or'Amra'or'McCay'or'Spinner'or'Jones')、最初に評価され、に評価されることだと思い'Jenson'ます。括弧内にあるため、前に計算さxれたものも考慮されます。次にx、に対して等しいかどうかがチェックされますJensonx in...Ademの回答のように、より高度な構文を使用するかreturn x == 'Jenson' or x == 'Amra' or x == 'McCay'...、各比較が次々に実行されるように使用する必要があります。

于 2013-03-04T04:49:25.407 に答える