經過一連串~ brain storming, debug, paper studying, writing articles, positive of covid... hahaha jk lmao
However, I realised that my health is the piority! As a life where you have the energy to focus on everything else you want and dream of.
So, let's have a break for coding some simple python games.
Those games are my first side project, which also my self-study of Python before I start the AI and Big Data program. I learned it from the "小象學堂" which is a wechat account (kinda like wechat python learning robot ?!) that I have given from my brother. (p.s. My siblings were engineer before I be an AI RD/PM... but I'm the only one, who still alive in this field ... well life is hard... it's another story~ haha LOL, let come back to the article )
使用者輸入一個日期(YYY/MM/DD),然後根據日期獲取對應的年份是否為閏年, 在劃分月份為30天和31天的月份, 並以迴圈的方式計算輸入月份相對應的天數, 在將輸入月份-1 (etc. 若輸入"5月", 即5-1= 4 >>> 1~4月的天數相加起來)的之前月份天數的天數相加起來(若是一開始輸入的年份為閏年, 則計算到2月時天數只會算成29天), 加上使用者輸入的天數(etc. 1~4月的總天數+使用者輸入的日期(DD)=> 這是YYYY年的第XXX天 ), 程式輸出結果為"使用者輸入日期的該年份的第XXX天"。
所以在設計此程式專案前, 我們必須知道2月哪時候為閏年? 哪時候不為閏年囉!
在西曆中,正常年份由 365 天組成。 因為恆星年真正的時間長度 (地球繞太陽一周所需的時間) 實際上是 365.2425 天,因此每四年都會使用一次 366 天的「閏年」,以弭平三個正常 (但短的) 年份所導致的誤差。
閏年的2月有 29 天,平年的2月則是 28 天 (2月不是閏年,就是平年)
任何能以 4 整除的年份都是閏年:例如 1988 年、1992 年及 1996 年都是閏年。不過,仍必須將一個小錯誤列入考量。 為了弭平此誤差,西曆規定能以 100 (例如1900 年) 整除的年份,同時也要能以 400 整除,才算是閏年。
- 年份不是閏年:1700、1800、1900、2100、2200、2300、2500、2600
原因是這些年份能以 100 整除,但無法以 400 整除。
- 年份為閏年:1600、2000、2400
原因是這些年份都能同時以 100 和 400 整除。
#使用if/else進行判斷是否為閏年:
year%4==0 and year%100!=0 or year %400=0
from datetime import datetime
def is_leap_year(year):
"""
判斷year是否為潤年
是, 返回True
否, 返回False
"""
is_leap = False
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 !=0)):
is_leap = True
return is_leap
def main():
"""
主函數
"""
input_date_str = input('請輸入日期(yyyy/mm/dd):')
input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
year = input_date.year
month = input_date.month
day = input_date.day
# 包含30天 月份集合
days_month_set = {4,6,9,11} #30
days_month_set = {1,3,5,7,8,10,12} #31
for i in range(1, month):
# 計算之前月份天數的總和以及當前月份天數
days_in_month_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if is_leap_year(year):
days_in_month_list[1] = 29
days = sum(days_in_month_list[: month - 1]) + day
print('這是{}年的第{}天'.format(year, day))
if __name__ == '__main__':
main()