我一直在尝试制作一个计算某人年龄的程序,但有人告诉我我做错了什么。最初我有
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"]
相同。
这些语句之间存在差异,但它们都会产生True
或False
,并且都会为完全相同的mothInput
值返回相同的输出。
您可以在Python交互式解释器中尝试这些语句的作用
>>> monthInput = "1"
>>> monthInput == "january" or monthInput == "1"
True
>>> monthInput in ["january", "1"]
True
等等。
如果你真的想深入研究这一点,最好的方法是使用一个集合:
monthInput in {'january', '1'}
因为集合成员身份测试需要恒定的成本(与集合的大小无关),而链接or
语句或使用列表进行测试需要线性成本(需要测试的元素越多,所需时间就越长)。