鱼C论坛

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

[已解决]Python计算闰年——如何计算公元前年份?

[复制链接]
发表于 2020-2-17 16:49:03 | 显示全部楼层 |阅读模式

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

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

x
  1. while 1 :
  2.     year = input('请给定一个年份:',)
  3.     if year.isdigit(): #防止计算报错,添加一个判断是否是数字的语句
  4.         y = int(year)
  5.         if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 :
  6.             print(year+'是闰年。\n')
  7.         else:
  8.             print(year+'不是闰年。\n')
  9.     else:
  10.         print('请输入有效年份!\n(只包含数字)\n')
复制代码


新人求教:
为了防止报错,添加了一个判断语句来鉴定是否是数字;
但是输入负数时,‘isdigit’却将负数判定为False,我知道是因为负数夹杂了‘-’号所致,所以想请教一下,有没有其他简洁的方法可以解决这个问题?
最佳答案
2020-2-17 16:53:08
  1. while 1 :
  2.     try:
  3.         year = input('请给定一个年份:',)
  4.         y = int(year)
  5.         if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 :
  6.             print(year+'是闰年。\n')
  7.         else:
  8.             print(year+'不是闰年。\n')
  9.     except ValueError:
  10.         print('\n请输入有效年份!\n')
复制代码
捕获.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-17 16:53:08 | 显示全部楼层    本楼为最佳答案   
  1. while 1 :
  2.     try:
  3.         year = input('请给定一个年份:',)
  4.         y = int(year)
  5.         if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 :
  6.             print(year+'是闰年。\n')
  7.         else:
  8.             print(year+'不是闰年。\n')
  9.     except ValueError:
  10.         print('\n请输入有效年份!\n')
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
无视网速 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-17 16:56:12 | 显示全部楼层
可以这样
  1. while 1 :
  2.     year = input('请给定一个年份:',)
  3.     if year[0] == '+' or year[0] == '-':
  4.         prefix = year[0]
  5.         year = year[1:]
  6.     else:
  7.         prefix = ''
  8.    
  9.     if year.isdigit(): #防止计算报错,添加一个判断是否是数字的语句
  10.         year = prefix + year
  11.         y = int(year)
  12.         if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 :
  13.             print(year+'是闰年。\n')
  14.         else:
  15.             print(year+'不是闰年。\n')
  16.     else:
  17.         print('请输入有效年份!\n(只包含数字)\n')
复制代码


有几个问题:
1.最好用异常处理,等学到了try...except就会发现,处理起来方便的多。
2.闰年的计算不涉及到公元前
3.如果一定要计算负值,也要调整一下,因为没有公元0年。

评分

参与人数 1荣誉 +4 鱼币 +4 贡献 +2 收起 理由
无视网速 + 4 + 4 + 2 谢谢谢谢,try...except好用

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-17 17:01:36 | 显示全部楼层
净扯,公元前   哪来的 闰年的概念
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-17 17:41:58 | 显示全部楼层
wp231957 发表于 2020-2-17 17:01
净扯,公元前   哪来的 闰年的概念

我书读的少,百度百科里面写着公元前是有闰年的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-17 19:12:26 | 显示全部楼层

求问为什么可以这样做?except那一行是什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-3 20:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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