python 实例四
生活随笔
收集整理的這篇文章主要介紹了
python 实例四
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析:
月份天數:
| 月份 | 天數 |
| 2 | 平年28天,閏年29天 |
| 1,3,5,7,8,10,12 | 31 |
| 4,6,9,11 | 30 |
?
?閏年:
1、非整百年:能被4整除的為閏年。(如2004年就是閏年,2100年不是閏年) ? 2、整百年:能被400整除的是閏年。(如2000年是閏年,1900年不是閏年) >>> L=[31,31,30,31,30,31,31,30,31,30,31] >>> def caldate(a,b,c):s=0if(a%100!=0 and a%4==0 or a%100==0 and a%400==0):L.insert(1,29)else:L.insert(1,28)for i in range(b-1):s=s+L[i]return s+c>>> caldate(2016,1,2) 2 >>> caldate(2016,3,2) 62改進版:考慮了月份和天數的有效性(哈哈,對比網上的答案,一看自己的代碼就像是菜鳥級的,還有很多需要學習的地方)
def caldate(a,b,c):L=[31,31,30,31,30,31,31,30,31,30,31]s=0Leap=0if(a%100!=0 and a%4==0 or a%100==0 and a%400==0):L.insert(1,29)Leap=1else:L.insert(1,28)if 0<b<=12:if 0<c<=31:if((b==2)and(Leap==1)and(c<=29)or((b==2)and(Leap==0)and(c<=28))):for i in range(b-1):s=s+L[i]return s+celse:print 'The February should not greater than 28 or 29'else:print 'The date is error'else:print 'The month is invalid'輸出:
>>> caldate(2016,4,33) The date is error >>> caldate(2017,2,30) The February should not greater than 28 or 29 >>> caldate(2017,2,28) 59 >>> caldate(2017,2,29) The February should not greater than 28 or 29 >>> caldate(2017,13,29) The month is invalid網上答案:
#!/usr/bin/python # -*- coding: UTF-8 -*-year = int(raw_input('year:\n')) month = int(raw_input('month:\n')) day = int(raw_input('day:\n'))months = (0,31,59,90,120,151,181,212,243,273,304,334) if 0 < month <= 12:sum = months[month - 1] else:print 'data error' sum += day leap = 0 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):leap = 1 if (leap == 1) and (month > 2):sum += 1 print 'it is the %dth day.' % sum?輸出結果:
year: 2015 month: 6 day: 7 it is the 158th day.?
轉載于:https://www.cnblogs.com/evablogs/p/6754981.html
總結
以上是生活随笔為你收集整理的python 实例四的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6:Eclipse 常用快捷键及源码查看
- 下一篇: Windows XP SP3截至2011