鱼C论坛

 找回密码
 立即注册
查看: 1307|回复: 13

[已解决]零基础学python第五课作业判断是否闰年,下面这个为啥不对啊TAT

[复制链接]
发表于 2018-3-21 00:03:07 | 显示全部楼层 |阅读模式

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

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

x
如题,下面这个为啥不对啊TAT

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

year = int(temp)
if isinstance((year/400), int):
    print(temp + '是闰年!')
else:
    if (isinstance((year/4), int) and (not isinatance((year/100), int)):
        print(temp + '是闰年!')
    else:
        print(temp + '不是闰年!')
   
最佳答案
2018-3-21 08:45:32
本帖最后由 2289001949 于 2018-3-21 09:02 编辑
  1. temp = input('请输入一个年份:')
  2. while not temp.isdigit():
  3.     temp = input('抱歉,您的输入有误,请输入一个年份:')

  4. year = int(temp)
  5. if year%400==0:
  6.     print(temp + '是闰年!')
  7. elif year%4==0 and year%100!=0 :
  8.     print(temp + '是闰年!')
  9. elif year%4!=0:
  10.     str(temp)
  11.     print(temp + '不是闰年!')
复制代码

你完全可以用求余的方法来做的

python里  整数相除得到的是浮点型的
用shell试一下8/4  是得到2.0的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-21 00:04:31 | 显示全部楼层
大神们帮忙看一下,感谢感谢
  1. temp = input('请输入一个年份:')
  2. while not temp.isdigit():
  3.     temp = input('抱歉,您的输入有误,请输入一个年份:')

  4. year = int(temp)
  5. if isinstance((year/400), int):
  6.     print(temp + '是闰年!')
  7. else:
  8.     if (isinstance((year/4), int) and (not isinatance((year/100), int)):
  9.         print(temp + '是闰年!')
  10.     else:
  11.         print(temp + '不是闰年!')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 00:13:30 From FishC Mobile | 显示全部楼层
整数除法得到的总是浮点数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 00:16:07 | 显示全部楼层
if (isinstance((year/4), int) and (not isinatance((year/100), int)):

这一行代码最后少了一个反括号   ),在最后面加上一个反括号就好了。

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

使用道具 举报

发表于 2018-3-21 00:22:24 | 显示全部楼层
还有那个上面那个 冬雪雪冬 说的问题,这个代码本身 有问题
类似  if isinstance((year/400), int):这些条件永远为假
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 08:45:32 | 显示全部楼层    本楼为最佳答案   
本帖最后由 2289001949 于 2018-3-21 09:02 编辑
  1. temp = input('请输入一个年份:')
  2. while not temp.isdigit():
  3.     temp = input('抱歉,您的输入有误,请输入一个年份:')

  4. year = int(temp)
  5. if year%400==0:
  6.     print(temp + '是闰年!')
  7. elif year%4==0 and year%100!=0 :
  8.     print(temp + '是闰年!')
  9. elif year%4!=0:
  10.     str(temp)
  11.     print(temp + '不是闰年!')
复制代码

你完全可以用求余的方法来做的

python里  整数相除得到的是浮点型的
用shell试一下8/4  是得到2.0的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 14:01:44 | 显示全部楼层
2289001949 发表于 2018-3-21 08:45
你完全可以用求余的方法来做的

python里  整数相除得到的是浮点型的

试了您给的代码,最后显示的有问题。
Traceback (most recent call last):
  File "C:/Python27/005.03", line 2, in <module>
    while not temp.isdigit():
AttributeError: 'int' object has no attribute 'isdigit'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 14:45:35 | 显示全部楼层
没问题啊
你不会去shell那运行了吧?
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-21 22:54:49 | 显示全部楼层
冬雪雪冬 发表于 2018-3-21 00:13
整数除法得到的总是浮点数

原来是这样!昨天不管输什么都是不是闰年,感觉头发都掉了好几根
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-21 22:56:05 | 显示全部楼层
2289001949 发表于 2018-3-21 08:45
你完全可以用求余的方法来做的

python里  整数相除得到的是浮点型的

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

使用道具 举报

 楼主| 发表于 2018-3-21 22:57:07 | 显示全部楼层
Zmynx_2017 发表于 2018-3-21 00:16
if (isinstance((year/4), int) and (not isinatance((year/100), int)):

这一行代码最后少了一个反括号 ...

哇,真的,您好细心啊,太长了我打着打着就忘了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 11:41:27 | 显示全部楼层
我用户组不够  加不了好友呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 15:43:09 | 显示全部楼层
//可以用地板除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-24 17:34:02 | 显示全部楼层
2289001949 发表于 2018-3-24 11:41
我用户组不够  加不了好友呢

好的,没关系~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 12:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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