Python 布尔运算符

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

我想知道一年是否是闰年 我写了这段代码,但我不明白为什么它会工作,当我输入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
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。基本上我想命令我的手术。