diff --git a/Homework_6/1Traffic_light.py b/Homework_6/1Traffic_light.py new file mode 100644 index 0000000..ad518c4 --- /dev/null +++ b/Homework_6/1Traffic_light.py @@ -0,0 +1,35 @@ +#Создать класс TrafficLight (светофор) и определить у него один атрибут color (цвет) и метод running (запуск). +# Атрибут реализовать как приватный. +# В рамках метода реализовать переключение светофора в режимы: красный, желтый, зеленый. +# Продолжительность первого состояния (красный) составляет 7 секунд, второго (желтый) — 2 секунды, третьего (зеленый) — на ваше усмотрение. +# Переключение между режимами должно осуществляться только в указанном порядке (красный, желтый, зеленый). +# Проверить работу примера, создав экземпляр и вызвав описанный метод. + +from itertools import count #Импортируем для бесконечного цикла. +import time #Для того, чтобы запись выводилась через некоторое время. +class TrafficLight: + def __init__(self): + color = self.running() #Формируем запуск. + return color #Возвращаем color, который запускает функцию running. + + + def running(self): + __color_base = ['Красный', 'Желтый', 'Зеленый'] #Создаем список из 3 цветов. + for timer in count(): #Запускаем бесконечный цикл. + for i in __color_base: + print(i) + if i == 'Красный': + time.sleep(7) #Позволяет выводить следующее значение через определенное + elif i == 'Желтый': #количество секунд. + time.sleep(2) + elif i == 'Зеленый': + time.sleep(4) + + + + +traffic_light = TrafficLight() +print(traffic_light) + + + diff --git a/Homework_6/2Madmax_furyroad.py b/Homework_6/2Madmax_furyroad.py new file mode 100644 index 0000000..daf6600 --- /dev/null +++ b/Homework_6/2Madmax_furyroad.py @@ -0,0 +1,24 @@ +#2. Реализовать класс Road (дорога), в котором определить атрибуты: +# length (длина), width (ширина). +# Значения данных атрибутов должны передаваться при создании экземпляра класса. Атрибуты сделать защищенными. +# Определить метод расчета массы асфальта, необходимого для покрытия всего дорожного полотна. +# Использовать формулу: длина * ширина * масса асфальта для покрытия одного кв метра дороги асфальтом, +# толщиной в 1 см * чи сло см толщины полотна. Проверить работу метода. +#Например: 20м * 5000м * 25кг * 5см = 12500 т + +class Road: + def __init__(self, length, width): + self._length = int(length) #Переводим значения в интовые(на всякий случай). + self._width = int(width) + asfalt_mass_for_santimeter = 20 #Количество сантиметров асфальта - константа. + asfalt_fat = 30 #Толщина на 1 см. + total_mass = width * length * asfalt_fat * asfalt_mass_for_santimeter #Формула + print(total_mass) #Выводим итог формулы. +# return total_mass + +mass_of_asphalt = Road(20,30) + + + + + diff --git a/Homework_6/3Worker.py b/Homework_6/3Worker.py new file mode 100644 index 0000000..992dc44 --- /dev/null +++ b/Homework_6/3Worker.py @@ -0,0 +1,28 @@ +#3. Реализовать базовый класс Worker (работник), в котором определить атрибуты: +# name, surname, position (должность), income (доход). +# Последний атрибут должен быть защищенным и ссылаться на словарь, содержащий элементы: +# оклад и премия, например, {"wage": wage, "bonus": bonus}. +# Создать класс Position (должность) на базе класса Worker. +# В классе Position реализовать методы получения полного имени сотрудника (get_full_name) +# и дохода с учетом премии (get_total_income). +# Проверить работу примера на реальных данных +# (создать экземпляры класса Position, передать данные, проверить значения атрибутов, вызвать методы экземпляров). + +class Worker: + def __init__(self, name, surname): + self.name = str(name) #Переводим в строку. + self.surname = str(surname) + self._income = {'wage': 1000, 'bonus': 500} #Создаем словарь income + + +class Position(Worker): + def worker_position(self): + get_full_name = (f'{self.name} {self.surname}') #Для вывода имени и фамилии. + a = (self._income.get('wage')) #Присваиваем значения переменной для удобного подсчета. + b = (self._income.get('bonus')) + get_total_income = a + b + return ([get_full_name,get_total_income]) #Возвращаем списком имя, фамилию и зарплату. + + +worker_prize = Position('a','b') +print(worker_prize.worker_position()) \ No newline at end of file diff --git a/Homework_6/4Car.py b/Homework_6/4Car.py new file mode 100644 index 0000000..abafd60 --- /dev/null +++ b/Homework_6/4Car.py @@ -0,0 +1,71 @@ +#4. Реализуйте базовый класс Car. +# У данного класса должны быть следующие атрибуты: speed, color, name, is_police (булево). +# А также методы: go, stop, turn(direction), которые должны сообщать, что машина поехала, остановилась, +# повернула (куда). +# Опишите несколько дочерних классов: TownCar, SportCar, WorkCar, PoliceCar. +# Добавьте в базовый класс метод show_speed, который должен показывать текущую скорость автомобиля. +# Для классов TownCar и WorkCar переопределите метод show_speed. +# При значении скорости свыше 60 (TownCar) и 40 (WorkCar) должно выводиться сообщение о превышении скорости. +#Создайте экземпляры классов, передайте значения атрибутов. +# Выполните доступ к атрибутам, выведите результат. +# Выполните вызов методов и также покажите результат. + +import time #Вызываем, чтобы машина поворачивала через определенное время. + +class Car: + def __init__(self,speed,color,name,is_police): + self.speed = speed #создаем атрибуты и список, который будет выводиться в конце + self.color = color #программы. + self.name = name + self.is_police = is_police + self.result = [] + self.result.append(self.color) + self.result.append(self.name) + self.result.append(self.is_police) + + def go(self): + print('Машина поехала!') + + def stop(self): + print('Машина остановилась!') + + def turn(self): + direction = ['Вправо', 'Влево'] #Список поворотов. + for timer in range(10): #Для остановки поворотов. + for i in direction: + print(f'Машина поехала {i}') + self.speed = self.speed + 1 #Увеличиваем скорость после каждого поворота. + # time.sleep(1) #Машина поворачивает через 1 секунду (закомментировано для удобства чтения). + + def show_speed(self): + print(f'Скорость: {self.speed}') + self.result.append(self.speed) #Добавляем в список скорость. + +class TownCar(Car): + def show_speed(self): + self.result.append(self.speed) + if self.speed > 60: #Условие вывода сообщения. + print('Скорость превышена!') + +class SportCar(Car): + def show_speed(self): + self.result.append(self.speed) + if self.speed > 60: + print('Это спорткар, детка! Поедем с ветерком!') + +class WorkCar(Car): + def show_speed(self): + self.result.append(self.speed) + if self.speed > 40: + print('Скорость превышена') + +class PoliceCar(Car): + def show_speed(self): + self.result.append(self.speed) + print('По машинам! Пора ловить преступников!') + + +mar = PoliceCar(50, 'red', 'Sport', True) +mar.turn() +mar.show_speed() +print(mar.result) \ No newline at end of file diff --git a/Homework_6/5stationery.py b/Homework_6/5stationery.py new file mode 100644 index 0000000..5537cb5 --- /dev/null +++ b/Homework_6/5stationery.py @@ -0,0 +1,31 @@ +class Stationary: + def __init__(self, title): + self.title = title + + def draw(self): + print('Запуск отрисовки.') + +class Pen(Stationary): + def draw(self): + print('Вы пишите ручкой. Прошлый век, да? Отнюдь.') + + +class Pensil(Stationary): + def draw(self): + print('Это что, карандаш? Вы, наверное, художник? Или не нашлось ручки, ха?') + + +class Handle(Stationary): + def draw(self): + print('О, это инструмент улиц. Вы рисуете граффити? Или просто любите писать жирно?') + + +station = Stationary('Название') +print(station.title) +station.draw() +station = Pen('Название') +station.draw() +station = Pensil('Название') +station.draw() +station = Handle('Название') +station.draw()