鱼C论坛

 找回密码
 立即注册
查看: 2551|回复: 11

[已解决]【Python新手求助】关于判断给定年份是否闰年

[复制链接]
发表于 2020-2-5 14:31:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
temp = input('请输入一个年份:')
while not temp.isdigit():
    temp = input("抱歉,您的输入有误,请输入一个整数:")

year = int(temp)
if year/400 == int(year/400):
    print(temp + ' 是闰年!')
else:
    if (year/4 == int(year/4)) and (year/100 != int(year/100)):
        print(temp + ' 是闰年!')
    else:
        print(temp + ' 不是闰年!')
关于这段代码的判断,除了这种方法还有没有别的简单方法可以用来判断?这种方法有点理解不来,像是
if year/400 == int(year/400)
这种的感觉找不到切入点去理解,虽然我知道是因为如果不是整数两边结果就会不一样就会输出False。有没有其他的简单方法?能不能用isinstance()?如果可以,要怎么用?
最佳答案
2020-2-5 14:35:42
本帖最后由 一个账号 于 2020-2-5 15:05 编辑

用取运算符符"%",更简单:
year = input('请输入一个年份:')

while not year.isdigit():
    year = input("抱歉,您的输入有误,请输入一个整数:")

year = int(year)

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print(year, '年是闰年!')
else:
    print(year, '年不是闰年!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-5 14:31:51 | 显示全部楼层
用这种方法感觉就像是在背一样,没有真正理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 14:35:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 一个账号 于 2020-2-5 15:05 编辑

用取运算符符"%",更简单:
year = input('请输入一个年份:')

while not year.isdigit():
    year = input("抱歉,您的输入有误,请输入一个整数:")

year = int(year)

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print(year, '年是闰年!')
else:
    print(year, '年不是闰年!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-5 14:45:04 | 显示全部楼层
这样不太好理解,可以按照 3 楼的方法用取余运算符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 14:52:52 | 显示全部楼层
temp = input("请输入一个年份:")
while not temp.isdigit():
    temp = ("您的输入有误,请重新输入一个整数:")

year = int(temp)
if (year/4) == int(year/4) and (year/100) == float(year/100):
    print(temp +"年是普通闰年.")
if (year/100) == int(year):
    print(temp +"年是世纪闰年.")
为什么在拼接字符串的时候用temp可以正常拼接,而用year却不行?
temp = input("请输入一个年份:")
while not temp.isdigit():
    temp = ("您的输入有误,请重新输入一个整数:")

year = int(temp)
if (year/4) == int(year/4) and (year/100) == float(year/100):
    print(year +"年是普通闰年.")
if (year/100) == int(year):
    print(year +"年是世纪闰年.")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 14:54:37 | 显示全部楼层
lzymm1 发表于 2020-2-5 14:52
为什么在拼接字符串的时候用temp可以正常拼接,而用year却不行?

。。。。。不好意思刚才没有刷新过来,没看见已经解决了就没发在另外的帖子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 15:02:15 | 显示全部楼层
一个账号 发表于 2020-2-5 14:35
用取余操作符"%",更简单:

取余运算符是怎么用的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 15:03:46 | 显示全部楼层
lzymm1 发表于 2020-2-5 14:52
为什么在拼接字符串的时候用temp可以正常拼接,而用year却不行?

因为字符串拼接是字符串与字符串,而 year 是整形,不能拼接
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 15:07:49 | 显示全部楼层
lzymm1 发表于 2020-2-5 15:02
取余运算符是怎么用的?

就是取余数,比如:
>>> 1 % 2     # 1 不能整除 2,余 1
1
>>> 5 % 2      # 5 除以 2 等于 2,余 1
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 15:18:29 | 显示全部楼层
一个账号 发表于 2020-2-5 15:07
就是取余数,比如:

懂了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 15:19:27 | 显示全部楼层
一个账号 发表于 2020-2-5 15:07
就是取余数,比如:

在除数大于被除数的时候,就不会进行运算而保留被除数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-5 16:22:21 | 显示全部楼层
lzymm1 发表于 2020-2-5 15:19
在除数大于被除数的时候,就不会进行运算而保留被除数?

不是,也是按照正常的除法运算。

1 除以 2,商 0 余 1。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 21:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表