鱼C论坛

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

[已解决]第005讲求闰年小程序的问题求助

[复制链接]
发表于 2020-3-6 08:56:01 | 显示全部楼层 |阅读模式

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

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

x
大神好,该程序运行出来无论输入什么年份结果都输出平年,不知道哪里出了问题,恳请赐教,谢谢。
  1. temp=input('请输入一个年份:')
  2. a=int(temp)
  3. b=a/4
  4. c=a/100
  5. if (isinstance(b,int)) and (not isinstance(c,int)):
  6.     print('该年份是闰年')
  7. else:
  8.     print('该年份是平年')
  9.    
复制代码
最佳答案
2020-3-6 09:27:22
medoc 发表于 2020-3-6 09:21
我的思路是如果有余数,那求商的结果就不是整型,不知道这种思路对不对

你的思路是对的,不过需要改一下,改成这样:

  1. temp = input('请输入一个年份:')
  2. a = int(temp)
  3. b = int(a/4)
  4. c = int(a/100)
  5. d = int(a/400)
  6. if b == a / 4 and not c == a / 100 or d == a / 400:
  7.     print('该年份是闰年')
  8. else:
  9.     print('该年份是平年')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-6 08:59:35 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-3-6 10:22 编辑

代码思路有误,应是求余数
  1. temp=input('请输入一个年份:')
  2. a=int(temp)

  3. if a % 400 == 0 or (a % 100 != 0 and a % 4 == 0):
  4.     print("YES!")
  5. else:
  6.     print("NO!")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 09:15:12 | 显示全部楼层
你这是求商而不是求余数啊。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-6 09:16:55 | 显示全部楼层
qiuyouzhi 发表于 2020-3-6 08:59
代码思路有误,应是求余数

感谢大神赐教!但还是有点不明白,我的代码中如果结果有余数,那not isinstance(c,int)的结果应该是true,按理也是可以执行下去的,这样想对吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 09:21:15 | 显示全部楼层
medoc 发表于 2020-3-6 09:16
感谢大神赐教!但还是有点不明白,我的代码中如果结果有余数,那not isinstance(c,int)的结果应该是true ...

python 除出来的结果永远是浮点型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-6 09:21:37 | 显示全部楼层
墨羽岚 发表于 2020-3-6 09:15
你这是求商而不是求余数啊。。。

我的思路是如果有余数,那求商的结果就不是整型,不知道这种思路对不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 09:22:06 | 显示全部楼层
medoc 发表于 2020-3-6 09:16
感谢大神赐教!但还是有点不明白,我的代码中如果结果有余数,那not isinstance(c,int)的结果应该是true ...

除非用//地板除法,否则
Python除法的结果永远都是浮点数(5.0等等)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 09:24:25 | 显示全部楼层
medoc 发表于 2020-3-6 09:21
我的思路是如果有余数,那求商的结果就不是整型,不知道这种思路对不对

10/5=2.0
3/2=1.5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-6 09:26:54 | 显示全部楼层
一个账号 发表于 2020-3-6 09:21
python 除出来的结果永远是浮点型

噢,原来如此!谢谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 09:27:22 | 显示全部楼层    本楼为最佳答案   
medoc 发表于 2020-3-6 09:21
我的思路是如果有余数,那求商的结果就不是整型,不知道这种思路对不对

你的思路是对的,不过需要改一下,改成这样:

  1. temp = input('请输入一个年份:')
  2. a = int(temp)
  3. b = int(a/4)
  4. c = int(a/100)
  5. d = int(a/400)
  6. if b == a / 4 and not c == a / 100 or d == a / 400:
  7.     print('该年份是闰年')
  8. else:
  9.     print('该年份是平年')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-6 09:27:29 | 显示全部楼层

明白了!原来是浮点型,谢谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-6 09:34:15 | 显示全部楼层
一个账号 发表于 2020-3-6 09:27
你的思路是对的,不过需要改一下,改成这样:

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

使用道具 举报

 楼主| 发表于 2020-3-6 09:36:04 | 显示全部楼层
qiuyouzhi 发表于 2020-3-6 09:22
除非用//地板除法,否则
Python除法的结果永远都是浮点数(5.0等等)

好的,非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 10:21:06 | 显示全部楼层
qiuyouzhi 发表于 2020-3-6 08:59
代码思路有误,应是求余数

小错误:
if a % 400 == 0 or (a % 100 == 0 and a % 4 == 0):
应该为:
if a % 400 == 0 or (a % 100 != 0 and a % 4 == 0):
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 10:22:54 | 显示全部楼层
物火卿腾 发表于 2020-3-6 10:21
小错误:
if a % 400 == 0 or (a % 100 == 0 and a % 4 == 0):
应该为:

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-1 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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