蓝桥杯 Python试题C:锻炼身体(小蓝真能跑)

试题 C:跑步锻炼

【问题描述】

小蓝每天都锻炼身体。
正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。
小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。请问这段时间小蓝总共跑步多少千米?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

蓝桥杯 Python试题C:锻炼身体(小蓝真能跑)

结果为 8879 公里

a = [31,28,31,30,31,30,31,31,30,31,30,31]#普通年份
b = [31,29,31,30,31,30,31,31,30,31,30,31]#闰年
c = [1,2,3,4,5,6,7,8,9,10,11,12]
d = [6,7,1,2,3,4,5]
e = 5
g = 0
h = 0
for years in range(2000,2021):
	if years%4 == 0:#因为2000年为闰年,就不再判考虑百年份能否被400整除
		for mos in c:#循环月份
			for day in range(1,b[mos-1]+1):#范围为对应年份列表中对应的月份天数
				f = e%7+1
				e += 1
				if day == 1 and f == 1:
					h += 2
				elif day == 1 and f != 1:
					h += 2
				elif day != 1 and f == 1:
					h += 2
				elif day !=1 and f != 1:
					h += 1
				print("现在是",years,"年",mos,"月",day,"日","星期",f,"已经跑了",h,"公里")
	elif years%4 != 0:
		for mos2 in c:
			for day in range(1,a[mos2-1]+1):
				f = e%7+1
				e += 1
				if day == 1 and f == 1:
					h += 2
				elif day == 1 and f != 1:
					h += 2
				elif day != 1 and f == 1:
					h += 2
				elif day !=1 and f != 1:
					h += 1
				print("现在是",years,"年",mos2,"月",day,"日","星期",f,"已经跑了",h,"公里")
#找到对应的2020年10月1日即可

这个循环会从2000年1月1日一直到2020年12月31日,找到对应的日期即可得到答案。

上一篇:流程控制


下一篇:不使用 if-elif 语句,如何优雅地判断某个数字所属的等级?