输入某年某月某日,判断这是当年的第几天
- 月份天数+日天数
- 判断是否为闰年
- 给定12月每月天数,遍历累加
没有做健壮性处理
eval() 将 str --> int
列表索引取值
感觉代码有点累赘…
def count_date():
date = input("请输入以'-'为间隔的日期:")
# 用切片换成列表
date_ls = date.split("-")
count = 0
# 判断是否是闰年
if (eval(date_ls[0]) % 400 == 0
or (eval(date_ls[0]) % 4 == 0
and eval(date_ls[0]) % 100 != 0)):
# 每个月份对应天数
r_list = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 遍历累加
for i in range(eval(date_ls[1])-1):
# count是月份天数的累加,最后结果还要加上当月天数
count += r_list[i]
# return count+eval(date_ls[2]) 加上当月天数
return print("""
%s年 %s月 %s日(闰年)
是 %s 的第 %d 天""" %
(date_ls[0], date_ls[1], date_ls[2],
date_ls[0], count + eval(date_ls[2])))
else:
# 平年直接copy
r_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
for i in range(eval(date_ls[1]) - 1):
count += r_list[i]
return print("""
%s年 %s月 %s日(平年)
是 %s 的第 %d 天""" %
(date_ls[0], date_ls[1], date_ls[2],
date_ls[0], count + eval(date_ls[2])))
我格式化输出的太丑了...
可以直接返回结果
retutn print("第%d天" % count + eval(date_ls[2]))
借鉴自:Saggitarxm.