题目描述
输入某年某月某日,判断这一天是这一年的第几天?
输入
输入某年某月某日
输出
这一天是这一年的第几天
样例输入
2000 5 21
样例输出
142
思路:
既然要算这一天是今年的第几天,就要牵扯到闰年和平年了,下面请看Chatgpt
闰年的判断方法有两种:
1. 四年一闰,百年不闰,四百年再闰。即年份能够被4整除但不能被100整除,或者能够被400整除的年份为闰年。
2. 公历纪年法中,能被4整除但不能被100整除的年份为普通闰年。能被4整除且能被100整除,但不能被400整除的年份不是闰年。能被4整除且能被400整除的年份为世纪闰年。
在本题中,可以使用第一种方法进行判断。即判断输入的年份是否能被4整除但不能被100整除,或者能够被400整除。如果满足条件,则该年为闰年,否则为平年。
看到我划出的句子这是判断闰年的关键
那现在我们根据这个提示写出第一行代码:
year, month, day = map(int, input().split())
# 判断是否为闰年并计算当月天数
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
month_days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
else:
month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
我来给大家解释一下上面的代码
使用map进行多次用input创建变量,好处是可以直接将他转换成int放入列表
然后就是if, else判断,看上面的红字再来看,and表示和,or表示或者
我们再写出后面的代码
# 计算前面月份的总天数
total_days = sum(month_days[:month-1])
# 加上当月的天数
total_days += day
# 输出结果
print(total_days)
然后我们将输入的月份的前几个月的总天数加起来,再加我们输入的天数就OK👌了
【蓝桥杯省赛复习第一天】