Vershitel_sudeb

Класс светофор

Jun 7th, 2021
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.92 KB | None | 0 0
  1. from time import sleep
  2.  
  3.  
  4. class TrafficLight:
  5.     """
  6.    Класс светофора, умеет менять цвета
  7.    """
  8.    
  9.     # Ассоциация цветов и времени их свечения
  10.     COLOR_TIMES = {'Красный': 3,
  11.                    'Желтый': 2,
  12.                    'Зеленый': 3}
  13.    
  14.     # Списк цветов чтобы их можно было получать по индексу
  15.     __colors_list = ['Красный','Желтый','Зеленый']
  16.    
  17.     # Индекс цвета с которого запускается светофор
  18.     __start_color_index = 0
  19.    
  20.     # Цвет который в данный момент имеет светофор
  21.     __color = None
  22.  
  23.     change_count = 3  # По дефолту сменяем три раза
  24.  
  25.     def __init__(self, init_color='Красный'):
  26.         """
  27.        Функция выполняемая при создании обекта класса
  28.        """
  29.        
  30.         # Если init_color есть среди доступных цветов __color примет такое же значение, иначе __color будет Красный
  31.         self.__color = init_color if init_color in self.__colors_list else 'Красный'
  32.        
  33.         # Записываем индекс первого цвета
  34.         self.__start_index = self.__colors_list.index(self.__color)
  35.  
  36.  
  37.     def running(self, change_count):
  38.         """
  39.        Функция которая меняет цвета заданное количество раз
  40.        """
  41.        
  42.         # Выполняем заданное количество раз
  43.         for i in range(change_count):
  44.            
  45.             # Получаем следующий индекс
  46.             num_color = (i + self.__start_index) % 3
  47.            
  48.             # Получаем цвет по индексу
  49.             self.__color = self.__colors_list[num_color]
  50.            
  51.             # Печатаем цвет
  52.             print(self.__color)
  53.            
  54.             # Засыпаем на заданное количество секунд
  55.             sleep(self.COLOR_TIMES[self.__color])
  56.            
  57.  
  58.  
  59. if __name__ == '__main__':
  60.    
  61.     # Создаем объект светофора
  62.     lights = TrafficLight('Зеленый')
  63.    
  64.     # Спрашиваем сколько раз менять цвет
  65.     change_count = input('Сколько раз поменяем цвета?: ')
  66.    
  67.     # До тех пор пока change_count не является числом запрашиваем его заново
  68.     while not change_count.isdigit():
  69.         change_count = input('Введите целое число: ')
  70.    
  71.     change_count = int(change_count)
  72.     # Запускаем смену цвета заданное количество раз
  73.     lights.running(change_count)
Add Comment
Please, Sign In to add comment