鱼C论坛

 找回密码
 立即注册
查看: 1689|回复: 14

[已解决]请教关于python 课后题 编写判定年份为闰年的程序的问题。

[复制链接]
发表于 2018-10-28 15:30:53 | 显示全部楼层 |阅读模式

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

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

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):  为什么是这样写的呢。year不是已经是整型了嘛。为什么 year/400  还要等于  int(year/400)呢。
最佳答案
2018-10-28 17:00:54
沈园晚醉 发表于 2018-10-28 16:53
我还是不明白,那year/400  自动判定为浮点型,int(year/400)是转换成整型。但是year/400 == int(year ...

没错啊,进而判断是否整除,因为使用了int函数之后小数点后的数字就会抹去,判断是否整除
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-10-28 15:37:08 | 显示全部楼层
不是哦,year/400 Python自动判定为浮点型,比如2000会返回5.0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-28 15:37:34 | 显示全部楼层
是判断是不是整除
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-28 16:53:10 | 显示全部楼层
Thomason 发表于 2018-10-28 15:37
不是哦,year/400 Python自动判定为浮点型,比如2000会返回5.0

我还是不明白,那year/400  自动判定为浮点型,int(year/400)是转换成整型。但是year/400 == int(year/400)  这一句是什么意思呢。是浮点型等于整型嘛?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-28 17:00:54 | 显示全部楼层    本楼为最佳答案   
沈园晚醉 发表于 2018-10-28 16:53
我还是不明白,那year/400  自动判定为浮点型,int(year/400)是转换成整型。但是year/400 == int(year ...

没错啊,进而判断是否整除,因为使用了int函数之后小数点后的数字就会抹去,判断是否整除
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-28 17:43:32 | 显示全部楼层
Thomason 发表于 2018-10-28 17:00
没错啊,进而判断是否整除,因为使用了int函数之后小数点后的数字就会抹去,判断是否整除

对对,我刚才试了一下,被整除和不被整除。谢谢解答。我还有一个问题。这一句 if (year/4 == int(year/4)) and (year/100 != int(year/100)):,为啥又变成了除以4了,后面的是除以100而且是不等于。不太理解呀。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-28 17:48:00 | 显示全部楼层
塔利班 发表于 2018-10-28 15:37
是判断是不是整除

谢谢谢谢,我刚才试了一下,也才明白为什么要这么写。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-29 19:44:40 | 显示全部楼层
能被400整除的称为世纪闰年,能被4整除但不能被100整除的称为普通闰年
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-30 15:55:59 | 显示全部楼层
maxiaoqianer123 发表于 2018-10-29 19:44
能被400整除的称为世纪闰年,能被4整除但不能被100整除的称为普通闰年

嗯啊,谢谢你啦。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-30 15:57:07 | 显示全部楼层
Thomason 发表于 2018-10-28 15:37
不是哦,year/400 Python自动判定为浮点型,比如2000会返回5.0

你好,我还有一个疑问,就是 print(temp + ' 是闰年!') 这行代码里,temp我换成了year后,报错了。为什么不能换成year啊。我刚才设想了一下,但是感觉都不对。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-31 13:19:01 | 显示全部楼层
沈园晚醉 发表于 2018-10-30 15:57
你好,我还有一个疑问,就是 print(temp + ' 是闰年!') 这行代码里,temp我换成了year后,报错了。为什 ...

year 是认定为数字,而temp 是由input 输入的字符串,只有字符串与字符串能够拼接,而数字不能与字符串进行拼接,如果要使用year的话请把+更改为,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-1 12:59:23 | 显示全部楼层
Thomason 发表于 2018-10-31 13:19
year 是认定为数字,而temp 是由input 输入的字符串,只有字符串与字符串能够拼接,而数字不能与字符串进 ...

好的,明白了,谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-3 22:22:53 | 显示全部楼层

year = input('请输入一个有效的年份:')
year = int(year)

if (year % 400 ==0) or (year % 4 ==0 and year % 100 != 0):
    print('你输入的年份:',year,'是闰年')
else:
    print("你输入的年份:",year,'不是闰年哦!')

#这样写和作业上面有什么不同吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-4 11:17:27 | 显示全部楼层
路过
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-4 11:47:20 | 显示全部楼层
股灰 发表于 2018-11-3 22:22
year = input('请输入一个有效的年份:')
year = int(year)

少了判断输入的是否有效
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-10 18:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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