一、「問題概述:中國有句俗語叫「三天打魚兩天曬網」。某人從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天,所以將計算出的天...