fork(1) download
  1. import re
  2. import sys
  3. import time
  4.  
  5. def minutes(timestr):
  6. """Return number of minutes in timestr that must be either ##:## or #:##."""
  7. m = re.match(r"(\d?\d):(\d\d)$", timestr)
  8. if m is None:
  9. raise ValueError("Invalid timestr: %r" % (timestr,))
  10. h, m = map(int, m.groups())
  11. return 60*h + m
  12.  
  13. def minutes2(timestr):
  14. h, m = map(int, timestr.partition(':')[::2])
  15. return 60*h + m
  16.  
  17. def minutes3(timestr):
  18. t = time.strptime(timestr, "%H:%M")
  19. return 60*t.tm_hour + t.tm_min
  20.  
  21.  
  22. for timestr in sys.stdin:
  23. timestr = timestr.rstrip('\n')
  24. for f in [minutes, minutes2, minutes3]:
  25. try:
  26. result = f(timestr)
  27. except ValueError as e:
  28. print("%-8s(%5r) -> error: %s" % (f.__name__, timestr, e))
  29. else:
  30. print("%-8s(%5r) -> %s" % (f.__name__, timestr, result))
Success #stdin #stdout 0.03s 6000KB
stdin
12:11
  12:11
12:11  
3:45
03:45
13:4
13:04
24:00
11:60
stdout
minutes ('12:11') -> 731
minutes2('12:11') -> 731
minutes3('12:11') -> 731
minutes ('  12:11') -> error: Invalid timestr: '  12:11'
minutes2('  12:11') -> 731
minutes3('  12:11') -> error: time data '  12:11' does not match format '%H:%M'
minutes ('12:11  ') -> error: Invalid timestr: '12:11  '
minutes2('12:11  ') -> 731
minutes3('12:11  ') -> error: unconverted data remains:   
minutes ('3:45') -> 225
minutes2('3:45') -> 225
minutes3('3:45') -> 225
minutes ('03:45') -> 225
minutes2('03:45') -> 225
minutes3('03:45') -> 225
minutes ('13:4') -> error: Invalid timestr: '13:4'
minutes2('13:4') -> 784
minutes3('13:4') -> 784
minutes ('13:04') -> 784
minutes2('13:04') -> 784
minutes3('13:04') -> 784
minutes ('24:00') -> 1440
minutes2('24:00') -> 1440
minutes3('24:00') -> error: time data '24:00' does not match format '%H:%M'
minutes ('11:60') -> 720
minutes2('11:60') -> 720
minutes3('11:60') -> error: unconverted data remains: 0