python-3.x - Python3 中的条件语句
问题描述
使用给定的代码,对于输入 2100,输出应为 False。但函数返回 True
def is_leap(year):
if (year%4==0 & year%100==0 & year%400==0):
leap = True
else:
leap = False
# Write your logic here
return leap
year = int(input())
print(is_leap(year))
当我将代码更改为(条件结构中的更改:更改(year%4==0 & year%100==0 & year%400==0)
为((year%4==0 & year%100==0) & (year%400==0))
)时:它返回 False(这是预期的)。为什么会这样?
def is_leap(year):
if ((year%4==0 & year%100==0) & (year%400==0)):
leap = True
else:
leap = False
# Write your logic here
return leap
year = int(input())
print(is_leap(year))
解决方案
&
是按位与,and
而是逻辑与。
False 计算为 0,True 计算为 1。因此,执行按位和布尔运算符是合法的,但可能不会得到正确的答案。
推荐阅读
- python - Google Colab:是否可以加载外部数据集以不使用 Google 驱动器空间?
- python - 执行 Python 模块而不安装它
- c - 我想知道这段代码中所有输出之间的区别是什么?
- android - 应用程序在后台时如何在活动内创建自定义通知预览
- javascript - 在移动设备上实现“更少”时仅触摸一次移动火力
- java - DatagramSocket 和 DatagramChannel 有什么区别?
- amazon-cloudformation - 我们如何在(cloudformation)中为aws粘合作业配置数据源(S3)和数据目标(Redshift集群)
- c# - 带有 ML.NET 的 SSA 预测返回奇怪的结果
- vue.js - NuxtJS 页面被创建了两次
- java - 用于插入学生详细信息的休眠应用程序