3 # Calculate your unbirthday count (see Alice in Wonderland).
4 # This is defined as the number of days from your birth until today
5 # that weren't your birthday. (The day you were born is not counted).
6 # Leap years make it interesting.
14 year
= int(sys
.argv
[1])
16 year
= int(input('In which year were you born? '))
18 print("I'll assume that by", year
, end
=' ')
20 print('you mean', year
, 'and not the early Christian era')
21 elif not (1850 <= year
<= time
.localtime()[0]):
22 print("It's hard to believe you were born in", year
)
26 month
= int(sys
.argv
[2])
28 month
= int(input('And in which month? (1-12) '))
29 if not (1 <= month
<= 12):
30 print('There is no month numbered', month
)
34 day
= int(sys
.argv
[3])
36 day
= int(input('And on what day of that month? (1-31) '))
37 if month
== 2 and calendar
.isleap(year
):
40 maxday
= calendar
.mdays
[month
]
41 if not (1 <= day
<= maxday
):
42 print('There are no', day
, 'days in that month!')
45 bdaytuple
= (year
, month
, day
)
46 bdaydate
= mkdate(bdaytuple
)
47 print('You were born on', format(bdaytuple
))
49 todaytuple
= time
.localtime()[:3]
50 todaydate
= mkdate(todaytuple
)
51 print('Today is', format(todaytuple
))
53 if bdaytuple
> todaytuple
:
54 print('You are a time traveler. Go back to the future!')
57 if bdaytuple
== todaytuple
:
58 print('You were born today. Have a nice life!')
61 days
= todaydate
- bdaydate
62 print('You have lived', days
, 'days')
65 for y
in range(year
, todaytuple
[0] + 1):
66 if bdaytuple
< (y
, month
, day
) <= todaytuple
:
69 print('You are', age
, 'years old')
71 if todaytuple
[1:] == bdaytuple
[1:]:
72 print('Congratulations! Today is your', nth(age
), 'birthday')
73 print('Yesterday was your', end
=' ')
75 print('Today is your', end
=' ')
76 print(nth(days
- age
), 'unbirthday')
79 (year
, month
, day
) = date
80 return '%d %s %d' % (day
, calendar
.month_name
[month
], year
)
83 if n
== 1: return '1st'
84 if n
== 2: return '2nd'
85 if n
== 3: return '3rd'
89 # January 1st, in 0 A.D. is arbitrarily defined to be day 1,
90 # even though that day never actually existed and the calendar
91 # was different then...
92 (year
, month
, day
) = date
93 days
= year
*365 # years, roughly
94 days
= days
+ (year
+3)//4 # plus leap years, roughly
95 days
= days
- (year
+99)//100 # minus non-leap years every century
96 days
= days
+ (year
+399)//400 # plus leap years every 4 centirues
97 for i
in range(1, month
):
98 if i
== 2 and calendar
.isleap(year
):
101 days
= days
+ calendar
.mdays
[i
]
105 if __name__
== "__main__":