Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions task_1_lesson6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Задание№1
# Создать класс TrafficLight (светофор).
# определить у него один атрибут color (цвет) и метод running (запуск);
# атрибут реализовать как приватный;
# в рамках метода реализовать переключение светофора в режимы: красный, жёлтый,
# зелёный;
# продолжительность первого состояния (красный) составляет 7 секунд, второго
# (жёлтый) — 2 секунды, третьего (зелёный) — на ваше усмотрение;
# переключение между режимами должно осуществляться только в указанном порядке
# (красный, жёлтый, зелёный);
# проверить работу примера, создав экземпляр и вызвав описанный метод.
# Задачу можно усложнить, реализовав проверку порядка режимов. При его нарушении
# выводить соответствующее сообщение и завершать скрипт.

import time

class TrafficLight:
__color = ['красный', 'желтый', 'зеленый']
def running(self):
print((self.__color[0]))
time.sleep(7)
print(self.__color[1])
time.sleep(2)
print(self.__color[2])
time.sleep(5)


tl = TrafficLight()
tl.running()

''' Не понял следующее условие:
Задачу можно усложнить, реализовав проверку порядка режимов. При его нарушении
выводить соответствующее сообщение и завершать скрипт.
Как может нарушиться порядок режимов, если в условии задачи задан абсолютно точный алгоритм.
'''
25 changes: 25 additions & 0 deletions task_2_lesson6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Задание №2
# Реализовать класс Road (дорога).
# определить атрибуты: length (длина), width (ширина);
# значения атрибутов должны передаваться при создании экземпляра класса;
# атрибуты сделать защищёнными;
# определить метод расчёта массы асфальта, необходимого для покрытия всей дороги;
# использовать формулу: длина*ширина*масса асфальта для покрытия одного кв. метра
# дороги асфальтом, толщиной в 1 см*число см толщины полотна;
# проверить работу метода.
# Например: 20 м*5000 м*25 кг*5 см = 12500 т.

class Road:
def __init__(self, length, width):
self._length = length
self._width = width
self.weight = 25
self.height = 5

def weight_asphalt(self):
weight_asp = self._length * self._width * self.weight * self.height / 1000
print(f'Необходимая масса асфальта: {weight_asp} тон.')


r = Road(50000, 15)
r.weight_asphalt()
34 changes: 34 additions & 0 deletions task_3_lesson6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Задание №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, position, wage, bonus):
self.name = name
self.surname = surname
self.position = position
self._income = {"wage": wage, "bonus": bonus}


class Position(Worker):

def __init__(self, name, surname, position, wage, bonus):
super().__init__(name, surname, position, wage, bonus)

def get_full_name(self):
return f'{self.name} {self.surname}'

def get_total_income(self):
return round((float(self._income.get("wage")) + float(self. _income.get("bonus"))), 2)


a = Position('Алексей', 'Иванов', 'Мастер', 40158.56, 15264.15)
print(f'{a.get_full_name()} {a.position} {a.get_total_income()} руб.')
100 changes: 100 additions & 0 deletions task_4_lesson6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Задание №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, color, name, is_police):
self.speed = speed
self.color = color
self.name = name
self.is_police = is_police

def go(self):
return f'{self.name} поехала'

def stop(self):
return f'{self.name} остановилась'

def turn_right(self):
return f'{self.name} повернула на право'

def turn_left(self):
return f'{self.name} повернула на лево'

def show_speed(self):
return f'Текущая скорость {self.name} состовляет {self.speed} км/час'


class TownCar(Car):
def __init__(self, speed, color, name, is_police):
super().__init__(speed, color, name, is_police)

def show_speed(self):
print(f'Текущая скорость {self.name} состовляет {self.speed} км/ч')
if self.speed == 0:
return f'{self.name} стоит недвижимо'
elif self.speed > 60:
return f'{self.name} превышает скорость'
else:
return f'Скорость {self.name} в пределах нормы'


class SportCar(Car):
def __init__(self, speed, color, name, is_police):
super().__init__(speed, color, name, is_police)


class WorkCar(Car):
def __init__(self, speed, color, name, is_police):
super().__init__(speed, color, name, is_police)

def show_speed(self):
print(f'Текущая скорость {self.name} состовляет {self.speed}')
if self.speed == 0:
return f'{self.name} стоит недвижимо'
elif self.speed > 40:
return f'{self.name} превышает скорость'
else:
return f'Скорость {self.name} в пределах нормы'


class PoliceCar(Car):
def __init__(self, speed, color, name, is_police):
super().__init__(speed, color, name, is_police)

def police(self):
if self.is_police:
return f'{self.name}, является полицейской машиной'
else:
return f'{self.name}, не является полицейской машиной'


kia = TownCar(80, 'белый', 'kia', False)
print(kia.go())
print(kia.stop())
print(kia.turn_left())
print(kia.turn_right())
print(kia.show_speed())

porsche = SportCar(150, 'красный', 'Porsche', False)
print(porsche.go())
print(porsche.show_speed())

lada = WorkCar(50, 'зеденый', 'Lada', False)
print(lada.go())
print(lada.show_speed())

patriot = PoliceCar(60, 'черный', 'Patriot', True)
print(patriot.turn_left())
print(patriot.turn_right())
print(patriot.police())
50 changes: 50 additions & 0 deletions task_5_lesson6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Задание №5
# Реализовать класс Stationery (канцелярская принадлежность).
# определить в нём атрибут title (название) и метод draw (отрисовка). Метод выводит
# сообщение «Запуск отрисовки»;
# создать три дочерних класса Pen (ручка), Pencil (карандаш), Handle (маркер);
# в каждом классе реализовать переопределение метода draw. Для каждого класса
# метод должен выводить уникальное сообщение;
# создать экземпляры классов и проверить, что выведет описанный метод для каждого
# экземпляра.

class Stationary:
def __init__(self, title):
self.title = title

def draw(self):
return f'Запуск отрисовки {self.title}'


class Pen(Stationary):
def __init__(self, title):
super().__init__(title)

def draw(self):
return f'Режим {self.title}. Запуск отрисовки ручкой'


class Pencil(Stationary):
def __init__(self, title):
super().__init__(title)

def draw(self):
return f'Режим {self.title}. Запуск отрисовки карандашом'


class Handle(Stationary):
def __init__(self, title):
super().__init__(title)

def draw(self):
return f'Режим {self.title}. Запуск отрисовки маркером'


brush = Stationary('Кисть')
pen = Pen('Ручка')
pencil = Pencil('Карандаш')
handle = Handle('Маркер')
print(brush.draw())
print(pen.draw())
print(pencil.draw())
print(handle.draw())