From fd83690a8558c5a25b29b4b0e567a24134e33c76 Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 27 May 2020 15:01:16 +0300 Subject: [PATCH 1/4] 1nd and 2nd tasks added --- Homework_6/1Traffic_light.py | 28 ++++++++++++++++++++++++++++ Homework_6/2Madmax_furyroad.py | 16 ++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 Homework_6/1Traffic_light.py create mode 100644 Homework_6/2Madmax_furyroad.py diff --git a/Homework_6/1Traffic_light.py b/Homework_6/1Traffic_light.py new file mode 100644 index 0000000..3a8bcfa --- /dev/null +++ b/Homework_6/1Traffic_light.py @@ -0,0 +1,28 @@ +from itertools import count +import time +class TrafficLight: + def __init__(self): + traffic = self.__color() + return traffic + + + def __color(self): + color = ['Красный', 'Желтый', 'Зеленый'] + for timer in count(): + for i in color: + 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..6281267 --- /dev/null +++ b/Homework_6/2Madmax_furyroad.py @@ -0,0 +1,16 @@ +class Road: + def __init__(self, length, width): + self._length = int(length) + self._width = int(width) + asfalt_mass_for_santimeter = 20 + asfalt_fat = 30 + total_mass = width * length * asfalt_fat * asfalt_mass_for_santimeter + print(total_mass) +# return total_mass + +mas = Road(20,30) +#print(mas) + + + + From 5cec953f0a81a67c4dde77cf21fbf7a7dc1684b8 Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 28 May 2020 17:11:56 +0300 Subject: [PATCH 2/4] deleted Homework_6 dir --- Homework_6/1Traffic_light.py | 28 ---------------------------- Homework_6/2Madmax_furyroad.py | 16 ---------------- 2 files changed, 44 deletions(-) delete mode 100644 Homework_6/1Traffic_light.py delete mode 100644 Homework_6/2Madmax_furyroad.py diff --git a/Homework_6/1Traffic_light.py b/Homework_6/1Traffic_light.py deleted file mode 100644 index 3a8bcfa..0000000 --- a/Homework_6/1Traffic_light.py +++ /dev/null @@ -1,28 +0,0 @@ -from itertools import count -import time -class TrafficLight: - def __init__(self): - traffic = self.__color() - return traffic - - - def __color(self): - color = ['Красный', 'Желтый', 'Зеленый'] - for timer in count(): - for i in color: - 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 deleted file mode 100644 index 6281267..0000000 --- a/Homework_6/2Madmax_furyroad.py +++ /dev/null @@ -1,16 +0,0 @@ -class Road: - def __init__(self, length, width): - self._length = int(length) - self._width = int(width) - asfalt_mass_for_santimeter = 20 - asfalt_fat = 30 - total_mass = width * length * asfalt_fat * asfalt_mass_for_santimeter - print(total_mass) -# return total_mass - -mas = Road(20,30) -#print(mas) - - - - From 4f623f8506a530aef6b34b44345ec81a0b4a7096 Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 28 May 2020 17:14:24 +0300 Subject: [PATCH 3/4] New Homework_6 added --- Homework_6/1Traffic_light.py | 28 +++++++++++++++++ Homework_6/2Madmax_furyroad.py | 16 ++++++++++ Homework_6/3Worker.py | 18 +++++++++++ Homework_6/4Car.py | 56 ++++++++++++++++++++++++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 Homework_6/1Traffic_light.py create mode 100644 Homework_6/2Madmax_furyroad.py create mode 100644 Homework_6/3Worker.py create mode 100644 Homework_6/4Car.py diff --git a/Homework_6/1Traffic_light.py b/Homework_6/1Traffic_light.py new file mode 100644 index 0000000..65903d4 --- /dev/null +++ b/Homework_6/1Traffic_light.py @@ -0,0 +1,28 @@ +from itertools import count +import time +class TrafficLight: + def __init__(self): + color = self.running() + return color + + + def running(self): + __color_base = ['Красный', 'Желтый', 'Зеленый'] + 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..6281267 --- /dev/null +++ b/Homework_6/2Madmax_furyroad.py @@ -0,0 +1,16 @@ +class Road: + def __init__(self, length, width): + self._length = int(length) + self._width = int(width) + asfalt_mass_for_santimeter = 20 + asfalt_fat = 30 + total_mass = width * length * asfalt_fat * asfalt_mass_for_santimeter + print(total_mass) +# return total_mass + +mas = Road(20,30) +#print(mas) + + + + diff --git a/Homework_6/3Worker.py b/Homework_6/3Worker.py new file mode 100644 index 0000000..aad0dcf --- /dev/null +++ b/Homework_6/3Worker.py @@ -0,0 +1,18 @@ +class Worker: + def __init__(self, name, surname): + self.name = str(name) + self.surname = str(surname) + self._income = {'wage': 1000, 'bonus': 500} + + +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..e47b52c --- /dev/null +++ b/Homework_6/4Car.py @@ -0,0 +1,56 @@ +import time +from itertools import count + +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) + 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',False) +mar.turn() +mar.show_speed() +print(mar.result) \ No newline at end of file From af8a7b08829959bd3aeded1d6adb2521887baee5 Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 28 May 2020 22:16:40 +0300 Subject: [PATCH 4/4] Homework_6 added and completed --- Homework_6/1Traffic_light.py | 23 +++++++++++++-------- Homework_6/2Madmax_furyroad.py | 22 +++++++++++++------- Homework_6/3Worker.py | 20 +++++++++++++----- Homework_6/4Car.py | 37 ++++++++++++++++++++++++---------- Homework_6/5stationery.py | 31 ++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 31 deletions(-) create mode 100644 Homework_6/5stationery.py diff --git a/Homework_6/1Traffic_light.py b/Homework_6/1Traffic_light.py index 65903d4..ad518c4 100644 --- a/Homework_6/1Traffic_light.py +++ b/Homework_6/1Traffic_light.py @@ -1,19 +1,26 @@ -from itertools import count -import time +#Создать класс TrafficLight (светофор) и определить у него один атрибут color (цвет) и метод running (запуск). +# Атрибут реализовать как приватный. +# В рамках метода реализовать переключение светофора в режимы: красный, желтый, зеленый. +# Продолжительность первого состояния (красный) составляет 7 секунд, второго (желтый) — 2 секунды, третьего (зеленый) — на ваше усмотрение. +# Переключение между режимами должно осуществляться только в указанном порядке (красный, желтый, зеленый). +# Проверить работу примера, создав экземпляр и вызвав описанный метод. + +from itertools import count #Импортируем для бесконечного цикла. +import time #Для того, чтобы запись выводилась через некоторое время. class TrafficLight: def __init__(self): - color = self.running() - return color + color = self.running() #Формируем запуск. + return color #Возвращаем color, который запускает функцию running. def running(self): - __color_base = ['Красный', 'Желтый', 'Зеленый'] - for timer in count(): + __color_base = ['Красный', 'Желтый', 'Зеленый'] #Создаем список из 3 цветов. + for timer in count(): #Запускаем бесконечный цикл. for i in __color_base: print(i) if i == 'Красный': - time.sleep(7) - elif i == 'Желтый': + time.sleep(7) #Позволяет выводить следующее значение через определенное + elif i == 'Желтый': #количество секунд. time.sleep(2) elif i == 'Зеленый': time.sleep(4) diff --git a/Homework_6/2Madmax_furyroad.py b/Homework_6/2Madmax_furyroad.py index 6281267..daf6600 100644 --- a/Homework_6/2Madmax_furyroad.py +++ b/Homework_6/2Madmax_furyroad.py @@ -1,15 +1,23 @@ +#2. Реализовать класс Road (дорога), в котором определить атрибуты: +# length (длина), width (ширина). +# Значения данных атрибутов должны передаваться при создании экземпляра класса. Атрибуты сделать защищенными. +# Определить метод расчета массы асфальта, необходимого для покрытия всего дорожного полотна. +# Использовать формулу: длина * ширина * масса асфальта для покрытия одного кв метра дороги асфальтом, +# толщиной в 1 см * чи сло см толщины полотна. Проверить работу метода. +#Например: 20м * 5000м * 25кг * 5см = 12500 т + class Road: def __init__(self, length, width): - self._length = int(length) + self._length = int(length) #Переводим значения в интовые(на всякий случай). self._width = int(width) - asfalt_mass_for_santimeter = 20 - asfalt_fat = 30 - total_mass = width * length * asfalt_fat * asfalt_mass_for_santimeter - print(total_mass) + 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 -mas = Road(20,30) -#print(mas) +mass_of_asphalt = Road(20,30) + diff --git a/Homework_6/3Worker.py b/Homework_6/3Worker.py index aad0dcf..992dc44 100644 --- a/Homework_6/3Worker.py +++ b/Homework_6/3Worker.py @@ -1,17 +1,27 @@ +#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.name = str(name) #Переводим в строку. self.surname = str(surname) - self._income = {'wage': 1000, 'bonus': 500} + 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')) + 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]) + return ([get_full_name,get_total_income]) #Возвращаем списком имя, фамилию и зарплату. worker_prize = Position('a','b') diff --git a/Homework_6/4Car.py b/Homework_6/4Car.py index e47b52c..abafd60 100644 --- a/Homework_6/4Car.py +++ b/Homework_6/4Car.py @@ -1,35 +1,50 @@ -import time -from itertools import count +#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.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): + direction = ['Вправо', 'Влево'] #Список поворотов. + for timer in range(10): #Для остановки поворотов. for i in direction: print(f'Машина поехала {i}') - self.speed = self.speed + 1 - # time.sleep(1) + self.speed = self.speed + 1 #Увеличиваем скорость после каждого поворота. + # time.sleep(1) #Машина поворачивает через 1 секунду (закомментировано для удобства чтения). + def show_speed(self): print(f'Скорость: {self.speed}') - self.result.append(self.speed) + self.result.append(self.speed) #Добавляем в список скорость. class TownCar(Car): def show_speed(self): self.result.append(self.speed) - if self.speed > 60: + if self.speed > 60: #Условие вывода сообщения. print('Скорость превышена!') class SportCar(Car): @@ -50,7 +65,7 @@ def show_speed(self): print('По машинам! Пора ловить преступников!') -mar = PoliceCar(50,'red','Sport',False) +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()