无视网速 发表于 2020-2-17 16:49:03

Python计算闰年——如何计算公元前年份?

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

新人求教:
为了防止报错,添加了一个判断语句来鉴定是否是数字;
但是输入负数时,‘isdigit’却将负数判定为False,我知道是因为负数夹杂了‘-’号所致,所以想请教一下,有没有其他简洁的方法可以解决这个问题?

一个账号 发表于 2020-2-17 16:53:08

while 1 :
    try:
      year = input('请给定一个年份:',)
      y = int(year)
      if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 :
            print(year+'是闰年。\n')
      else:
            print(year+'不是闰年。\n')
    except ValueError:
      print('\n请输入有效年份!\n')

冬雪雪冬 发表于 2020-2-17 16:56:12

可以这样
while 1 :
    year = input('请给定一个年份:',)
    if year == '+' or year == '-':
      prefix = year
      year = year
    else:
      prefix = ''
   
    if year.isdigit(): #防止计算报错,添加一个判断是否是数字的语句
      year = prefix + year
      y = int(year)
      if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0 :
            print(year+'是闰年。\n')
      else:
            print(year+'不是闰年。\n')
    else:
      print('请输入有效年份!\n(只包含数字)\n')

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

wp231957 发表于 2020-2-17 17:01:36

净扯,公元前   哪来的 闰年的概念

无视网速 发表于 2020-2-17 17:41:58

wp231957 发表于 2020-2-17 17:01
净扯,公元前   哪来的 闰年的概念

我书读的少,百度百科里面写着公元前是有闰年的{:10_245:}

Sungne_jer 发表于 2020-2-17 19:12:26

一个账号 发表于 2020-2-17 16:53


求问为什么可以这样做?except那一行是什么意思
页: [1]
查看完整版本: Python计算闰年——如何计算公元前年份?