sunhaonan94 发表于 2020-3-25 04:35:52

Python课后作业 5 (闰年)

def year(x):
res=x/4
a=isinstance(res,int)
if a == True:
    print(x,'是闰年')
elif a != True:
    print(x,'不是闰年')
year(2000)


这串代码有些问题,因为x/4的结果就算是整数也会带上小数点,比如2000/4=500.0。希望能在代码上改进一下,去除这个问题。

XiaoPaiShen 发表于 2020-3-25 05:58:31

本帖最后由 XiaoPaiShen 于 2020-3-25 06:03 编辑

你写的闰年的定义不对,我只是按你的思路改了一下
def year(x):
res=x%4

if res == 0:
    print(x,'是闰年')
else:
    print(x,'不是闰年')

year(2000)

正确代码如下:
def leap_year(year):
        if (year%4 == 0) & (year%100 != 0):
                print("%d年是闰年" % year)
        elif year%400 == 0:
                print("'%d'年是闰年" % year)
        else:
                print("'%d'不年是闰年" % year)

leap_year(2000)

BngThea 发表于 2020-3-25 09:48:43

python中默认的 / 返回的都是float,所以你的代码永远不会输出是闰年

zltzlt 发表于 2020-3-25 13:27:59

Python 中除法的结果总是小数,所以需要用取余运算判断

def year(x):
    if (x % 4 == 0) and (x % 100 != 0):
      print("%d 年是闰年" % year)
    elif x % 400 == 0:
      print("%d 年是闰年" % year)
    else:
      print("%d 年不是闰年" % year)

darrenkwan 发表于 2020-3-25 14:13:31

/ 除返回的值总是float型的, 永远不满足int. 要么你用% 取余数为0,就好了

sunhaonan94 发表于 2020-3-31 04:10:46

XiaoPaiShen 发表于 2020-3-25 05:58
你写的闰年的定义不对,我只是按你的思路改了一下




非常感谢

XiaoPaiShen 发表于 2020-3-31 04:30:29

sunhaonan94 发表于 2020-3-31 04:10
非常感谢

请选择最佳答案,结贴
页: [1]
查看完整版本: Python课后作业 5 (闰年)