1. 程式人生 > 其它 >Python函式 迴圈-判斷一年中的哪一天

Python函式 迴圈-判斷一年中的哪一天

1.程式設計:日期計算:輸入某年某月某日,判斷這一天是這一年的第幾天?
1).程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第 幾
天, 特殊情況,閏年且輸入月份大於3時需考慮多加一天。
2).如果輸入的月份大於12時提示錯誤,重新輸入
3).如果月份為小月,天數大於30時提示錯誤,重新輸入
4).如果月份為大月,天數大於31時提示錯誤,重新輸入
5).如果年份為平年,2月天數大於28時提示錯誤,重新輸入
6).如果年份為閏年,2月天數大於29時提示錯誤,重新輸入
方法一:

y=int(input('year'))
m=int(input('month'))
d=int(input('day'))
while True:#判斷月份大於12或者小於1,共分兩種情況:異常月份 正常月份
if m>12 or m<1:
print('輸錯了月份')
m=int(input('請重新輸入月份'))
if 1<=m<=12:
break
while True:#判斷a:當月在大月時(2種情況) b:不在大月(異常日期 正常日期)
if m in(1,3,5,7,8,10,12):
if d>31 or d<1:
print('輸錯了日期')
d=int(input('請重新輸入日期'))
if 1<=d<=31:
break
else:
if d > 30 or d < 1:
print('輸錯了日期')
d = int(input('請重新輸入日期'))
if 1 <= d <= 30:
break
while True:#判斷a:閏年(2月兩種情況:29天和異常日期)b平年(2月28天和異常日期)
if y%4==0 and y%100!=0 or y%100==0 and y%400==0:
if m==2:
if d > 29 or d < 1:
print('輸錯了日期')
d = int(input('請重新輸入日期'))
if 1 <= d <= 29:
break
else:
break
else:
if m==2:
if d>28 or d<1:
print('輸錯了日期')
d = int(input('請重新輸入日期'))
if 1 <= d <= 28:
break
else:
break
#以上僅僅時判斷輸入條件,下面開始計算
if 1<=m<=12:
for i in range(1,m):#迴圈累加前幾個月的值

if i in(1,3,5,7,8,10,12):#分3種情況:大月,二月(平年28天,閏年29),其他月
d+=31
elif i==2:
if y%100!=0 and y%4==0 or y%100==0 and y%400==0:
d+=29
else:
d+=28
else:
d+=30
print(d)


方法二: