鱼C论坛

 找回密码
 立即注册
查看: 2892|回复: 5

[已解决]新手求教关于闰年的问题

[复制链接]
发表于 2016-6-15 02:18:48 | 显示全部楼层 |阅读模式

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

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

x
temp = input('请输入一个年份:')

year = int(temp)
if year/400 == int(year/400):
    print(' 是闰年!')
   
else:
    if (year/4 == int(year/4)):
        print(temp + ' 这是闰年!')
    else:
        (year/100 != int(year/100))
        print(temp + ' 不是闰年!')
            
这是小弟自己改的一段代码,为什么输入1900直接跳入第二个if函数去了,1900明显不能被400整除但为什么还是显示这是闰年呢?我还想做个循环。输入年份以后再输入一个年份,这循环条件怎么加呢?
最佳答案
2020-10-25 14:00:05
你第一个条件不满足,肯定会跳到第二个。
闰年的定义是:
①、普通年能被4整除且不能被100整除的为闰年.(如2004年就是闰年,1901年不是闰年)地球公转示意图
②、世纪年能被400整除的是闰年.(如2000年是闰年,1900年不是闰年)
③、对于数值很大的年份能整除3200,但同时又能整除172800则又是闰年.(如172800年是闰年,86400年不是闰年)

  1. temp = input('请输入一个年份: (输入q退出)')
  2. while( temp != 'q'):
  3.     year = int(temp)
  4.     if year/400 == int(year/400):
  5.         print("是闰年")
  6.     elif year/4 == int(year/4):
  7.         if year/100 != int(year/100):
  8.             print("是闰年")
  9.         else:
  10.             print("不是闰年")
  11.     else:
  12.         print("不是闰年")
  13.     temp = input('请输入一个年份: (输入q退出)')

  14. print("程序结束")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-15 22:33:30 | 显示全部楼层
好厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-16 17:59:59 | 显示全部楼层
你自己写错判定的顺序了,应该先判定能不能除4,再判断能不能除100,最后判断能不能除400
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-27 07:38:40 From FishC Mobile | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-27 09:21:10 | 显示全部楼层
把判断的逻辑改了一下,并且添加了循环输入和退出的功能。
  1. temp = input('请输入一个年份: (输入q退出)')
  2. while( temp != 'q'):
  3.     year = int(temp)
  4.     if year/400 == int(year/400):
  5.         print("是闰年")
  6.     elif year/4 == int(year/4):
  7.         if year/100 != int(year/100):
  8.             print("是闰年")
  9.         else:
  10.             print("不是闰年")
  11.     else:
  12.         print("不是闰年")
  13.     temp = input('请输入一个年份: (输入q退出)')

  14. print("程序结束")
复制代码


闰年的判断原理如下。我也是查完才刚明白原来是这么回事。
定制闰年规则不是随意设置的。
首先我们要知道,年的概念,是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是很遗憾的是这个周期并不能被一天的时间整除,真正的一年其实是365.2423天(目前)。
所以,如果每年定义为365天的话,1年就会多出0.2423天,4年就会多出0.9692天,非常接近1天,这样闰年就出现了,也就是每4年要有1年设置为366天,来抵消这多出的1天。规则为:
·1)如果年份能被4整除,则该年计为闰年;
可是,假如不做调整的话,当400年的时候,累计才多出96.92天,闰年的设置却多出来100天,所以要在400年内,再撤销3个闰年。怎么撤销呢?就有了下面这个规则:
·2)如果年份能被100整除,则不计为闰年;
问题又来了,400年里有4个,又少了一个,所以再加一个规则就是:
·3)如果年份能被400整除,则计为闰年。
这样每400年里设置了97个闰年,误差被调整到400年仅有0.08天,而设置规则也并不是很麻烦,所以一直沿用了下来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-25 14:00:05 | 显示全部楼层    本楼为最佳答案   
你第一个条件不满足,肯定会跳到第二个。
闰年的定义是:
①、普通年能被4整除且不能被100整除的为闰年.(如2004年就是闰年,1901年不是闰年)地球公转示意图
②、世纪年能被400整除的是闰年.(如2000年是闰年,1900年不是闰年)
③、对于数值很大的年份能整除3200,但同时又能整除172800则又是闰年.(如172800年是闰年,86400年不是闰年)

  1. temp = input('请输入一个年份: (输入q退出)')
  2. while( temp != 'q'):
  3.     year = int(temp)
  4.     if year/400 == int(year/400):
  5.         print("是闰年")
  6.     elif year/4 == int(year/4):
  7.         if year/100 != int(year/100):
  8.             print("是闰年")
  9.         else:
  10.             print("不是闰年")
  11.     else:
  12.         print("不是闰年")
  13.     temp = input('请输入一个年份: (输入q退出)')

  14. print("程序结束")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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