Python蓝桥杯基础之星期一
生活随笔
收集整理的這篇文章主要介紹了
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蓝桥杯基础之星期一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 74ls160 24进制异步计数器
- 下一篇: pytorch autograd计算标量