鱼C论坛

 找回密码
 立即注册
查看: 2085|回复: 2

[经验总结] 由一个课后作业想到的宇宙和时间问题

[复制链接]
发表于 2019-8-11 09:08:29 | 显示全部楼层 |阅读模式

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

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

x

第005讲:闲聊之Python的数据类型
1. 写一个程序,判断给定年份是否为闰年。



那么某一年是不是闰年该怎么判断呢?

通常的判断方法是:

A: 可以被4整除的,但不能被100整除

B: 可以被400整除

只要满足AB任意一种情况就是闰年。


当我们会判断之后,那问题来了,为什么会有闰年?

大家都知道,地球自转一周需要24小时,地球绕太阳一圈需要365天。

但事实上这只是一个比较笼统的说法,确切来说,地球自转一周需要的是23小时56分4秒,而地球绕太阳一圈需要的是365天5小时48分46秒 。

为了方便,我们把平年定为365天。不过这样实际上就会少算了5小时48分46秒,4年就相差了23小时15分4秒,也就是说4年就少算了近一天。于是机智的古人,就想了办法,每四年就规定了1个闰年,然后把这一天加在闰年的二月上,来补上少算的时间。

不过这样又会产生一个问题, 因为我们把每4年相差的23小时15分4秒≈24小时。这样就相当于多算了44分56秒,400年之后,就会多出了大约3天来。

因此,每400年需要减掉3个闰年,所以能被100整除,不能被400整除的不能是闰年。

看到没,宇宙的规律也不是完美的,就连我们平时用的时间都需要不停的打补丁
那你还有什么理由对python要求这么苛刻呢!

好了,程序如下:

temp = input('输入一个年份: ')
while not temp.isdigit():
    temp = input('抱歉,您输入有误,请输入正确的年份:')
yearnumber = int(temp)
if yearnumber/400 == int(yearnumber/400):
    print(temp+'是闰年')
elif yearnumber/4 == int(yearnumber/4) and yearnumber/100 != int(yearnumber/100):
    print(temp+'是闰年')
else:
    print(temp+'不是闰年')

那么问题来了:为什么不把地球自转一周需要的23小时56分4秒,重新定义为“新的24小时”呢?或者把地球绕太阳一圈需要的365天5小时48分46秒重新定义为“新的365天”呢?谈谈你的想法吧~~

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2019-8-11 09:17:33 | 显示全部楼层
楼主的推理很细致,不过我发现一个小错误:世界没有公元 0 年,所以要判断用户输入的年份是不是 0:
  1. temp = input('输入一个年份: ')
  2. while not temp.isdigit():
  3.     temp = input('抱歉,您输入有误,请输入正确的年份:')
  4. while not int(temp):
  5.     temp = input('抱歉,您输入有误,请输入正确的年份:')
  6. yearnumber = int(temp)
  7. if yearnumber/400 == int(yearnumber/400):
  8.     print(temp+'是闰年')
  9. elif yearnumber/4 == int(yearnumber/4) and yearnumber/100 != int(yearnumber/100):
  10.     print(temp+'是闰年')
  11. else:
  12.     print(temp+'不是闰年')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-8-11 09:27:24 | 显示全部楼层
zltzlt 发表于 2019-8-11 09:17
楼主的推理很细致,不过我发现一个小错误:世界没有公元 0 年,所以要判断用户输入的年份是不是 0:

谢谢大哥,古人果然没学过编程,起始都不从零开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 23:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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