問題を理解している場合、実際に必要なのは次のとおりです。
if len(BestX) != 1 or len(starcount) != 1:
x=cat
else:
x=dog
BestX
コードの唯一の大きな問題は、長さではなく、それ自体をと比較して1
いて、リストが と等しくならないこと1
です。
一方、2 つの条件はスペース全体をカバーしていません。値の 1 つが 1 で、もう 1 つがそうでない場合、どちらの条件も true にはなりません。これは、あなたが望むものではないと思います。
しかし、あなたの質問は矛盾しているので、あなたが実際に何を望んでいるのかわかりません。あなたの英語をコードに翻訳します。うまくいけば、それで十分です。
いずれかのリストに複数の項目がある場合、変数 x を「cat」として定義したくありません。
…おそらく、それを次のように定義したいという意味dog
ですか?これは次のようになります。
if len(BestX) > 1 or len(starcount) > 1:
x=dog
ただし、両方のリストに (同時に) 項目が 1 つしかない場合は、x を「犬」と定義する必要があります。
…これは、他のケースを補完するものであると思われます。その場合は、次のとおりです。
else:
x=dog
…または、2 つのリストを合わせて合計 1 つの項目があるかどうかを知りたいですか?
elif len(BestX) + len(starcount) == 1:
x=dog
…それ以外の場合 (たとえば、各リストに正確に 1 がある場合、または各リストに 0 がある場合) はx
未定義になるということですか?
x
また、あなたの説明は両方の場合に設定されていることに注意してくださいdog
(または、少なくとも一方の場合は「猫にならないように」、もう一方の場合には「犬に」)、これはばかげているようです。
Python では、リストを 1 と比較しても意味がないのに、なぜリストを 1 と比較できるのか疑問に思われるかもしれません。Python では、通常、まったく関係のない型の 2 つの項目が等しいかどうかを尋ねることができ、常に等しくないと答えるだけです。>
の代わりに を使用しようとすると!=
、TypeError
(Python3 では — Python 2 では、一貫した、しかし恣意的で意味のない答えが得られていました) が得られます。