灿烂的小雏菊 发表于 2020-6-10 21:51:06

课后作业005讲动动手第二题判断闰年提问

参考答案是

我写的代码是:
temp = input('请输入一个年份:')
year = int(temp)
t = year/4
n = year/100
i = year/400
if(isinstance(i,int)==1):
    print(temp+'是闰年')
else:
    if(isinstance(t,int)==1)and(isinstance(n,int)!=1):
      print(temp+'是闰年')
    else:
      print(temp+'不是闰年')

我的程序if语句都判断不了,最后只能输出“不是闰年”
是我的想法出了问题还是语法用错了

Twilight6 发表于 2020-6-10 21:52:34

本帖最后由 Twilight6 于 2020-6-10 21:54 编辑

Python 中除法返回的永远是 float 类型 不可能是整型,你要判断整除就只能使用求余运算符 %

temp = input('请输入一个年份:')
year = int(temp)
t = year%4
n = year%100
i = year%400
if i==0 :
    print(temp+'是闰年')
else:
    if t==0 and n != 0:
      print(temp+'是闰年')
    else:
      print(temp+'不是闰年')

老八秘制 发表于 2020-6-10 21:52:54

isinstance返回是浮点不是整数,永远不可能相等……

灿烂的小雏菊 发表于 2020-6-10 22:09:49

Twilight6 发表于 2020-6-10 21:52
Python 中除法返回的永远是 float 类型 不可能是整型,你要判断整除就只能使用求余运算符 %

学到了~谢谢老哥

Twilight6 发表于 2020-6-10 22:11:13

灿烂的小雏菊 发表于 2020-6-10 22:09
学到了~谢谢老哥

客气~

灿烂的小雏菊 发表于 2020-6-10 22:42:42

Twilight6 发表于 2020-6-10 22:11
客气~

哥,突然还有一个问题
如果除法返回的永远是float型,那参考答案里 if(year/4 == int ( year / 4 ) ),float型跟int型可以相等?

Twilight6 发表于 2020-6-10 22:46:28

灿烂的小雏菊 发表于 2020-6-10 22:42
哥,突然还有一个问题
如果除法返回的永远是float型,那参考答案里 if(year/4 == int ( year / 4 ) ) ...

浮点数 1.0 和 1 是相等的   类型是不等的 一个是 float 一个是 int
页: [1]
查看完整版本: 课后作业005讲动动手第二题判断闰年提问