Python蓝桥杯基础之星期一
星期一
整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)
我们可能不知道20世纪中的某一天是星期几,但我们应该知道今天是星期几。 比如说今天是2022年10月19日星期三,我们只需要反推到二十多年前的2000年12月31日是星期几就科研进行计算了。
# 已知2022年为平年2月28天,所以可知10月19日为这一年的第292天,所以在291天前为本年的1月1日
n = 291
while n > 7:for i in range(1, 1000):n = n - 7if n < 7:break
print(n) # 即2022年1月1日的4天后为星期三即1月5日为星期三
week_2022_1_1 = 7 + 3 - 4 # 用来计算星期几的,减出来为负数就在前面加个7答案就是星期几
print(week_2022_1_1)
# 所以说2022年的1月1日是星期六,2021年12月31日是星期五
day_to_2000_12_31 = 366 * 5 + 365 * 16
print(day_to_2000_12_31)
# 即在2021年12月31日的7670天前是2000年12月31日
n = 7670
while n > 7:for i in range(1, 1000):n = n - 7if n < 7:break
print(n)
# 21年前的2000年12月31日的5天后为星期五,所以2000年12月31日是星期日
day_to_1901_1_1 = 366 * 25 + 365 * 75 - 1 # 这里为什么要减一天?
print(day_to_1901_1_1)
# 即在2000年12月31日的36524天前是1901年1月1日
n = 36524
while n > 7:for i in range(1, 10000):n = n - 7if n < 7:break
print(n)
# 1901年1月1日的5天后为星期日,所以1901年1月1日是星期二
上面代码中的
n = 291
while n > 7:for i in range(1, 1000):n = n - 7if n < 7:break
print(n)
这些部分都可以直接写成n % 7效果是一样的
还有就是day_to_1901_1_1 = 366 * 25 + 365 * 75 - 1 # 这里为什么要减一天?
这是因为1900年12月31日才是2000年12月31日的整整一百年前,而1901年1月1日还少一天,注意我这里算的是多少天以前,而不是这段时间总共有多少天。如果算1901年1月1日到2000年12月31日总共有多少天那就是整整100年,不需要减1。
上面的代码块是我一 步一步推的,当然可以直接得到2000年12月31日是星期几然后再进行计算,我们最终要得到的是20世纪有多少个星期一,先得到1901年1月1日到2000年12月31日有多少个7天,剩下的再做计算即可,代码入如下:
print(day_to_1901_1_1 // 7, day_to_1901_1_1 % 7)
# 已知1901年1月6日为星期日, 所以五天前的1901年1月1日为星期二
# 所以正确答案就是(day_to_1901_1_1 // 7)即5217个星期一, 不用管后面的余数5
上面的解法思路非常简单,当然看起来有点麻烦,我们可以将其简单化一点,如下代码:
day_num = 0
for year in range(1901, 2001):if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):day_num += 366else:day_num += 365
day_before = day_num - 1 # 这里为什么减1如我上文所说。
# 现在只需要1901年1月1日是星期几,或是2000年12月31日是星期几就可以算出共有多少个星期一
# 这里我们只知道今天是2022年10月19日星期三,所以需要去往回推算
# 如上算出
# 已知2022年为平年2月28天,所以可知10月19日为这一年的第292天,所以在291天前为本年的1月1日
n = 291
day_to_2000_12_31 = 366 * 5 + 365 * 16 + n + 1 # 这里+1是因为整年是到2021年12月31日为21年少1月1日1天
# 即在2022年10月19日的7962天前是2000年12月31日
n = 7962
yu = n % 7
week_2000_12_31 = 3 - yu + 7yu_result = day_before % 7
week_1901_1_1 = 7 - yu_result
# 所以1901年1月1日为星期二
sumMon = day_before // 7
print(sumMon)
Python蓝桥杯基础之星期一相关推荐
- Python 蓝桥杯试题 基础练习 特殊回文数
Python 蓝桥杯试题 基础练习 特殊回文数 问题描述: 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于 ...
- Python 蓝桥杯试题 基础练习 数列排序
Python 蓝桥杯试题 基础练习 数列排序 题目描述: 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整数n. 第二行包含n ...
- 蓝桥杯 基础练习 分解质因数 python语言
蓝桥杯 基础练习 分解质因数 python语言 描述 求出区间[a,b]中所有整数的质因数分解. 输入 输入描述: 输入两个整数a,b. 输入样例: 3 10 输出 输出描述: 每行输出一个数的分解, ...
- 蓝桥杯 基础练习 01字串 C/C++/Java/Python描述
蓝桥杯 基础练习 01字串 C/C++/Java/Python描述 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博 ...
- 蓝桥杯 基础练习全解 答案+解析 共17题 python
关键字 A+B问题,数列排序,十六进制转八进制,十六进制转十进制,十进制转十六进制,特殊回文数,回文数,特殊的数字,杨辉三角形,查找整数,数列特征,字母图形,01字串,闰年判断,斐波那契数列,圆的面积 ...
- 蓝桥杯基础练习 Python实现字母图形
蓝桥杯基础练习 Python实现字母图形 问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7 ...
- Python 蓝桥杯试题 基础练习 十六进制转八进制
Python 蓝桥杯试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行, ...
- Python 蓝桥杯试题 基础练习 字母图形
Python 蓝桥杯试题 基础练习 字母图形 问题描述: 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个 ...
- 蓝桥杯基础练习---特殊数字
蓝桥杯基础练习---特殊数字 特殊的数字 该题目实现程序: 特殊的数字 问题描述: 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1的3次方+5的3次方+3的3次方=1+125+27 ...
最新文章
- Python+selenium自动化测试:报错:TypeError: 'WebElement' object is not iterable
- ddos攻击python_Python基于http的ddos攻击代码
- js动态载入css文件,原生JS动态加载JS、CSS文件及代码脚本(示例代码)
- java怎么弄redis,java怎么使用redis
- Delphi 精选文章地址
- 网络通信数据处理过程
- python爬虫之百度贴吧
- MPQ Storm库 源码分析 一
- 计算机科学与技术导论 网站,计算机科学与技术导论
- Spring Boot整合mybatis报错Invalid bound statement (not found)
- python查看保留字_Python 关键字(保留字)一览表,含查询方法
- 网易,这次你让粉丝们失望了
- 再论凭中学数学常识发现中学数学一系列重大错误——数列最起码常识让5千年都无人能识的自然数一下子暴露出来
- 网游服务器维护费巨大,全网首例!玩家氪金金额巨大导致服务器瘫痪,官方单独安排客服!...
- 原来将Excel表格转换成应用程序如此简单
- IMP-00017: following statement failed with ORACLE error 20005:(表统计信息被锁)
- [N1BOOK PARTofPWN] ROP本地
- “兼并”还是“合作” 宏碁方正各怀鬼胎
- 【毕业设计】深度学习手势识别检测系统 - python
- 2019年天猫年货节淘客文案(全网节日淘客文案通用最新版持续更新)