From 6dd8711e532b16c4fa8d64efe92d28c85c5e5885 Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Sun, 1 Nov 2020 17:49:42 +0300 Subject: [PATCH 1/9] les06 initial --- homeworks/task01.py | 12 ++++++++++++ homeworks/task02.py | 8 ++++++++ homeworks/task03.py | 12 ++++++++++++ homeworks/task04.py | 9 +++++++++ homeworks/task05.py | 7 +++++++ 5 files changed, 48 insertions(+) create mode 100644 homeworks/task01.py create mode 100644 homeworks/task02.py create mode 100644 homeworks/task03.py create mode 100644 homeworks/task04.py create mode 100644 homeworks/task05.py diff --git a/homeworks/task01.py b/homeworks/task01.py new file mode 100644 index 0000000..bd87ebf --- /dev/null +++ b/homeworks/task01.py @@ -0,0 +1,12 @@ +""" +1. Создать класс TrafficLight (светофор) и определить у него один атрибут color (цвет) и метод running (запуск). +Атрибут реализовать как приватный. В рамках метода реализовать переключение светофора в режимы: +красный, желтый, зеленый. +Продолжительность первого состояния (красный) составляет 7 секунд, второго (желтый) — 2 секунды, + третьего (зеленый) — на ваше усмотрение. + Переключение между режимами должно осуществляться только в указанном порядке (красный, желтый, зеленый). + Проверить работу примера, создав экземпляр и вызвав описанный метод. + +Задачу можно усложнить, реализовав проверку порядка режимов, и при его нарушении выводить соответствующее сообщение и +завершать скрипт. +""" \ No newline at end of file diff --git a/homeworks/task02.py b/homeworks/task02.py new file mode 100644 index 0000000..ff7cf8e --- /dev/null +++ b/homeworks/task02.py @@ -0,0 +1,8 @@ +""" +2. Реализовать класс Road (дорога), в котором определить атрибуты: length (длина), width (ширина). +Значения данных атрибутов должны передаваться при создании экземпляра класса. +Атрибуты сделать защищенными. Определить метод расчета массы асфальта, необходимого для покрытия всего дорожного полотна. +Использовать формулу: длина * ширина * масса асфальта для покрытия одного кв метра дороги асфальтом, +толщиной в 1 см * чи сло см толщины полотна. Проверить работу метода. +Например: 20м * 5000м * 25кг * 5см = 12500 т +""" \ No newline at end of file diff --git a/homeworks/task03.py b/homeworks/task03.py new file mode 100644 index 0000000..ad14aad --- /dev/null +++ b/homeworks/task03.py @@ -0,0 +1,12 @@ +""" +3. Реализовать базовый класс 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 diff --git a/homeworks/task04.py b/homeworks/task04.py new file mode 100644 index 0000000..1b401c2 --- /dev/null +++ b/homeworks/task04.py @@ -0,0 +1,9 @@ +""" +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) должно выводиться сообщение о превышении +скорости. Создайте экземпляры классов, передайте значения атрибутов. Выполните доступ к атрибутам, +выведите результат. Выполните вызов методов и также покажите результат. +""" \ No newline at end of file diff --git a/homeworks/task05.py b/homeworks/task05.py new file mode 100644 index 0000000..2b76089 --- /dev/null +++ b/homeworks/task05.py @@ -0,0 +1,7 @@ +""" +5. Реализовать класс Stationery (канцелярская принадлежность). Определить в нем атрибут title (название) и метод +draw (отрисовка). Метод выводит сообщение “Запуск отрисовки.” Создать три дочерних класса Pen (ручка), +Pencil (карандаш), Handle (маркер). В каждом из классов реализовать переопределение метода draw. Для каждого из +классов методы должен выводить уникальное сообщение. Создать экземпляры классов и проверить, что выведет описанный +метод для каждого экземпляра. +""" \ No newline at end of file From 794025f9cf90aece7821bb07570de1247661fc87 Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Sun, 1 Nov 2020 20:32:54 +0300 Subject: [PATCH 2/9] les06 task[1:5] --- homeworks/task01.py | 29 +- homeworks/task02.py | 17 +- homeworks/task03.json | 702 ++++++++++++++++++++++++++++++++++++++++++ homeworks/task03.py | 28 +- homeworks/task04.py | 38 ++- 5 files changed, 810 insertions(+), 4 deletions(-) create mode 100644 homeworks/task03.json diff --git a/homeworks/task01.py b/homeworks/task01.py index bd87ebf..16c4c26 100644 --- a/homeworks/task01.py +++ b/homeworks/task01.py @@ -9,4 +9,31 @@ Задачу можно усложнить, реализовав проверку порядка режимов, и при его нарушении выводить соответствующее сообщение и завершать скрипт. -""" \ No newline at end of file +""" +from time import sleep + + +class TrafficLight: + def __init__(self): + self.__color = '' + + def _run(self, color, time): + self.__color = color + self._shine(time) + + def _shine(self, time): + print(self.__color, end='') + for _ in range(time): + sleep(1) + print('.', end='') + print('') + + def running(self): + self._run('красный', 7) + self._run('желтый', 2) + + self._run('зеленый', 5) + + +light_1 = TrafficLight() +light_1.running() diff --git a/homeworks/task02.py b/homeworks/task02.py index ff7cf8e..60549ee 100644 --- a/homeworks/task02.py +++ b/homeworks/task02.py @@ -5,4 +5,19 @@ Использовать формулу: длина * ширина * масса асфальта для покрытия одного кв метра дороги асфальтом, толщиной в 1 см * чи сло см толщины полотна. Проверить работу метода. Например: 20м * 5000м * 25кг * 5см = 12500 т -""" \ No newline at end of file +""" + + +class Road: + _mass_asphalt_m2 = 25 + + def __init__(self, length, width): + self._length = length + self._width = width + + def mass_asphalt(self, depth): + print('Масса асфальта', self._length * self._width * self._mass_asphalt_m2 * depth) + + +near_road = Road(1000, 24) +near_road.mass_asphalt(8) diff --git a/homeworks/task03.json b/homeworks/task03.json new file mode 100644 index 0000000..566c364 --- /dev/null +++ b/homeworks/task03.json @@ -0,0 +1,702 @@ +[ + { + "name": "Xander", + "surname": "Gibson", + "position": "ullamcorper.", + "wage": 23411, + "bonus": 4949 + }, + { + "name": "Chaney", + "surname": "Petersen", + "position": "dictum", + "wage": 38224, + "bonus": 1873 + }, + { + "name": "Russell", + "surname": "Carney", + "position": "leo.", + "wage": 22922, + "bonus": 2580 + }, + { + "name": "Akeem", + "surname": "Duncan", + "position": "elit", + "wage": 46717, + "bonus": 2376 + }, + { + "name": "Oren", + "surname": "Chase", + "position": "eget", + "wage": 27353, + "bonus": 1766 + }, + { + "name": "Stuart", + "surname": "Palmer", + "position": "est.", + "wage": 34114, + "bonus": 1174 + }, + { + "name": "Sylvester", + "surname": "Velazquez", + "position": "Nullam", + "wage": 31412, + "bonus": 4328 + }, + { + "name": "Caleb", + "surname": "Bryant", + "position": "augue.", + "wage": 25348, + "bonus": 4741 + }, + { + "name": "Igor", + "surname": "Greene", + "position": "metus", + "wage": 39917, + "bonus": 4262 + }, + { + "name": "Wallace", + "surname": "Holcomb", + "position": "habitant", + "wage": 32996, + "bonus": 4602 + }, + { + "name": "Lucius", + "surname": "Holman", + "position": "Cras", + "wage": 44048, + "bonus": 3762 + }, + { + "name": "Laith", + "surname": "Carey", + "position": "malesuada", + "wage": 29871, + "bonus": 4954 + }, + { + "name": "Lee", + "surname": "Terrell", + "position": "cursus", + "wage": 32074, + "bonus": 1503 + }, + { + "name": "Gary", + "surname": "Cherry", + "position": "Curabitur", + "wage": 20366, + "bonus": 1462 + }, + { + "name": "Marvin", + "surname": "Martin", + "position": "nunc.", + "wage": 49151, + "bonus": 1761 + }, + { + "name": "Shad", + "surname": "Spears", + "position": "quis", + "wage": 23122, + "bonus": 4712 + }, + { + "name": "Simon", + "surname": "Taylor", + "position": "ante", + "wage": 30134, + "bonus": 1236 + }, + { + "name": "Jason", + "surname": "Welch", + "position": "nunc", + "wage": 40806, + "bonus": 3582 + }, + { + "name": "Paki", + "surname": "Shepherd", + "position": "consectetuer", + "wage": 20221, + "bonus": 4000 + }, + { + "name": "Moses", + "surname": "Mccarthy", + "position": "aptent", + "wage": 49211, + "bonus": 3383 + }, + { + "name": "Harlan", + "surname": "Alvarado", + "position": "Aenean", + "wage": 23286, + "bonus": 3471 + }, + { + "name": "Travis", + "surname": "Mclean", + "position": "Mauris", + "wage": 33811, + "bonus": 1075 + }, + { + "name": "Sean", + "surname": "Mann", + "position": "elit", + "wage": 20026, + "bonus": 1198 + }, + { + "name": "Allistair", + "surname": "Barker", + "position": "auctor", + "wage": 37356, + "bonus": 1832 + }, + { + "name": "Warren", + "surname": "Wilkinson", + "position": "porttitor", + "wage": 27138, + "bonus": 1630 + }, + { + "name": "Mason", + "surname": "Hester", + "position": "tristique", + "wage": 39485, + "bonus": 2863 + }, + { + "name": "Colby", + "surname": "Richards", + "position": "erat", + "wage": 24275, + "bonus": 4331 + }, + { + "name": "Addison", + "surname": "Mccall", + "position": "nec", + "wage": 48428, + "bonus": 1024 + }, + { + "name": "Paki", + "surname": "Meyers", + "position": "vel,", + "wage": 49532, + "bonus": 4899 + }, + { + "name": "Gregory", + "surname": "Puckett", + "position": "lacinia", + "wage": 20790, + "bonus": 3320 + }, + { + "name": "Daniel", + "surname": "Le", + "position": "Nam", + "wage": 30739, + "bonus": 4040 + }, + { + "name": "Aristotle", + "surname": "Lynch", + "position": "aliquet.", + "wage": 25333, + "bonus": 4054 + }, + { + "name": "Fletcher", + "surname": "House", + "position": "sed,", + "wage": 36625, + "bonus": 3557 + }, + { + "name": "Eagan", + "surname": "Vega", + "position": "in", + "wage": 37108, + "bonus": 1347 + }, + { + "name": "Brian", + "surname": "Ramsey", + "position": "Cras", + "wage": 24900, + "bonus": 3020 + }, + { + "name": "Richard", + "surname": "Cote", + "position": "Cras", + "wage": 31882, + "bonus": 1012 + }, + { + "name": "Berk", + "surname": "Salas", + "position": "euismod", + "wage": 26359, + "bonus": 3724 + }, + { + "name": "Ross", + "surname": "Nelson", + "position": "commodo", + "wage": 34396, + "bonus": 1611 + }, + { + "name": "Jarrod", + "surname": "Cooke", + "position": "sem.", + "wage": 43558, + "bonus": 4062 + }, + { + "name": "Vladimir", + "surname": "Clements", + "position": "Nunc", + "wage": 20397, + "bonus": 1151 + }, + { + "name": "Lee", + "surname": "Faulkner", + "position": "volutpat", + "wage": 48485, + "bonus": 3059 + }, + { + "name": "Quentin", + "surname": "Sargent", + "position": "risus", + "wage": 29821, + "bonus": 2833 + }, + { + "name": "Adam", + "surname": "Parks", + "position": "nec,", + "wage": 32843, + "bonus": 3179 + }, + { + "name": "Colorado", + "surname": "Le", + "position": "magna", + "wage": 44055, + "bonus": 3112 + }, + { + "name": "Warren", + "surname": "Mack", + "position": "aliquet", + "wage": 42168, + "bonus": 1671 + }, + { + "name": "Austin", + "surname": "Joyner", + "position": "imperdiet,", + "wage": 43809, + "bonus": 4776 + }, + { + "name": "Kenneth", + "surname": "Houston", + "position": "Donec", + "wage": 32272, + "bonus": 2001 + }, + { + "name": "Cain", + "surname": "Mays", + "position": "semper", + "wage": 28026, + "bonus": 2221 + }, + { + "name": "Lucius", + "surname": "Cardenas", + "position": "et", + "wage": 39159, + "bonus": 3238 + }, + { + "name": "Demetrius", + "surname": "Holloway", + "position": "dui", + "wage": 22251, + "bonus": 2065 + }, + { + "name": "Oren", + "surname": "Valencia", + "position": "Pellentesque", + "wage": 48121, + "bonus": 1383 + }, + { + "name": "Tyler", + "surname": "Faulkner", + "position": "id", + "wage": 22626, + "bonus": 2247 + }, + { + "name": "Chaney", + "surname": "Hawkins", + "position": "dolor,", + "wage": 24208, + "bonus": 3981 + }, + { + "name": "Allen", + "surname": "Cole", + "position": "sit", + "wage": 49484, + "bonus": 2352 + }, + { + "name": "Silas", + "surname": "Franks", + "position": "ultricies", + "wage": 20737, + "bonus": 2385 + }, + { + "name": "Yuli", + "surname": "Rodriguez", + "position": "rhoncus.", + "wage": 44356, + "bonus": 3677 + }, + { + "name": "Xanthus", + "surname": "Kelly", + "position": "ipsum.", + "wage": 49414, + "bonus": 3775 + }, + { + "name": "Vaughan", + "surname": "Jacobson", + "position": "diam", + "wage": 41200, + "bonus": 3073 + }, + { + "name": "Martin", + "surname": "Hicks", + "position": "eu", + "wage": 24923, + "bonus": 4144 + }, + { + "name": "Reuben", + "surname": "Valentine", + "position": "non,", + "wage": 43866, + "bonus": 2511 + }, + { + "name": "Christian", + "surname": "Vaughan", + "position": "conubia", + "wage": 21683, + "bonus": 3141 + }, + { + "name": "Acton", + "surname": "Farrell", + "position": "scelerisque", + "wage": 48889, + "bonus": 1631 + }, + { + "name": "Otto", + "surname": "Hubbard", + "position": "turpis.", + "wage": 32866, + "bonus": 4140 + }, + { + "name": "Hasad", + "surname": "Adkins", + "position": "nunc", + "wage": 46841, + "bonus": 2126 + }, + { + "name": "Joshua", + "surname": "Briggs", + "position": "nibh.", + "wage": 31601, + "bonus": 4495 + }, + { + "name": "Ferdinand", + "surname": "Sharp", + "position": "erat,", + "wage": 22472, + "bonus": 1892 + }, + { + "name": "Chaney", + "surname": "Jefferson", + "position": "auctor", + "wage": 31303, + "bonus": 1893 + }, + { + "name": "Amery", + "surname": "Carey", + "position": "nonummy", + "wage": 21176, + "bonus": 2712 + }, + { + "name": "Ciaran", + "surname": "Cline", + "position": "tristique", + "wage": 47983, + "bonus": 2459 + }, + { + "name": "Beck", + "surname": "Chase", + "position": "Aliquam", + "wage": 33224, + "bonus": 2059 + }, + { + "name": "Thane", + "surname": "Bradley", + "position": "ac", + "wage": 25712, + "bonus": 4981 + }, + { + "name": "Stewart", + "surname": "Guzman", + "position": "penatibus", + "wage": 42073, + "bonus": 3316 + }, + { + "name": "Keaton", + "surname": "Bauer", + "position": "nisl", + "wage": 32124, + "bonus": 3131 + }, + { + "name": "Garrett", + "surname": "Glenn", + "position": "elementum,", + "wage": 40994, + "bonus": 4851 + }, + { + "name": "Malcolm", + "surname": "Brown", + "position": "neque", + "wage": 32606, + "bonus": 4546 + }, + { + "name": "Lionel", + "surname": "Cain", + "position": "Donec", + "wage": 36190, + "bonus": 1969 + }, + { + "name": "Duncan", + "surname": "Hopkins", + "position": "Praesent", + "wage": 33829, + "bonus": 3677 + }, + { + "name": "Seth", + "surname": "Hubbard", + "position": "vel,", + "wage": 29174, + "bonus": 1876 + }, + { + "name": "Lucian", + "surname": "Frank", + "position": "ac", + "wage": 23202, + "bonus": 3687 + }, + { + "name": "Mannix", + "surname": "Morris", + "position": "eget", + "wage": 45886, + "bonus": 2318 + }, + { + "name": "Raphael", + "surname": "Mcclure", + "position": "vel,", + "wage": 37794, + "bonus": 3745 + }, + { + "name": "Isaiah", + "surname": "Kidd", + "position": "non", + "wage": 20861, + "bonus": 3911 + }, + { + "name": "Zahir", + "surname": "Velasquez", + "position": "aliquet", + "wage": 42983, + "bonus": 3777 + }, + { + "name": "Len", + "surname": "Jordan", + "position": "Morbi", + "wage": 29074, + "bonus": 1693 + }, + { + "name": "Lucas", + "surname": "Williams", + "position": "Nulla", + "wage": 45159, + "bonus": 2605 + }, + { + "name": "Aaron", + "surname": "Snow", + "position": "ipsum", + "wage": 46981, + "bonus": 1329 + }, + { + "name": "Armand", + "surname": "Hewitt", + "position": "a,", + "wage": 41054, + "bonus": 1388 + }, + { + "name": "Kermit", + "surname": "Cooley", + "position": "tempus,", + "wage": 22693, + "bonus": 4823 + }, + { + "name": "Steel", + "surname": "Gray", + "position": "Nullam", + "wage": 21602, + "bonus": 3308 + }, + { + "name": "Edan", + "surname": "Dyer", + "position": "Quisque", + "wage": 43433, + "bonus": 3305 + }, + { + "name": "Hasad", + "surname": "Espinoza", + "position": "nunc.", + "wage": 40902, + "bonus": 3053 + }, + { + "name": "Fritz", + "surname": "Wells", + "position": "vulputate,", + "wage": 22864, + "bonus": 3028 + }, + { + "name": "Neville", + "surname": "Landry", + "position": "sollicitudin", + "wage": 31576, + "bonus": 4884 + }, + { + "name": "Adam", + "surname": "Watkins", + "position": "egestas", + "wage": 47268, + "bonus": 1866 + }, + { + "name": "Magee", + "surname": "Andrews", + "position": "dictum", + "wage": 38618, + "bonus": 2290 + }, + { + "name": "Darius", + "surname": "Goodman", + "position": "ac,", + "wage": 41819, + "bonus": 2079 + }, + { + "name": "Troy", + "surname": "Carroll", + "position": "ante", + "wage": 36409, + "bonus": 2428 + }, + { + "name": "Chadwick", + "surname": "Duran", + "position": "sodales", + "wage": 31939, + "bonus": 3591 + }, + { + "name": "Dustin", + "surname": "Delaney", + "position": "ipsum.", + "wage": 48001, + "bonus": 4314 + }, + { + "name": "Abel", + "surname": "Shannon", + "position": "nulla.", + "wage": 36995, + "bonus": 4890 + } +] \ No newline at end of file diff --git a/homeworks/task03.py b/homeworks/task03.py index ad14aad..0c89188 100644 --- a/homeworks/task03.py +++ b/homeworks/task03.py @@ -9,4 +9,30 @@ Проверить работу примера на реальных данных (создать экземпляры класса Position, передать данные, проверить значения атрибутов, вызвать методы экземпляров). -""" \ No newline at end of file +""" + + +class Worker: + def __init__(self, name, surname, position, income: dict): + self.name = name + self.surname = surname + self.position = position + self._income = income + + +class Position(Worker): + def get_full_name(self): + return f'{self.name} {self.surname}' + + def get_total_income(self): + return self._income['wage'] + self._income['bonus'] + + +company = [ + Position('Xander', 'Gibson', 'General Director', {"wage": 38224, "bonus": 4949}), + Position('Chaney', 'Petersen', 'R&D Director ', {"wage": 23411, "bonus": 1873}), + Position('Russell', 'Carney', 'Programmer', {"wage": 22922, "bonus": 2580}) +] + +for employee in company: + print(employee.get_full_name(), employee.position, employee.get_total_income()) diff --git a/homeworks/task04.py b/homeworks/task04.py index 1b401c2..546b640 100644 --- a/homeworks/task04.py +++ b/homeworks/task04.py @@ -6,4 +6,40 @@ метод show_speed. При значении скорости свыше 60 (TownCar) и 40 (WorkCar) должно выводиться сообщение о превышении скорости. Создайте экземпляры классов, передайте значения атрибутов. Выполните доступ к атрибутам, выведите результат. Выполните вызов методов и также покажите результат. -""" \ No newline at end of file +""" + + +class Car: + def __init__(self, speed: int, color: str, name: str, is_police: bool): + self.speed = speed + self.color = color + self.name = name + self.is_police = is_police + + def go(self): + print('Вперед') + + def stop(self): + print('Стоп') + + def turn(self, side): + print(side) + + def show_speed(self): + print(self.speed) + + +class TownCar(Car): + pass + + +class SportCar(Car): + pass + + +class WorkCar(Car): + pass + + +class PoliceCar(Car): + pass From ea51d46176f8a183315ed5ea756fac0c7b94761e Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Mon, 2 Nov 2020 00:14:03 +0300 Subject: [PATCH 3/9] les06 task3 add collection --- homeworks/task03.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/homeworks/task03.py b/homeworks/task03.py index 0c89188..5acb99c 100644 --- a/homeworks/task03.py +++ b/homeworks/task03.py @@ -13,11 +13,14 @@ class Worker: + company = [] + def __init__(self, name, surname, position, income: dict): self.name = name self.surname = surname self.position = position self._income = income + self.company.append(self) class Position(Worker): @@ -28,11 +31,9 @@ def get_total_income(self): return self._income['wage'] + self._income['bonus'] -company = [ - Position('Xander', 'Gibson', 'General Director', {"wage": 38224, "bonus": 4949}), - Position('Chaney', 'Petersen', 'R&D Director ', {"wage": 23411, "bonus": 1873}), - Position('Russell', 'Carney', 'Programmer', {"wage": 22922, "bonus": 2580}) -] +Position('Xander', 'Gibson', 'General Director', {"wage": 38224, "bonus": 4949}) +Position('Chaney', 'Petersen', 'R&D Director ', {"wage": 23411, "bonus": 1873}) +Position('Russell', 'Carney', 'Programmer', {"wage": 22922, "bonus": 2580}) -for employee in company: +for employee in Worker.company: print(employee.get_full_name(), employee.position, employee.get_total_income()) From b0966e592f3a626021450816a5c545c61687f0f8 Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Mon, 2 Nov 2020 18:08:59 +0300 Subject: [PATCH 4/9] les06 format --- homeworks/{ => les06}/task01.py | 0 homeworks/{ => les06}/task02.py | 0 homeworks/{ => les06}/task03.json | 0 homeworks/{ => les06}/task03.py | 0 homeworks/{ => les06}/task04.py | 0 homeworks/{ => les06}/task05.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename homeworks/{ => les06}/task01.py (100%) rename homeworks/{ => les06}/task02.py (100%) rename homeworks/{ => les06}/task03.json (100%) rename homeworks/{ => les06}/task03.py (100%) rename homeworks/{ => les06}/task04.py (100%) rename homeworks/{ => les06}/task05.py (100%) diff --git a/homeworks/task01.py b/homeworks/les06/task01.py similarity index 100% rename from homeworks/task01.py rename to homeworks/les06/task01.py diff --git a/homeworks/task02.py b/homeworks/les06/task02.py similarity index 100% rename from homeworks/task02.py rename to homeworks/les06/task02.py diff --git a/homeworks/task03.json b/homeworks/les06/task03.json similarity index 100% rename from homeworks/task03.json rename to homeworks/les06/task03.json diff --git a/homeworks/task03.py b/homeworks/les06/task03.py similarity index 100% rename from homeworks/task03.py rename to homeworks/les06/task03.py diff --git a/homeworks/task04.py b/homeworks/les06/task04.py similarity index 100% rename from homeworks/task04.py rename to homeworks/les06/task04.py diff --git a/homeworks/task05.py b/homeworks/les06/task05.py similarity index 100% rename from homeworks/task05.py rename to homeworks/les06/task05.py From 131a6c7ae852374eb79c0441789af8fde2366f1c Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Mon, 2 Nov 2020 23:27:42 +0300 Subject: [PATCH 5/9] les06 task1 seq --- homeworks/les06/task01.py | 16 +++++++++++++++- homeworks/les06/task03.py | 4 +++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/homeworks/les06/task01.py b/homeworks/les06/task01.py index 16c4c26..94f6d6f 100644 --- a/homeworks/les06/task01.py +++ b/homeworks/les06/task01.py @@ -14,10 +14,24 @@ class TrafficLight: + chain_states = {'красный': 'желтый', 'желтый': 'зеленый', 'зеленый': 'красный'} + chain_prev = '' + def __init__(self): self.__color = '' + def _check_color(self, color): + is_good = False + if self.chain_prev == '': + is_good = True + else: + is_good = (color == self.chain_states[self.chain_prev]) + return is_good + def _run(self, color, time): + if not self._check_color(color): + print(f'Неправильная последовательность переключения {self.chain_prev}->{color}') + self.chain_prev = color self.__color = color self._shine(time) @@ -30,8 +44,8 @@ def _shine(self, time): def running(self): self._run('красный', 7) + self._run('зеленый', 5) self._run('желтый', 2) - self._run('зеленый', 5) diff --git a/homeworks/les06/task03.py b/homeworks/les06/task03.py index 5acb99c..baa568c 100644 --- a/homeworks/les06/task03.py +++ b/homeworks/les06/task03.py @@ -34,6 +34,8 @@ def get_total_income(self): Position('Xander', 'Gibson', 'General Director', {"wage": 38224, "bonus": 4949}) Position('Chaney', 'Petersen', 'R&D Director ', {"wage": 23411, "bonus": 1873}) Position('Russell', 'Carney', 'Programmer', {"wage": 22922, "bonus": 2580}) +Position('Oren', 'Chase', 'Programmer', {"wage": 27353, "bonus": 1766}) +Position('Stuart', 'Palmer', 'Data Scientist', {"wage": 34114, "bonus": 1174}) for employee in Worker.company: - print(employee.get_full_name(), employee.position, employee.get_total_income()) + print(f'{employee.get_full_name():15} {employee.position:17} {employee.get_total_income():5.2f}') From ef3d2e338f181d0e794aaa30c6585b54d82ab9f7 Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Tue, 3 Nov 2020 17:21:23 +0300 Subject: [PATCH 6/9] les06 task[] beta --- homeworks/les06/task01.py | 2 ++ homeworks/les06/task02.py | 4 ++-- homeworks/les06/task04.py | 36 +++++++++++++++++++++++++----------- homeworks/les06/task05.py | 25 ++++++++++++++++++++++++- 4 files changed, 53 insertions(+), 14 deletions(-) diff --git a/homeworks/les06/task01.py b/homeworks/les06/task01.py index 94f6d6f..d359998 100644 --- a/homeworks/les06/task01.py +++ b/homeworks/les06/task01.py @@ -31,9 +31,11 @@ def _check_color(self, color): def _run(self, color, time): if not self._check_color(color): print(f'Неправильная последовательность переключения {self.chain_prev}->{color}') + return False self.chain_prev = color self.__color = color self._shine(time) + return True def _shine(self, time): print(self.__color, end='') diff --git a/homeworks/les06/task02.py b/homeworks/les06/task02.py index 60549ee..d67f9fe 100644 --- a/homeworks/les06/task02.py +++ b/homeworks/les06/task02.py @@ -16,8 +16,8 @@ def __init__(self, length, width): self._width = width def mass_asphalt(self, depth): - print('Масса асфальта', self._length * self._width * self._mass_asphalt_m2 * depth) + return self._length * self._width * self._mass_asphalt_m2 * depth near_road = Road(1000, 24) -near_road.mass_asphalt(8) +print('Масса асфальта', near_road.mass_asphalt(8)) diff --git a/homeworks/les06/task04.py b/homeworks/les06/task04.py index 546b640..0ed0f48 100644 --- a/homeworks/les06/task04.py +++ b/homeworks/les06/task04.py @@ -1,20 +1,23 @@ """ -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) должно выводиться сообщение о превышении -скорости. Создайте экземпляры классов, передайте значения атрибутов. Выполните доступ к атрибутам, +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) должно выводиться сообщение о превышении +скорости. +Создайте экземпляры классов, передайте значения атрибутов. Выполните доступ к атрибутам, выведите результат. Выполните вызов методов и также покажите результат. """ class Car: - def __init__(self, speed: int, color: str, name: str, is_police: bool): + def __init__(self, speed: int, color: str, name: str): self.speed = speed self.color = color self.name = name - self.is_police = is_police def go(self): print('Вперед') @@ -30,7 +33,10 @@ def show_speed(self): class TownCar(Car): - pass + def show_speed(self): + super().show_speed() + if self.speed > 60: + print(f"Превышена скорость на {self.speed - 60}") class SportCar(Car): @@ -38,8 +44,16 @@ class SportCar(Car): class WorkCar(Car): - pass + def show_speed(self): + super().show_speed() + if self.speed > 40: + print(f"Превышена скорость на {self.speed - 40}") class PoliceCar(Car): - pass + def __init__(self, speed: int, color: str, name: str): + super().__init__(speed, speed, color, name) + self.is_police = True + + +t_car = TownCar(55, 'красная', 'Toyota') diff --git a/homeworks/les06/task05.py b/homeworks/les06/task05.py index 2b76089..444622d 100644 --- a/homeworks/les06/task05.py +++ b/homeworks/les06/task05.py @@ -4,4 +4,27 @@ Pencil (карандаш), Handle (маркер). В каждом из классов реализовать переопределение метода draw. Для каждого из классов методы должен выводить уникальное сообщение. Создать экземпляры классов и проверить, что выведет описанный метод для каждого экземпляра. -""" \ No newline at end of file +""" + + +class Stationery: + def __init__(self, title): + self.title = title + + def draw(self): + print('Запуск отрисовки') + + +class Pen(Stationery): + def draw(self): + print('Ручка пишет') + + +class Pencil(Stationery): + def draw(self): + print('Карандаш рисует') + + +class Handle(Stationery): + def draw(self): + print('Маркер помечает') From b82f3316828dad75a714e61ca75134b5ed664f6a Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Wed, 4 Nov 2020 15:08:34 +0300 Subject: [PATCH 7/9] les06 task[] betta2 --- homeworks/les06/task01.py | 17 ++++++++++------- homeworks/les06/task02.py | 2 +- homeworks/les06/task04.py | 39 ++++++++++++++++++++++++++++++++++++--- homeworks/les06/task05.py | 15 ++++++++++++--- 4 files changed, 59 insertions(+), 14 deletions(-) diff --git a/homeworks/les06/task01.py b/homeworks/les06/task01.py index d359998..e98b505 100644 --- a/homeworks/les06/task01.py +++ b/homeworks/les06/task01.py @@ -14,6 +14,7 @@ class TrafficLight: + # контрольный автомат состояний chain_states = {'красный': 'желтый', 'желтый': 'зеленый', 'зеленый': 'красный'} chain_prev = '' @@ -25,6 +26,7 @@ def _check_color(self, color): if self.chain_prev == '': is_good = True else: + # контроль перехода состояний is_good = (color == self.chain_states[self.chain_prev]) return is_good @@ -41,15 +43,16 @@ def _shine(self, time): print(self.__color, end='') for _ in range(time): sleep(1) - print('.', end='') + print('.', end='') # иммитация периода действия цвета print('') def running(self): - self._run('красный', 7) - self._run('зеленый', 5) - self._run('желтый', 2) - self._run('зеленый', 5) + for color, time in [('красный', 7), ('желтый', 2), ('зеленый', 5), ('зеленый', 5)]: + if not self._run(color, time): + print('Установлена неправильная последовательность') + break -light_1 = TrafficLight() -light_1.running() +if __name__ == '__main__': + light_1 = TrafficLight() + light_1.running() diff --git a/homeworks/les06/task02.py b/homeworks/les06/task02.py index d67f9fe..dd3b1cc 100644 --- a/homeworks/les06/task02.py +++ b/homeworks/les06/task02.py @@ -15,7 +15,7 @@ def __init__(self, length, width): self._length = length self._width = width - def mass_asphalt(self, depth): + def mass_asphalt(self, depth=1): return self._length * self._width * self._mass_asphalt_m2 * depth diff --git a/homeworks/les06/task04.py b/homeworks/les06/task04.py index 0ed0f48..eb7a44b 100644 --- a/homeworks/les06/task04.py +++ b/homeworks/les06/task04.py @@ -4,7 +4,7 @@ А также методы: go, stop, turn(direction), которые должны сообщать, что машина поехала, остановилась, повернула (куда). Опишите несколько дочерних классов: TownCar, SportCar, WorkCar, PoliceCar. -Добавьте в базовый классметод show_speed, который должен показывать текущую скорость автомобиля. +Добавьте в базовый класс метод show_speed, который должен показывать текущую скорость автомобиля. Для классов TownCar и WorkCar переопределите метод show_speed. При значении скорости свыше 60 (TownCar) и 40 (WorkCar) должно выводиться сообщение о превышении скорости. @@ -29,7 +29,7 @@ def turn(self, side): print(side) def show_speed(self): - print(self.speed) + print(f'Скорость : {self.speed}') class TownCar(Car): @@ -52,8 +52,41 @@ def show_speed(self): class PoliceCar(Car): def __init__(self, speed: int, color: str, name: str): - super().__init__(speed, speed, color, name) + super().__init__(speed, color, name) self.is_police = True t_car = TownCar(55, 'красная', 'Toyota') +car = t_car +print('--- машина') +print(car.name, car.color, car.speed) +car.show_speed() +car.go() +car.turn('налево') +car.stop() + +s_car = SportCar(80, 'белая', 'Nissan') +car = s_car +print('--- машина') +print(car.name, car.color, car.speed) +car.show_speed() +car.go() +car.turn('налево') +car.stop() + +w_car = WorkCar(50, 'коричневая', 'Ford') +car = w_car +print('--- машина') +print(car.name, car.color, car.speed) +car.show_speed() +car.go() +car.turn('налево') +car.stop() + +p_car = PoliceCar(90, 'синяя', 'Ford') +car = p_car +print('--- машина') +print(car.name, car.color, car.speed) +car.go() +car.turn('налево') +car.stop() diff --git a/homeworks/les06/task05.py b/homeworks/les06/task05.py index 444622d..b81e82e 100644 --- a/homeworks/les06/task05.py +++ b/homeworks/les06/task05.py @@ -17,14 +17,23 @@ def draw(self): class Pen(Stationery): def draw(self): - print('Ручка пишет') + print(f'Ручка {self.title} пишет') class Pencil(Stationery): def draw(self): - print('Карандаш рисует') + print(f'Карандаш {self.title} рисует') class Handle(Stationery): def draw(self): - print('Маркер помечает') + print(f'Маркер {self.title} помечает') + + +if __name__ == '__main__': + pen = Pen('Kaweco') + pen.draw() + pencil = Pencil('Koh-i-noor') + pencil.draw() + handle = Handle('Centropen') + handle.draw() From a1264aff815ceccd56656aa838515e24bc465787 Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Wed, 4 Nov 2020 22:17:38 +0300 Subject: [PATCH 8/9] les06 task[] final release --- homeworks/les06/task02.py | 5 +++-- homeworks/les06/task03.py | 17 ++++++++------- homeworks/les06/task04.py | 45 ++++++++++----------------------------- 3 files changed, 23 insertions(+), 44 deletions(-) diff --git a/homeworks/les06/task02.py b/homeworks/les06/task02.py index dd3b1cc..67715cb 100644 --- a/homeworks/les06/task02.py +++ b/homeworks/les06/task02.py @@ -19,5 +19,6 @@ def mass_asphalt(self, depth=1): return self._length * self._width * self._mass_asphalt_m2 * depth -near_road = Road(1000, 24) -print('Масса асфальта', near_road.mass_asphalt(8)) +if __name__ == '__main__': + near_road = Road(1000, 24) + print('Масса асфальта', near_road.mass_asphalt(8)) diff --git a/homeworks/les06/task03.py b/homeworks/les06/task03.py index baa568c..9f02f33 100644 --- a/homeworks/les06/task03.py +++ b/homeworks/les06/task03.py @@ -31,11 +31,12 @@ def get_total_income(self): return self._income['wage'] + self._income['bonus'] -Position('Xander', 'Gibson', 'General Director', {"wage": 38224, "bonus": 4949}) -Position('Chaney', 'Petersen', 'R&D Director ', {"wage": 23411, "bonus": 1873}) -Position('Russell', 'Carney', 'Programmer', {"wage": 22922, "bonus": 2580}) -Position('Oren', 'Chase', 'Programmer', {"wage": 27353, "bonus": 1766}) -Position('Stuart', 'Palmer', 'Data Scientist', {"wage": 34114, "bonus": 1174}) - -for employee in Worker.company: - print(f'{employee.get_full_name():15} {employee.position:17} {employee.get_total_income():5.2f}') +if __name__ == '__main__': + Position('Xander', 'Gibson', 'General Director', {"wage": 38224, "bonus": 4949}) + Position('Chaney', 'Petersen', 'R&D Director ', {"wage": 23411, "bonus": 1873}) + Position('Russell', 'Carney', 'Programmer', {"wage": 22922, "bonus": 2580}) + Position('Oren', 'Chase', 'Programmer', {"wage": 27353, "bonus": 1766}) + Position('Stuart', 'Palmer', 'Data Scientist', {"wage": 34114, "bonus": 1174}) + + for employee in Worker.company: + print(f'{employee.get_full_name():15} {employee.position:17} {employee.get_total_income():5.2f}') diff --git a/homeworks/les06/task04.py b/homeworks/les06/task04.py index eb7a44b..c16892b 100644 --- a/homeworks/les06/task04.py +++ b/homeworks/les06/task04.py @@ -56,37 +56,14 @@ def __init__(self, speed: int, color: str, name: str): self.is_police = True -t_car = TownCar(55, 'красная', 'Toyota') -car = t_car -print('--- машина') -print(car.name, car.color, car.speed) -car.show_speed() -car.go() -car.turn('налево') -car.stop() - -s_car = SportCar(80, 'белая', 'Nissan') -car = s_car -print('--- машина') -print(car.name, car.color, car.speed) -car.show_speed() -car.go() -car.turn('налево') -car.stop() - -w_car = WorkCar(50, 'коричневая', 'Ford') -car = w_car -print('--- машина') -print(car.name, car.color, car.speed) -car.show_speed() -car.go() -car.turn('налево') -car.stop() - -p_car = PoliceCar(90, 'синяя', 'Ford') -car = p_car -print('--- машина') -print(car.name, car.color, car.speed) -car.go() -car.turn('налево') -car.stop() +if __name__ == '__main__': + + for car in [TownCar(55, 'красная', 'Toyota'), SportCar(80, 'белая', 'Nissan'), WorkCar(50, 'коричневая', 'Ford'), + PoliceCar(90, 'синяя', 'Ford')]: + print('--- машина') + print(car.name, car.color, car.speed) + car.show_speed() + car.go() + car.turn('налево') + car.stop() + From 379994120c48ef4e24f07d225d03a11057414fc9 Mon Sep 17 00:00:00 2001 From: Alex Klyanchin Date: Thu, 5 Nov 2020 09:15:15 +0300 Subject: [PATCH 9/9] les06 final release --- homeworks/les06/task03.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeworks/les06/task03.py b/homeworks/les06/task03.py index 9f02f33..8197d07 100644 --- a/homeworks/les06/task03.py +++ b/homeworks/les06/task03.py @@ -14,6 +14,7 @@ class Worker: company = [] + _income = {"wage": 0, "bonus": 0} def __init__(self, name, surname, position, income: dict): self.name = name