三天打魚,兩天曬網python

2021-10-03 12:35:17 字數 3474 閱讀 8272

一、「問題概述:中國有句俗語叫「三天打魚兩天曬網」。某人從2023年1月1日起開始「三天打魚兩天曬網」,問這個人在以後的某一天中是「打魚」還是「曬網」。根據餘數判斷他是在「打魚」還是在「曬網」,若 餘數為1,2,3,則他是在「打魚」,否則 是在「曬網」。

請利用你的知識幫他計算。

引申:利用int.txt文件讀入其中時間資料,計算並輸出到out.txt文件中。

希望大家可以想下如何解決這個問題,感謝大家。

二、整體思路如下:

1、先計算相隔年份的天數,如輸入年份為2023年,則先行計算2023年至2023年的總天數,其中要判斷相隔年數是否有閏年,這是難點之一。

2、計算相隔月份的總天數,因已計算過之前年份得相隔天數,因此只計算本年度月份相差天數即可。如輸入月份為五月,則先行計算1月至四月的相隔天數。判斷二月是否為閏月是難點之一。

3、計算相隔日的天數,因此前已計算相隔年月的天數,因此輸入的日即為相隔天數。如輸入日為5,則從1日開始到五日,總計相差5天。(包含第五日,這是我的看法,因為要判斷某一天是在打魚還是曬網,應為包含本日。有些資料選擇沒有包含第五日,需讀者自行判斷是否包含)

4、計算總天數,將相隔年份天數月份天數與日相加得到總天數。

5利用總天數的餘數判斷該人某天的做法。

三、部分重要**:

1、計算相隔年份天數**片:

year=

int(

input

("請輸入年份:"))

for i in

range

(2010

,year)

:#利用迴圈計算相隔年份天數

if i%4==

0and i%

100!=0:

#判斷是否為閏年

sum_year+=

366elif i%

400==0:

sum_year+=

366else

: sum_year+=

365print

(sum_year)

#測試```python

2、計算月份相隔天數:'''

print("請輸入正確的月份,如1,10")

month=int(input("請輸入月份:")) #利用迴圈計算相隔月份,不考慮年份

for i in range(1,month): #判斷月數的天數

if i==1 or i==3 or i==5 or i==7 or i==8 or i==10 or i==12:

sum_month+=31

elif i==2: #考慮是否為閏年的2月

if year%4==0 and year%100!=0:

sum_month+=29

elif year%400==0:

sum_month+=29

else:

sum_month+=28

else:

sum_month+=30

print(sum_month)#測試

3、計算相隔日與其總天數:

day=int(input("請輸入天數:"))

sum_day=day

print(sum_day)#測試

total_day=sum_year+sum_month+sum_day #相隔總條數

print(total_day)#測試

四、執行結果:

![在這裡插入描述](

五、整體**:

```python

def counting_days():

start_year=2010 #定義起始年份

start_month=1

start_day=1

sum_year=0 #定義初始變數

sum_month=0

sum_day=0

'''注意其計算相隔年份的天數,如輸入為2023年,則計算的天數

為2023年到2023年的總天數,2023年中的天數利用月份和日子相計算'''

print("請輸入正確年份,且應大於2010,如2015")

year=int(input("請輸入年份:"))

for i in range(2010,year): #利用迴圈計算相隔年份天數

if i%4==0 and i%100!=0: #判斷是否為閏年

sum_year+=366

elif i%400==0:

sum_year+=366

else:

sum_year+=365

print(sum_year) #測試

'''注意其計算相隔月數的天數與計算年份的思想相同,如輸入5月,

則計算的天數為1月到4月份之間的總天數,5月的天數利用日子計算'''

print("請輸入正確的月份,如1,10")

month=int(input("請輸入月份:")) #利用迴圈計算相隔月份,不考慮年份

for i in range(1,month): #判斷月數的天數

if i==1 or i==3 or i==5 or i==7 or i==8 or i==10 or i==12:

sum_month+=31

elif i==2: #考慮是否為閏年的2月

if year%4==0 and year%100!=0:

sum_month+=29

elif year%400==0:

sum_month+=29

else:

sum_month+=28

else:

sum_month+=30

print(sum_month)#測試

'''輸出日份即為最後的相隔天數'''

print("請輸入天數,注意判斷今年是否為閏年的二月")

day=int(input("請輸入天數:"))

sum_day=day

print(sum_day)#測試

total_day=sum_year+sum_month+sum_day #相隔總條數

print(total_day)#測試

return total_day

'''利用fish(

)判斷該人員是在做什麼'''

deffish()

:

total_day=counting_days(

)print

("相隔總天數:"

,total_day)

if total_day%5==

1or total_day%5==

2or total_day%5==

3:print

("這天他在打魚"

)else

:print

("這天他在曬網"

)if __name__ ==

"__main__"

:#執行

fish(

)

三天打魚,兩天曬網。

判斷某人從2010年1月1日起開始 三天打魚,兩天曬網 到之後某一天是在打漁還是曬網 設計日期 2019.3.1 include define year 2010 void main 用陣列表示每月的天數 printf 請輸入所要判斷的時間 n scanf 4d 2d 2d year,month,d...

三天打魚兩天曬網 C Java

中國有句俗語叫 三天打魚兩天曬網 某人從1990年1月1日起開始 三天打魚兩天曬網 問這個人在以後的某一天中是 打魚 還是 曬網 問題分析與演算法設計 根據題意可以將解題過程分為三步 1 計算從1990年1月1日開始至指定日期共有多少天 2 由於 打魚 和 曬網 的週期為5天,所以將計算出的天數用5...

三天打魚兩天曬網(c )

中國有句俗語叫 三天打魚兩天曬網 某人從2010年1月1日起開始 三天打魚兩天曬網 問這個人在以後的某一天中是 打魚 還是 曬網 思路 問題分析與演算法設計 根據題意可以將解題過程分為三步 1 計算從2010年1月1日開始至指定日期共有多少天 2 由於 打魚 和 曬網 的週期為5天,所以將計算出的天...