寻找其他可能的方法来检查变量是否有意义



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

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

但显然,即使输入了"bob",也会使validMonth为True。有人告诉我,用取代第一条线路

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

会成功的。但是我也可以做吗

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

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

是的,您也可以执行monthInput == "january" or monthInput == "1"。从布尔逻辑的角度来看,这与monthInput in ["january", "1"]相同。

这些语句之间存在差异,但它们都会产生TrueFalse,并且都会为完全相同的mothInput值返回相同的输出。

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

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

等等。

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

monthInput in {'january', '1'}

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

最新更新