diff --git a/06_hw_01.py b/06_hw_01.py new file mode 100644 index 0000000..5d5f648 --- /dev/null +++ b/06_hw_01.py @@ -0,0 +1,27 @@ +# 1) Создать класс TrafficLight (светофор) и определить у него один атрибут color (цвет) и метод +# running (запуск). Атрибут реализовать как приватный. В рамках метода реализовать +# переключение светофора в режимы: красный, желтый, зеленый. Время перехода между +# режимами должно составлять 7 и 2 секунды. Проверить работу примера, создав экземпляр и +# вызвав описанный метод. + +import time + + +class TrafficLight: + # __color = 'color' + + def t_running(self): + i = 7 + j = 2 + self.__color = 'Red' + print(self.__color) + time.sleep(i) # in seconds + self.__color = 'Yellow' + print(self.__color) + time.sleep(j) # in seconds + self.__color = 'Green' + print(self.__color) + + +t = TrafficLight() +t.t_running() diff --git a/06_hw_02.py b/06_hw_02.py new file mode 100644 index 0000000..67e6e83 --- /dev/null +++ b/06_hw_02.py @@ -0,0 +1,20 @@ +# 2) Реализовать класс Road (дорога), в котором определить атрибуты: length (длина), width +# (ширина). Значения данных атрибутов должны передаваться при создании экземпляра класса. +# Атрибуты сделать защищенными. Определить метод расчета массы асфальта, необходимого +# для покрытия всего дорожного полотна. Использовать формулу: длина*ширина*масса +# асфальта для покрытия одного кв метра дороги асфальтом, толщиной в 1 см*число см +# толщины полотна. Проверить работу метода. +# Например: 20м*5000м*25кг*5см = 12500 т + + +class Road: + def mass_calc(self, _length, _width): + self._width = _width + self._length = _length + asp_mass = self._length * self._width * 25 * 1 / 1000 + print(f'Масса асфальта для укладки толщиной 1 см составляет {asp_mass} т') + + +m = Road() +m.mass_calc(20, 5000) + diff --git a/06_hw_03.py b/06_hw_03.py new file mode 100644 index 0000000..8eedd0a --- /dev/null +++ b/06_hw_03.py @@ -0,0 +1,36 @@ +# 3) Реализовать базовый класс Worker (работник), в котором определить атрибуты: name , +# surname , position (должность), income (доход). Последний атрибут должен быть +# защищенным и ссылаться на словарь, содержащий элементы: оклад и премия, например, +# {"profit": profit, "bonus": bonus}. Создать класс Position (должность) на базе класса Worker . +# В классе Position реализовать методы получения полного имени сотрудника ( get_full_name ) и +# дохода с учетом премии ( get_full_profit) . Проверить работу примера на реальных данных +# (создать экземпляры класса Position , передать данные, проверить значения атрибутов, +# вызвать методы экземпляров). + + +class Worker: + def __init__(self, name, surname, position, profit, bonus): + self.name = name + self.surname = surname + self.position = position + self._income = {"profit": profit, "bonus": bonus} + + +class Position(Worker): + def __init__(self, name, surname, position, profit, bonus): + super().__init__(name, surname, position, profit, bonus) + + def get_full_name(self, name, surname): + self.name = name + self.surname = surname + + def get_full_profit(self, _income): + pass + # self.profit = profit + # self.bonus = bonus + self._income = _income + + +n = Position('Ivan', 'Novak', 'CEO', 10000, 3000) +print(n.name + ' ' + n.surname) +print(n._income) diff --git a/06_hw_04.py b/06_hw_04.py new file mode 100644 index 0000000..1f559dd --- /dev/null +++ b/06_hw_04.py @@ -0,0 +1,117 @@ +# 4) Опишите несколько классов: TownCar , SportCar , WorkCar , PoliceCar . У каждого класса +# должны быть следующие атрибуты: speed , color , name , is_police (булево). А также несколько +# методов: go , stop , turn(direction) , которые должны сообщать, что машина поехала, +# остановилась, повернула (куда). + + +class TownCar: + speed = 60 + color = 'Yellow' + name = 'Cabby' + is_police = False + + def go(self): + print(f"Автомобиль {self.name} начал движение") + + def stop(self): + print(f"Автомобиль {self.name} остановился") + + def turn(self, turn_angle): + self.turn_angle = turn_angle + if self.turn_angle > 0: + print(f"Автомобиль {self.name} повернул налево") + elif self.turn_angle < 0: + print(f"Автомобиль {self.name} повернул направо") + else: + print(f"Автомобиль {self.name} движется прямо") + + +class SportCar: + speed = 380 + color = 'Red' + name = 'Sport Car' + is_police = False + + def go(self): + print(f"Автомобиль {self.name} начал движение") + + def stop(self): + print(f"Автомобиль {self.name} остановился") + + def turn(self, turn_angle): + self.turn_angle = turn_angle + if self.turn_angle > 0: + print(f"Автомобиль {self.name} повернул налево") + elif self.turn_angle < 0: + print(f"Автомобиль {self.name} повернул направо") + else: + print(f"Автомобиль {self.name} движется прямо") + + +class WorkCar: + speed = 40 + color = 'Grey' + name = 'Worker' + is_police = False + + def go(self): + print(f"Автомобиль {self.name} начал движение") + + def stop(self): + print(f"Автомобиль {self.name} остановился") + + def turn(self, turn_angle): + self.turn_angle = turn_angle + if self.turn_angle > 0: + print(f"Автомобиль {self.name} повернул налево") + elif self.turn_angle < 0: + print(f"Автомобиль {self.name} повернул направо") + else: + print(f"Автомобиль {self.name} движется прямо") + + +class PoliceCar: + speed = 180 + color = 'Black' + name = 'Officer' + is_police = True + + def go(self): + print(f"Автомобиль {self.name} начал движение") + + def stop(self): + print(f"Автомобиль {self.name} остановился") + + def turn(self, turn_angle): + self.turn_angle = turn_angle + if self.turn_angle > 0: + print(f"Автомобиль {self.name} повернул налево") + elif self.turn_angle < 0: + print(f"Автомобиль {self.name} повернул направо") + else: + print(f"Автомобиль {self.name} движется прямо") + + +t = TownCar() +t.go() +t.turn(10) +t.turn(-10) +t.stop() + +s = SportCar() +s.go() +s.turn(10) +s.turn(-10) +s.stop() + +w = WorkCar() +w.go() +w.turn(10) +w.turn(-10) +w.stop() + +p = PoliceCar() +p.go() +p.turn(10) +p.turn(-10) +p.stop() diff --git a/06_hw_05.py b/06_hw_05.py new file mode 100644 index 0000000..f212533 --- /dev/null +++ b/06_hw_05.py @@ -0,0 +1,41 @@ +# 5) Реализовать класс Stationery (канцелярская принадлежность). Определить в нем атрибут title +# (название) и метод draw (отрисовка). Метод выводит сообщение “Запуск отрисовки.” Создать +# три дочерних класса Pen (ручка), Pencil (карандаш), Handle (маркер). В каждом из классов +# реализовать переопределение метода draw . Для каждого из классов методы должен +# выводить уникальное сообщение. Создать экземпляры классов и проверить, что выведет +# описанный метод для каждого экземпляра. + + +class Stationery: + title = 'Stationery' + + def draw(self): + print(f"Запуск отрисовки") + + +class Pen(Stationery): + + def draw(self): + print(f"Запуск отрисовки Ручки") + + +class Pencil(Stationery): + + def draw(self): + print(f"Запуск отрисовки Карандаша") + + +class Handle(Stationery): + + def draw(self): + print(f"Запуск отрисовки Маркера") + + +p = Pen() +p.draw() + +pl = Pencil() +pl.draw() + +h = Handle() +h.draw()