に複数varaiblesを比較する文はそう関係なく、私はこれらを試してください何それだけでタプルと評価され、誰かがこの1列
1列
答えて
x, y, z == "no no yes"
で私を助けることができる、すべての文字列を出力しないstaments
if (x,y,z == "no no yes"):
print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
if (x,y,z == "no yes no"):
print ("PERFECT SOLDOER DETECTED, REPORT TO US ARMY")
if (x,y,z == "yes no no"):
print ("LONER ROBOT DETECTED, DESTROY IMMEDIATELY")
if (x,y,z == "no yes yes"):
print ("THIS ROBOT HURTS HUMANS")
if (x,y,z == "yes yes no"):
print ("This robot is self destructive")
if (x,y,z == "yes no yes"):
print ("This robot disobeys orders")
if (x,y,z == "no no no"):
print ("YOU HAVE A PHYCOPATH ROBOT, DESTROY AT ALL COSTS")
場合場合3つの値の:x
、y
、及びz
かどうかを示すブール値(真/偽)値"no no yes"
に等しいです。これはゼロ以外の長さのタプルなので、それは真実なので、すべてif
の条件が成立します。
代わりに、その上(x, y, z) == ("no", "no", "yes")
を書いて。
(x,y,z == "no no yes")
これは期待どおりではありません。まず、複数の変数を同時に1つの文字列と比較することはできません。これを別々の小切手に分割する必要があります。
しかし、なぜあなたのコードの印刷には、すべての文字列をしますか?これは、Pythonを初めて使う人にとっては少し驚くかもしれません:Pythonのコンマはタプル要素を分けるので、x, y, z
は、3つの要素、すなわち、x
、y
、およびz
のタプルになります。タプルは文字列と決して等しくないので、なぜあなたのチェックはすべて成功していますか?
理由は==
オペレータがコンマよりも強く結合することです。あなたが実際に書いていることは、次のようなものです:(x, y, (z == "no no yes"))
。したがって、文字列に対してz
(と唯一の文字はz
)を比較し、その結果をタプルの3番目の値として入れます。 x
およびy
はそのままタプルの第1および第2の要素とする。
と非空のタプルはPythonでTrue
に評価することで起こります。そこで、以下では、常に動作します:あなたがチェックしているので
if x == "no no yes" or y == "no no yes" or z == "no no yes":
print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
を:
if (x, y, False):
print('Works')
あなたのコードを修正するために、前述したように、あなたは個別に各値に対する各変数をチェックする必要があります
if "no no yes" in (x, y, z):
print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
ヨ:平等、あなたはまた、逆に、ロジックとここin
演算子を使用することができますuは、次の質問から(ただ、他の方向に)これについての詳細を学ぶことができます:How do I test one variable against multiple values?
そして私はちょうどkindall’s answerから実現として、あなたはおそらく、あなたがそれぞれに対してチェック別個の文字列にこれらの文字列を分割したいです別途変数:
のx == yの== zは==「リテラル」 `あなたが探しているものかもしれ場合if x == "no" and y == "no" and z == "yes":
print ("REBEL ROBOT DETECTED, DESTROY IMMEDIATELY")
- 1. エイダ:1行1列
- 2. 1列
- 3. 1列
- 4. 1列
- 5. 参照列1列
- 6. 2列の値 - > 1列の値+ 1列のラベルのパンダ
- 7. データグリッド - 1列
- 8. デベックスTreeList 1列
- 9. バッシュ:1列
- 10. R:1列
- 11. パンダ:列の1
- 12. は1列
- 13. コピー1列
- 14. マージは、1列
- 15. が1列
- 16. 1列または2列?
- 17. 2列目のオーバーレイ列1
- 18. は1列目の2列
- 19. PostgresのSQL - 1列
- 20. ブートストラップ2行1列
- 21. ハッシングビット配列? 「(1、bitarray:
- 22. 1つの配列
- 23. :列数が行1
- 24. ハイチャート1列あたり1つの値
- 25. 列1の行1のエラー:AttValue: "or 'expected
- 26. json.decoder.JSONDecodeError:期待値:行1列1(CHAR 0)
- 27. 配列[beg [0]:end [0]、beg [1]:end [1]、...]
- 28. ファンシーインデクシングnumpy行列:1行に1要素
- 29. JasonReader.setLenient(true)1行1列の$ error
- 30. 配列インデックスアウト例外長= 1、インデックス= 1
' - これは比較演算子チェーン(のpythonで機能)を使用しています –