From 3b79a0a3285616a0a170138d8c33827bdc6ad76f Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 11:25:31 +0300 Subject: [PATCH 01/10] Init task-1 --- task-1.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 task-1.py diff --git a/task-1.py b/task-1.py new file mode 100644 index 0000000..a15fb30 --- /dev/null +++ b/task-1.py @@ -0,0 +1,11 @@ +""" +Задание: +Создать класс TrafficLight (светофор) и определить у него один атрибут color (цвет) и метод running (запуск). +Атрибут реализовать как приватный. В рамках метода реализовать переключение светофора в режимы: красный, желтый,зеленый. +Продолжительность первого состояния (красный) составляет 7 секунд, второго (желтый) — 2 секунды, +третьего (зеленый) — на ваше усмотрение. +Переключение между режимами должно осуществляться только в указанном порядке (красный, желтый, зеленый). +Проверить работу примера, создав экземпляр и вызвав описанный метод. +Задачу можно усложнить, реализовав проверку порядка режимов, +и при его нарушении выводить соответствующее сообщение и завершать скрипт. +""" From 2045a09f49b2278e677ed1ef19e2ed424af05c9b Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 11:25:50 +0300 Subject: [PATCH 02/10] Comp task-1 --- task-1.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/task-1.py b/task-1.py index a15fb30..c60d20d 100644 --- a/task-1.py +++ b/task-1.py @@ -9,3 +9,27 @@ Задачу можно усложнить, реализовав проверку порядка режимов, и при его нарушении выводить соответствующее сообщение и завершать скрипт. """ + + +import itertools +import time + + +class TrafficLight: + + __lights = {"красный": 7, "желтый": 2, "зеленый": 7} + + def __gen_cycle(self): + for c in itertools.cycle(["красный", "желтый", "зеленый"]): + yield self.__lights[c] + + __color = None + + def running(self): + for self.__color in itertools.cycle(["красный", "желтый", "зеленый"]): + print("Текущий цвет: {}".format(self.__color)) + time.sleep(self.__lights[self.__color]) + + +trafficLight1 = TrafficLight() +trafficLight1.running() \ No newline at end of file From 582e4ee4785e19eb3c1647db18f8c0a2513f514c Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 11:26:57 +0300 Subject: [PATCH 03/10] Init task-2 --- task-2.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 task-2.py diff --git a/task-2.py b/task-2.py new file mode 100644 index 0000000..d039c45 --- /dev/null +++ b/task-2.py @@ -0,0 +1,9 @@ +""" +Задание: +Реализовать класс Road (дорога), в котором определить атрибуты: length (длина), width (ширина). +Значения данных атрибутов должны передаваться при создании экземпляра класса. Атрибуты сделать защищенными. +Определить метод расчета массы асфальта, необходимого для покрытия всего дорожного полотна. +Использовать формулу: длина*ширина*масса асфальта для покрытия одного кв метра дороги асфальтом, +толщиной в 1 см*число см толщины полотна. Проверить работу метода. +Например: 20м*5000м*25кг*5см = 12500 т +""" \ No newline at end of file From 945330505fd0e34516e0ecfb8be17bc0954fef18 Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 12:15:39 +0300 Subject: [PATCH 04/10] Init task-3 --- task-3.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 task-3.py diff --git a/task-3.py b/task-3.py new file mode 100644 index 0000000..1b2b847 --- /dev/null +++ b/task-3.py @@ -0,0 +1,10 @@ +""" +Задание: +Реализовать базовый класс Worker (работник), в котором определить атрибуты: name, surname, position (должность), +income (доход). Последний атрибут должен быть защищенным и ссылаться на словарь, содержащий элементы: оклад и премия, +например, {"wage": wage, "bonus": bonus}. Создать класс Position (должность) на базе класса Worker. +В классе Position реализовать методы получения полного имени сотрудника (get_full_name) +и дохода с учетом премии (get_total_income). +Проверить работу примера на реальных данных (создать экземпляры класса Position, +передать данные, проверить значения атрибутов, вызвать методы экземпляров). +""" \ No newline at end of file From 3b59b333ef24098dcd6d0f2bfc36fbd8750a2898 Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 16:13:11 +0300 Subject: [PATCH 05/10] Comp task-3 --- task-3.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/task-3.py b/task-3.py index 1b2b847..dbb0c8e 100644 --- a/task-3.py +++ b/task-3.py @@ -7,4 +7,29 @@ и дохода с учетом премии (get_total_income). Проверить работу примера на реальных данных (создать экземпляры класса Position, передать данные, проверить значения атрибутов, вызвать методы экземпляров). -""" \ No newline at end of file +""" + +di = {"wage": 43000, "bonus": 25000} + + +class Worker: + name = None + surname = None + position = None + _income = di + + +class Position(Worker): + def get_full_name(self): + return "{} {}".format(self.name, self.surname) + + def get_total_income(self): + return sum([value for name, value in self._income.items()]) + + +IvanovIvan = Position() +IvanovIvan.name = "Ivan" +IvanovIvan.surname = "Ivanov" + +print(IvanovIvan.get_full_name(), end=" ") +print(IvanovIvan.get_total_income()) From 5ab9c0a0a828d2cee198eb298b3acc2c947f02f2 Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 16:50:07 +0300 Subject: [PATCH 06/10] Init task-4 --- task-4.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 task-4.py diff --git a/task-4.py b/task-4.py new file mode 100644 index 0000000..740d3e6 --- /dev/null +++ b/task-4.py @@ -0,0 +1,10 @@ +""" +Задание: +Реализуйте базовый класс Car. У данного класса должны быть следующие атрибуты: speed, color, name, is_police (булево). +А также методы: go, stop, turn(direction), которые должны сообщать, что машина поехала, остановилась, повернула (куда). +Опишите несколько дочерних классов: TownCar, SportCar, WorkCar, PoliceCar. Добавьте в базовый класс метод show_speed, +который должен показывать текущую скорость автомобиля. Для классов TownCar и WorkCar переопределите метод show_speed. +При значении скорости свыше 60 (TownCar) и 40 (WorkCar) должно выводиться сообщение о превышении скорости. +Создайте экземпляры классов, передайте значения атрибутов. Выполните доступ к атрибутам, выведите результат. +Выполните вызов методов и также покажите результат. +""" \ No newline at end of file From ce8e329971ecd8928d1ba4e8663ba1686f3d2276 Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 17:22:25 +0300 Subject: [PATCH 07/10] Comp task-4 --- task-4.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/task-4.py b/task-4.py index 740d3e6..e6186f4 100644 --- a/task-4.py +++ b/task-4.py @@ -7,4 +7,68 @@ При значении скорости свыше 60 (TownCar) и 40 (WorkCar) должно выводиться сообщение о превышении скорости. Создайте экземпляры классов, передайте значения атрибутов. Выполните доступ к атрибутам, выведите результат. Выполните вызов методов и также покажите результат. -""" \ No newline at end of file +""" + + +class Car: + speed = 0 + color = None + name = None + is_police = False + + def __init__(self): + self.is_police = False + + def go(self): + pass + + def stop(self): + pass + + def turn(self, direction): + pass + + def show_speed(self): + print("Speed {} kn/h".format(self.speed)) + +class TownCar(Car): + def show_speed(self): + # 60 + print("Speed {} kn/h{}".format(self.speed, "" if self.speed <= 60 else " превышение")) + + +class WorkCar(Car): + def show_speed(self): + # 40 + print("Speed {} kn/h{}".format(self.speed, "" if self.speed <= 40 else " превышение")) + +class SportCar(Car): + pass + +class PoliceCar(Car): + def __init__(self): + self.is_police = True + +A = TownCar() +A.speed = 60 +A.color = "red" +A.name = "Name A" +A.show_speed() + +B = WorkCar() +B.speed = 60 +B.color = "green" +B.name = "Name B" +B.show_speed() + +C = SportCar() +C.speed = 60 +C.color = "blue" +C.name = "Name C" +C.show_speed() + +D = PoliceCar() +D.speed = 60 +D.color = "transparent" +D.name = "Name D" +D.show_speed() \ No newline at end of file From 0d4b73d8b1c72f06fac11a75517f150adcd82959 Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 17:23:31 +0300 Subject: [PATCH 08/10] Init task-5 --- task-5.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 task-5.py diff --git a/task-5.py b/task-5.py new file mode 100644 index 0000000..2a15024 --- /dev/null +++ b/task-5.py @@ -0,0 +1,9 @@ +""" +Задание: +Реализовать класс Stationery (канцелярская принадлежность). +Определить в нем атрибут title (название) и метод draw (отрисовка). +Метод выводит сообщение “Запуск отрисовки.” Создать три дочерних класса Pen (ручка), Pencil (карандаш), Handle (маркер). +В каждом из классов реализовать переопределение метода draw. +Для каждого из классов метод должен выводить уникальное сообщение. Создать экземпляры классов и проверить, +что выведет описанный метод для каждого экземпляра. +""" \ No newline at end of file From e1d18ec06958a837f93d78946ad5dcbb196d2156 Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 17:27:30 +0300 Subject: [PATCH 09/10] Comp task-5 --- task-5.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/task-5.py b/task-5.py index 2a15024..ecc247c 100644 --- a/task-5.py +++ b/task-5.py @@ -6,4 +6,29 @@ В каждом из классов реализовать переопределение метода draw. Для каждого из классов метод должен выводить уникальное сообщение. Создать экземпляры классов и проверить, что выведет описанный метод для каждого экземпляра. -""" \ No newline at end of file +""" + +class Stationery: + title = None + + def draw(self): + print("Запуск отрисовки. Объект {}".format(self.title)) + +class Pen(Stationery): + title = "ручка" + +class Pencil(Stationery): + title = "карандаш" + +class Handle(Stationery): + title = "маркер" + + +A = Pen() +A.draw() + +B = Pencil() +B.draw() + +C = Handle() +C.draw() \ No newline at end of file From 445b7fe6e217ae12fc32f63d6461701766f40200 Mon Sep 17 00:00:00 2001 From: Andrey Yushkov Date: Wed, 29 Jul 2020 17:30:26 +0300 Subject: [PATCH 10/10] Comp task-2 --- task-2.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/task-2.py b/task-2.py index d039c45..9a41027 100644 --- a/task-2.py +++ b/task-2.py @@ -6,4 +6,22 @@ Использовать формулу: длина*ширина*масса асфальта для покрытия одного кв метра дороги асфальтом, толщиной в 1 см*число см толщины полотна. Проверить работу метода. Например: 20м*5000м*25кг*5см = 12500 т -""" \ No newline at end of file +""" +class Road: + + __length = None + __width = None + __deep = None + __weight = None + + def calc(self): + return int(self.__deep * self.__weight * self.__length * self.__width) + + def __init__(self, length, width, deep=5, weight=25): + self.__length = length + self.__width = width + self.__deep = deep / 1000 + self.__weight = weight + +Road1 = Road(20, 5000) +print("{} Т".format(Road1.calc())) \ No newline at end of file