2015-01-12 4 views
-2
class Time: 
    """The time class defines the time with the following attributes: 
    hour ,minutes , second 
    """ 
    def __init__(self,hour=12,minutes=0,seconds=0): 
     self.hour = hour 
     self.minutes = minutes 
     self.seconds = seconds 

    #attributes 
    hour = 12 
    minutes = 0 
    seconds = 0 

    def get_hour(self): 
     return self.hour 

    def get_minutes(self): 
     return self.minutes 

    def get_seconds(self): 
     return self.seconds 

    def print_time(self): 
     print(self.get_hour()+":"+self.get_minutes()+":"+self.get_seconds()) 

    def set_hour(self, new_hour): 
     self.hour = new_hour 

    def set_minutes(self, new_minutes): 
     self.minutes = new_minutes 

    def set_seconds(self, new_seconds): 
     self.seconds = new_seconds 

    def increment_seconds(self): 
     if self.seconds == 59: 
      self.seconds = 0 
      self.minutes = self.minutes + 1 
     else: 
      self.seconds = self.seconds + 1 
    def increment_minutes(self): 
     if self.minutes == 59: 
      self.minutes = 0 
      self.hour = self.hour + 1 
     else: 
      self.minutes = self.minutes + 1 
    def increment_hour(self): 
     if self.hour == 12: 
      self.hour = 1 
     else: 
      self.hour = self.hour + 1 

print("making 2 instances of time") 
time1 = Time() 
time2 = Time(14,34,12) 
print("this is before") 
print("normal time",time1.print_time()) 
print("user time",time2.print_time()) 

time1.increment_hour() 
time1.increment_minutes() 
time1.increment_seconds() 
print("after") 
time1.print_time() 


time2.increment_hour() 
time2.increment_minutes() 
time2.increment_seconds() 
print("after") 
time2.print_time() 

так им пытаются сделать класс для времени и есть его функция и т.д. и т.д., но им пытается также создать 2 экземпляра времени один с defult и один с определенным пользователем. Я думал, что это правильно, но я продолжаю получать эту ошибку. Любая помощьTypeError: неподдерживаемый тип операнда (ов) для +: «Int» и «ул» для питона

+1

как ошибки говорят, вы не можете добавлять строки и Интс. – njzk2

+1

Можете ли вы предоставить дополнительную информацию? Какая строка вызывает ошибку? – sfjac

+0

Это функция print_time. Я уже ответил на его вопрос, может он примет это. – ProgrammingIsAwsome

ответ

0

Проблема здесь:

print(self.get_hour()+":"+self.get_minutes()+":"+self.get_seconds()) 

Вы конкатенации ул типа и ИНТ-типа с оператором плюс (+) ":" < - СИЛ + self.get_seconds() < - Int

Таким образом, вы должны написать:

print(str(self.get_hour())+":"+str(self.get_minutes())+":"+str(self.get_seconds())) 

a = 3 
b = "test" 

print a + b <-- this is not working (str + int) 
print str(a) + b <-- this is working (str + str) 

Вот почему он говорит: неподдерживаемый операнд типа (ов)

+0

: D Большое вам спасибо, я не могу поверить, что я этого не видел – Chirag

+0

Если да, пожалуйста, примите ответ, если это вам поможет. – ProgrammingIsAwsome

1

Похоже, вы не знакомы с тем, как конкатенация/интерполяция данных в строки. В Python вы не можете использовать + для конкатенации строк, если оба операнда не являются строками. Более того, конкатенация на самом деле не идиоматична в Python, и люди обычно предпочитают интерполяцию/форматирование.

У вас есть два варианта в этом случае:

  1. Использование строки интерполяции:

    def print_time(self): 
        print("{0}:{1}:{2}".format(self.get_hour(), self.get_minutes(), self.get_seconds())) 
    
  2. Использование метода Строка .join:

    def print_time(self): 
        print(':'.join(self.get_hour(), self.get_minutes(), self.get_seconds())) 
    
1

отслеживающий является рассказывая вам все, что вам нужно знать. Вы пытаетесь добавить строку в int. Наиболее очевидное место, что происходит здесь:

def print_time(self): 
     print(self.get_hour()+":"+self.get_minutes()+":"+self.get_seconds()) 

Вот один из возможных решений:

def print_time(self): 
     print('{}:{}:{}'.format(self.get_hour(), self.get_minutes(), self.get_seconds()) 
Смежные вопросы