【开发该软件的操作系统】:windows10
【软件开发环境/开发工具】:PyCharm 2020.3.3 X64
【解释器版本】:Python 3.9.7
【编程语言】:Python
【开发目的】: 供初学者参考学习
【开发者】:20届牛马毕业生_迪焱
案例来源:https://blog.csdn.net/huang5333/article/details/109570000
也是之四的来源
四、输入*年*月*日,判断这一天是这一年的第几天?
分析:以3月5日为例,先把前两月的加起来,再加上5天就是本年的第几天,特殊情况下闰年且输入月份大于2时需考虑多加一天:
程序源代码:
# 输入*年*月*日,判断这一天是这一年的第几天?
# 分析以3月5日为例,先把前两个月加起来,再加上5天就是本年的第几天,特殊情况下闰年且输入月份大于2时,需考虑多加一天。
a = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 定义列表变量a,储存每个月份的天数
while True: # 设置循环,判断输入的是否有误,以便重新输入
year = eval(input("year:"))
mouth = eval(input("mouth:"))
day = eval(input("day:"))
if 0 < mouth <= 12:
pass # 月份输入正确,则继续向下执行
else:
print('月份输入错误,请重新输入。')
continue
if year % 4 == 0: # 判断是否闰年
if mouth == 2: # 判断是否闰年的二月
if day > a[mouth - 1] + 1: # 判断输入天数,是否超过闰年二月的天数
print(f'{mouth}月只有{a[mouth - 1] + 1}天哦,请重新输入。')
elif day < 0: # 判断输入天数是否小于0
print('天数不能小于0')
else:
break # 若以上信息全部正确,则跳出循环
else:
if day > a[mouth - 1]: # 判断闰年其他月份是否超出当月天数
print(f'{mouth}月只有{a[mouth - 1] + 1}天哦,请重新输入。')
elif day < 0: # 判断输入天数是否小于0
print('天数不能小于0')
else:
break # 若以上信息全部正确,则跳出循环
else: # 判断非闰年信息是否输入正确
if day > a[mouth - 1]: # 判断当年月份是否超出当月天数
print(f'{mouth}月只有{a[mouth - 1]}天哦,请重新输入。')
elif day < 0: # 判断输入天数是否小于0
print('天数不能小于0')
else:
break # 若以上信息全部正确,则跳出循环
mouths = [0] # 定义mouths列表,储存0作为第零个月的天数,
for i in range(len(a)): # for循环将每个月的天数累加到对应的月份
mouths.append(mouths[-1] + a[i]) # 得到结果mouths = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]
if year % 4 == 0 and mouth > 2: # 判断是闰年且超过2月,天数加1天
days = mouths[mouth - 1] + day + 1
print(f'这是{year}年的第{days}天')
else: # 其他情况,直接计算当前天数
days = mouths[mouth - 1] + day
print(f'这是{year}年的第{days}天')
# 这是2019年的第315天
# -----输入/输出结果-----
# year:2020
# mouth:11
# day:11
# 这是2020年的第316天