Python 布尔运算符
我想知道一年是否是闰年 我写了这段代码,但我不明白为什么它会工作,当我输入1996时,它是“true”,当我输入1700时,它是“false”,但是为什么“and”函数在1996年不返回false呢?它不应该检查左侧并返回“false”吗?注:我与anaconda3.2020-02合作:Python 布尔运算符,python,jupyter-notebook,Python,Jupyter Notebook,我想知道一年是否是闰年 我写了这段代码,但我不明白为什么它会工作,当我输入1996时,它是“true”,当我输入1700时,它是“false”,但是为什么“and”函数在1996年不返回false呢?它不应该检查左侧并返回“false”吗?注:我与anaconda3.2020-02合作: bool(((x%100 == 0) * x%400 == 0) and x%4 == 0 ) 我不知道你为什么要使用*。你想要的表达是 x%400==0或(x%100!=0和x%4==0) (bool是i
bool(((x%100 == 0) * x%400 == 0) and x%4 == 0 )
我不知道你为什么要使用
*
。你想要的表达是
x%400==0或(x%100!=0和x%4==0)
(
bool
是int
和True==1
的一个子类,因此和有点像和,但是True*True
是1
,而不是True
,True+True
是2
,不是True
,甚至是1
。不要使用布尔值的算术。)用你自己的话来说,你希望*
在这里做什么?您是否尝试检查子表达式的结果,以查看它们是否符合您的要求?例如,((x%100==0)*x%400==0)
的结果是你所期望的吗?我对编程基本上是新手。我试着检查,结果并不是我所期望的,我有点沮丧,只是尝试了任何东西,不知怎么的,它起了作用。我希望它做的是检查一年是否以00结束,如果是的话,还要检查它是否除以400而没有余数。因此,如果前半部分(x%100==0)为真,那么它意味着一个“1”,所以我想检查它,如果不是,in将产生一个“0”,我将忽略除以400的部分。是的,这一行正是我应该写的,我一般不熟悉编码。我使用*是因为我认为如果x%100==0将产生一个0,那么我就不需要检查下一部分,即x%400==0,因为它将乘以0,得到一个0。基本上我想命令我的手术。