python 实例四

https://www.cnblogs.com/evablogs/p/6754981.html

 

题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:

月份天数:

月份 天数
2 平年28天,闰年29天
1,3,5,7,8,10,12 31
4,6,9,11 30

 

 闰年:

1、非整百年:能被4整除的为闰年。(如2004年就是闰年,2100年不是闰年)
 
2、整百年:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> L=[31,31,30,31,30,31,31,30,31,30,31]
>>> def caldate(a,b,c):
    s=0
    if(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 in range(b-1):
        s=s+L[i]
    return s+c
 
>>> caldate(2016,1,2)
2
>>> caldate(2016,3,2)
62

改进版:考虑了月份和天数的有效性(哈哈,对比网上的答案,一看自己的代码就像是菜鸟级的,还有很多需要学习的地方)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def caldate(a,b,c):
    L=[31,31,30,31,30,31,31,30,31,30,31]
    s=0
    Leap=0
    if(a%100!=0 and a%4==0 or a%100==0 and a%400==0):
        L.insert(1,29)
        Leap=1
    else:
        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 in range(b-1):
                    s=s+L[i]
                    return s+c
            else:
                print 'The February should not greater than 28 or 29'
        else:
            print 'The date is error'
    else:
        print 'The month is invalid'

输出:

1
2
3
4
5
6
7
8
9
10
>>> 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

网上答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/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 == 0or ((year % 4 == 0and (year % 100 != 0)):
    leap = 1
if (leap == 1and (month > 2):
    sum += 1
print 'it is the %dth day.' % sum

 输出结果:

1
2
3
4
5
6
7
year:
2015
month:
6
day:
7
it is the 158th day.
posted @ 2019-04-29 14:40  爱笑的小宇宙  阅读(197)  评论(0编辑  收藏  举报