[Python-checkins] CVS: python/dist/src/Demo/scripts unbirthday.py,1.3,1.4

Moshe Zadka moshez@users.sourceforge.net
Tue, 20 Feb 2001 08:32:26 -0800


Update of /cvsroot/python/python/dist/src/Demo/scripts
In directory usw-pr-cvs1:/tmp/cvs-serv23796

Modified Files:
	unbirthday.py 
Log Message:
Updated to use new Python features
Reindented


Index: unbirthday.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Demo/scripts/unbirthday.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** unbirthday.py	1996/11/27 19:47:10	1.3
--- unbirthday.py	2001/02/20 16:32:24	1.4
***************
*** 11,106 ****
  
  def main():
! 	# Note that the range checks below also check for bad types,
! 	# e.g. 3.14 or ().  However syntactically invalid replies
! 	# will raise an exception.
! 	if sys.argv[1:]:
! 		year = eval(sys.argv[1])
! 	else:
! 		year = input('In which year were you born? ')
! 	if year in range(100):
! 		print 'I\'ll assume that by', year,
! 		year = year + 1900
! 		print 'you mean', year, 'and not the early Christian era'
! 	elif year not in range(1850, 2000):
! 		print 'It\'s hard to believe you were born in', year
! 		return
! 	#
! 	if sys.argv[2:]:
! 		month = eval(sys.argv[2])
! 	else:
! 		month = input('And in which month? (1-12) ')
! 	if month not in range(1, 13):
! 		print 'There is no month numbered', month
! 		return
! 	#
! 	if sys.argv[3:]:
! 		day = eval(sys.argv[3])
! 	else:
! 		day = input('And on what day of that month? (1-31) ')
! 	if month == 2 and calendar.isleap(year):
! 		maxday = 29
! 	else:
! 		maxday = calendar.mdays[month]
! 	if day not in range(1, maxday+1):
! 		print 'There are no', day, 'days in that month!'
! 		return
! 	#
! 	bdaytuple = (year, month, day)
! 	bdaydate = mkdate(bdaytuple)
! 	print 'You were born on', format(bdaytuple)
! 	#
! 	todaytuple = time.localtime(time.time())[:3]
! 	todaydate = mkdate(todaytuple)
! 	print 'Today is', format(todaytuple)
! 	#
! 	if bdaytuple > todaytuple:
! 		print 'You are a time traveler.  Go back to the future!'
! 		return
! 	#
! 	if bdaytuple == todaytuple:
! 		print 'You were born today.  Have a nice life!'
! 		return
! 	#
! 	days = todaydate - bdaydate
! 	print 'You have lived', days, 'days'
! 	#
! 	age = 0
! 	for y in range(year, todaytuple[0] + 1):
! 		if bdaytuple < (y, month, day) <= todaytuple:
! 			age = age + 1
! 	#
! 	print 'You are', age, 'years old'
! 	#
! 	if todaytuple[1:] == bdaytuple[1:]:
! 		print 'Congratulations!  Today is your', nth(age), 'birthday'
! 		print 'Yesterday was your',
! 	else:
! 		print 'Today is your',
! 	print nth(days - age), 'unbirthday'
  
  def format((year, month, day)):
! 	return '%d %s %d' % (day, calendar.month_name[month], year)
  
  def nth(n):
! 	if n == 1: return '1st'
! 	if n == 2: return '2nd'
! 	if n == 3: return '3rd'
! 	return '%dth' % n
  
  def mkdate((year, month, day)):
! 	# Januari 1st, in 0 A.D. is arbitrarily defined to be day 1,
! 	# even though that day never actually existed and the calendar
! 	# was different then...
! 	days = year*365			# years, roughly
! 	days = days + (year+3)/4	# plus leap years, roughly
! 	days = days - (year+99)/100	# minus non-leap years every century
! 	days = days + (year+399)/400	# plus leap years every 4 centirues
! 	for i in range(1, month):
! 		if i == 2 and calendar.isleap(year):
! 			days = days + 29
! 		else:
! 			days = days + calendar.mdays[i]
! 	days = days + day
! 	return days
  
  main()
--- 11,106 ----
  
  def main():
!     # Note that the range checks below also check for bad types,
!     # e.g. 3.14 or ().  However syntactically invalid replies
!     # will raise an exception.
!     if sys.argv[1:]:
!         year = int(sys.argv[1])
!     else:
!         year = int(raw_input('In which year were you born? '))
!     if 0<=year<100:
!         print "I'll assume that by", year,
!         year = year + 1900
!         print 'you mean', year, 'and not the early Christian era'
!     elif not (1850<=year<=2002):
!         print "It's hard to believe you were born in", year
!         return
!     #
!     if sys.argv[2:]:
!         month = int(sys.argv[2])
!     else:
!         month = int(raw_input('And in which month? (1-12) '))
!     if not (1<=month<=12):
!         print 'There is no month numbered', month
!         return
!     #
!     if sys.argv[3:]:
!         day = int(sys.argv[3])
!     else:
!         day = int(raw_input('And on what day of that month? (1-31) '))
!     if month == 2 and calendar.isleap(year):
!         maxday = 29
!     else:
!         maxday = calendar.mdays[month]
!     if not (1<=day<=maxday):
!         print 'There are no', day, 'days in that month!'
!         return
!     #
!     bdaytuple = (year, month, day)
!     bdaydate = mkdate(bdaytuple)
!     print 'You were born on', format(bdaytuple)
!     #
!     todaytuple = time.localtime()[:3]
!     todaydate = mkdate(todaytuple)
!     print 'Today is', format(todaytuple)
!     #
!     if bdaytuple > todaytuple:
!         print 'You are a time traveler.  Go back to the future!'
!         return
!     #
!     if bdaytuple == todaytuple:
!         print 'You were born today.  Have a nice life!'
!         return
!     #
!     days = todaydate - bdaydate
!     print 'You have lived', days, 'days'
!     #
!     age = 0
!     for y in range(year, todaytuple[0] + 1):
!         if bdaytuple < (y, month, day) <= todaytuple:
!             age = age + 1
!     #
!     print 'You are', age, 'years old'
!     #
!     if todaytuple[1:] == bdaytuple[1:]:
!         print 'Congratulations!  Today is your', nth(age), 'birthday'
!         print 'Yesterday was your',
!     else:
!         print 'Today is your',
!     print nth(days - age), 'unbirthday'
  
  def format((year, month, day)):
!     return '%d %s %d' % (day, calendar.month_name[month], year)
  
  def nth(n):
!     if n == 1: return '1st'
!     if n == 2: return '2nd'
!     if n == 3: return '3rd'
!     return '%dth' % n
  
  def mkdate((year, month, day)):
!     # Januari 1st, in 0 A.D. is arbitrarily defined to be day 1,
!     # even though that day never actually existed and the calendar
!     # was different then...
!     days = year*365                 # years, roughly
!     days = days + (year+3)/4        # plus leap years, roughly
!     days = days - (year+99)/100     # minus non-leap years every century
!     days = days + (year+399)/400    # plus leap years every 4 centirues
!     for i in range(1, month):
!         if i == 2 and calendar.isleap(year):
!             days = days + 29
!         else:
!             days = days + calendar.mdays[i]
!     days = days + day
!     return days
  
  main()