0

我一直在尝试制作一个计算某人年龄的程序,但有人告诉我我做错了什么。本来我有

if monthInput == "january" or "1":
    monthInput = 1
    validMonth = True

但显然,即使输入了“bob”,这也会使 validMonth 为真。有人告诉我,将第一行替换为

if monthInput in ["january", "1"]:

会成功的。但我也可以吗

if monthInput == "january" or monthInput == "1":

而不是那个?我只是想看看我所有的选择(我还在学习,所以这对未来有帮助)。

4

1 回答 1

1

是的,你也可以这样做monthInput == "january" or monthInput == "1"。从布尔逻辑的角度来看,这与monthInput in ["january", "1"].

这些语句之间存在差异,但它们都会产生Trueor False,并且对于完全相同的 . 值都返回相同的输出mothInput

您可以在 Python 交互式解释器中尝试这些语句的作用:

>>> monthInput = "1"
>>> monthInput == "january" or monthInput == "1"
True
>>> monthInput in ["january", "1"]
True

等等

如果你真的想深入研究这个,最好的方法是使用一个集合:

monthInput in {'january', '1'}

因为集合成员资格测试需要恒定的成本(与集合的大小无关),而链接or语句或使用列表进行测试需要线性成本(需要测试的元素越多,花费的时间就越长)。

于 2013-07-18T14:06:42.337 回答