2015-11-02 2 views
0
import datetime 

class Time: 
    def __init__(self, init_hr = 10, init_min = 30, init_ampm = "AM"): 
    """ 
    initializes the hour, the minute, and a string indicating 
    whether it's an AM or PM time 
    """ 

     if init_hr < 1 or init_hr > 12: 
      raise Exception("Error: Invalid hour for Time object") 
     if init_min < 0 or init_min > 59: 
      raise Exception("Error: Invalid minute for Time object") 
     init_ampm = init_ampm.upper() 
     if init_ampm != "AM" and init_ampm != "PM": 
      raise Exception("Error: Invalid am/pm flag for Time object") 
     self.hr = init_hr 
     self.min = init_min 
     self.ampm = init_ampm 

def __add__(self, mins): 
    """ 
    Returns the sum of a Time instance and a non-negative integer mins 
    """ 
    if mins // 60 and self.hr < 12: 
     div = mins // 60 
     add = self.hr + div 
     mod = mins % 60 
     add2 = self.min + mod 
     string = Time(add, add2) 
     return string 
    elif mins // 60 and self.hr == 12: 
     div = mins // 60 
     addsub = self.hr + div - 12 
     mod = mins % 60 
     add2 = self.min + mod 
     string = Time(addsub, add2) 
     return string 

Когда я проверить функцию добавить это дает мне эту ошибку:возникли проблемы с оным

Traceback (most recent call last): 
    File "C:\Python34\problem2.py", line 313, in <module> 
    print("645 minutes after ", t3, " the time is", t3 + 645) 
    File "C:\Python34\problem2.py", line 100, in __add__ 
    string = Time(add, add2) 
    File "C:\Python34\problem2.py", line 18, in __init__ 
    raise Exception("Error: Invalid hour for Time object") 
Exception: Error: Invalid hour for Time object 

Не знаю, почему это дает мне эту ошибку, но иногда после полуночи всегда происходит эта ошибка. Любые решения?

+0

Это может помочь, если вы распечатали оскорбительное значение для 'init_hr'. –

+0

И именно то, что вы используете, чтобы «проверить» его. – BlivetWidget

+1

'add = self.hr + div', вероятно, дает значение больше, чем 12 –

ответ

1

В случае, если init_hr < 1 или init_hr> 12: состояние срабатывает. Это связано с тем, что add = self.hr + div больше 12 --- «раз после полуночи». Вы можете захотеть использовать оператор modulo, чтобы обернуться. Кажется, вы запустили свое время в 1. so ... (time% 12) + 1

Смежные вопросы