如果我理解这个问题,你真正想要的是:
if len(BestX) != 1 or len(starcount) != 1:
x=cat
else:
x=dog
您的代码的唯一主要问题是您将BestX
自身与进行比较1
,而不是其长度,并且列表永远不会等于1
.
同时,您的两个条件并未涵盖整个空间。如果其中一个值为 1,而另一个不是,则这两个条件都不成立,我认为这不是您想要的。
但我不知道你真正想要什么,因为你的问题是矛盾的。我会把你的英语翻译成代码,希望这足以让你继续前进:
如果任一列表中有超过 1 个项目,我不想将变量 x 定义为“cat”。
…大概意思是您确实想将其定义为dog
?看起来是这样的:
if len(BestX) > 1 or len(starcount) > 1:
x=dog
但是,如果两个列表中只有一项(同时),则 x 应定义为“狗”。
…我认为这应该是另一种情况的补充,在这种情况下,它只是:
else:
x=dog
... 或者您可能想知道两个列表中是否总共有 1 个项目?
elif len(BestX) + len(starcount) == 1:
x=dog
……这意味着在其他情况下(例如,每个列表中恰好有 1,或者每个列表中有 0)你最终会得到x
undefined?
另请注意,您的描述在两种情况下都设置x
为dog
(或者至少在一种情况下是“不猫”,在另一种情况下是“狗”),这看起来很愚蠢。
您可能想知道为什么 Python 允许您将列表与 1 进行比较,而这种比较毫无意义。好吧,Python 通常允许您询问两个完全不相关类型的项目是否相等,并且总是回答它们不相等。如果你尝试使用>
而不是!=
,你会得到一个TypeError
(在 Python3 中——在 Python 2 中,你曾经得到一个一致但任意且无意义的答案)。