鱼C论坛

 找回密码
 立即注册
查看: 1629|回复: 7

[已解决]关于零基础学习python第五节课课后练习做一个判断闰年平年的

[复制链接]
发表于 2018-1-16 20:39:34 | 显示全部楼层 |阅读模式

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

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

x
我自己的代码

我自己代码

我自己代码
然后永远是平年,后面终于发现了问题一个/就算整除也是会保留一位小数0的,比如100/25就会等于4.0,然后百度了一下要用//就会去掉这个.0 但是当我把所有的/变成//就变成了结果永远是闰年,这个结果我也猜到了 永远不会有小数,我也不是装逼硬要用isinstance,因为这节课学的,但是老师的标准答案是这个 QQ图片20180116203054.png 我想用isinstace()这个函数就没办法实现吗
最佳答案
2018-1-16 21:17:26
你这里关键的问题是要保证能被4整除,所以判断类型是不是结果是不是int反而不是最方便,最方便的是用模运算,直接取除以4的余数是不是等于0,例如2000 % 4 ==0 直接这样就好了。
至于isinstance, 在这里不合适使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-16 21:11:52 | 显示全部楼层
  1. while(True):
  2.     n = input('please input a number:')

  3.     if n.isdigit() == False:
  4.         print('input error')
  5.         continue
  6.     i=int(n)
  7.     if i%4!=0:
  8.         print(n+'不是闰年')
  9.     elif i%100==0 and i%400!=0:
  10.         print(n+'不是闰年')
  11.     else:
  12.         print(n+'是闰年')
复制代码


先附上我的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-16 21:15:01 | 显示全部楼层
本帖最后由 zero月蚀的假面 于 2018-1-16 21:31 编辑

①//符号你可以简单的记为小数点想左移动一位,例如:100//8=12
②isinstance(x,int)一般用来判断数据类型的
③建议你用%求余数求方便些,例如:2000%400==0
  1. temp = input('输入一个年份:')
  2. while not temp.isdigit():
  3.     temp =input('输入错误类型,请重新输入一个整数:')
  4. year = int(temp)
  5. if year%4 == 0 and year%100 != 0:
  6.     print('是闰年')
  7. else:
  8.     if year%400 == 0:
  9.         print('是闰年')
  10.     else:
  11.         print('不是闰年')
复制代码

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

使用道具 举报

发表于 2018-1-16 21:17:26 | 显示全部楼层    本楼为最佳答案   
你这里关键的问题是要保证能被4整除,所以判断类型是不是结果是不是int反而不是最方便,最方便的是用模运算,直接取除以4的余数是不是等于0,例如2000 % 4 ==0 直接这样就好了。
至于isinstance, 在这里不合适使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-16 21:20:28 | 显示全部楼层
至于小甲鱼为何不用%运算,是因为刚讲到这里的时候还没教%运算,所以他用 year /400 == int(year/400) 来间接判断余数是否为0,等下个视频学了%会让重新优化这个代码的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-16 21:24:23 From FishC Mobile | 显示全部楼层
isinstance是判断数据类型,而题目的要求是整除啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-16 23:06:28 | 显示全部楼层

你这是非要拿光剑削苹果啊

/的结果一定是float //的结果一定是int
逻辑就错了 不用纠结非要用这个函数了 重点是不是整数 应该判断余数 用取模
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-17 11:19:31 | 显示全部楼层
本帖最后由 冰封雪舞 于 2018-1-17 11:20 编辑

isinstance 是判断某某是否整数类型数值的函数,而不是判断是否整除的函数,你之所以用isinstance函数是因为你所想到判断整除的方法就是判断得数是否是整数,但是用/除完的数肯定不是整数型,而是浮点型,所以用/搭配isinstance函数来判断是否整除这个思路是不对的。你可以换成别的方法来判断,或者你自己做一个函数来让它如果自己判断如果是整除那么得数是整数型数值,然后搭配isinstance,不过既然你的函数都能判断是否整除了,那么直接用哪个函数就好了,也就没必要搭配isinstance了,所以靠isinstance检测得数是否是整数来判断是否整除不合适。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 19:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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