diff --git a/hello.txt b/hello.txt deleted file mode 100644 index f5855ef..0000000 --- a/hello.txt +++ /dev/null @@ -1 +0,0 @@ -'Hello, Git!' diff --git a/less_6_home_1.py b/less_6_home_1.py new file mode 100644 index 0000000..aa6ad43 --- /dev/null +++ b/less_6_home_1.py @@ -0,0 +1,31 @@ +#Создать класс TrafficLight (светофор) и определить у него один атрибут color +# (цвет) и метод running (запуск). Атрибут реализовать как приватный. +# В рамках метода реализовать переключение светофора в режимы: +# красный, желтый, зеленый. +# Продолжительность первого состояния (красный) составляет 7 секунд, +# второго (желтый) — 2 секунды, третьего (зеленый) — на ваше усмотрение. +# Переключение между режимами должно осуществляться только в указанном порядке +# (красный, желтый, зеленый). Проверить работу примера, создав экземпляр и вызвав +# описанный метод. +from time import sleep + + +class TrafficLight: + __color = ['Красный', 'Желтый', 'Зеленый'] + + def running(self): + i = 0 + while i < 3: + print(f'Светофор переключается \n ' + f'{TrafficLight.__color[i]}') + if i == 0: + sleep(7) + elif i == 1: + sleep(5) + elif i == 2: + sleep(4) + i += 1 + + +TrafficLight = TrafficLight() +TrafficLight.running() \ No newline at end of file diff --git a/less_6_home_2.py b/less_6_home_2.py new file mode 100644 index 0000000..7e5faeb --- /dev/null +++ b/less_6_home_2.py @@ -0,0 +1,27 @@ +#2)Реализовать класс Road (дорога), в котором определить атрибуты: +# length (длина), # width (ширина). Значения данных атрибутов должны +# передаваться при создании экземпляра класса. Атрибуты сделать защищенными. +# Определить метод расчета массы асфальта, необходимого для покрытия +# всего дорожного полотна. +# Использовать формулу: длина*ширина*масса асфальта для покрытия одного +# кв метра дороги асфальтом, толщиной в 1 см*число см толщины полотна. +# Проверить работу метода. Например: 20м*5000м*25кг*5см = 12500 т + + +class Road: + def __init__(self, _length, _width): + self._length = _length + self._width = _width + + def mass(self): + return self._length * self._width + + +class MassCount(Road): + def __init__(self, _length, _width, volume): + super().__init__(_length, _width) + self.volume = volume + + +r = MassCount(25, 10000, 1) +print(r.mass()) diff --git a/less_6_home_3.py b/less_6_home_3.py new file mode 100644 index 0000000..2e66ea2 --- /dev/null +++ b/less_6_home_3.py @@ -0,0 +1,35 @@ +# Реализовать базовый класс 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 self.name + ' ' + self.surname + + def get_total_income(self): + return self._income.get('wage') + self._income.get('bonus') + +a = Position('Tom', 'Black', 'Chief', 100, 20) +print(a.get_full_name()) +print(a.position) +print(a.get_total_income()) \ No newline at end of file diff --git a/less_6_home_4.py b/less_6_home_4.py new file mode 100644 index 0000000..1ee34f0 --- /dev/null +++ b/less_6_home_4.py @@ -0,0 +1,89 @@ +#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: + # atributes + def __init__(self, speed, color, name, is_police): + self.speed = speed + self.color = color + self.name = name + self.is_police = is_police + + # methods + 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 > 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 > 40: + 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} не полицейский автомобиль' + + +audi = SportCar(100, 'красный', 'Audi', False) +oka = TownCar(30, 'Белый', 'Ока', False) +lada = WorkCar(70, 'Вишневая', 'Lada', True) +ford = PoliceCar(110, 'Зеленый', 'Ford', True) +print(lada.turn_left()) +print(f'Когда {oka.turn_right()}, чем {audi.stop()}') +print(f'{lada.go()} со скоростью {lada.show_speed()}') +print(f'{lada.name} {lada.color}') +print(f'Этот {audi.name} полицейский автомобиль? {audi.is_police}') +print(f'Этот {lada.name} полицейский автомобиль? {lada.is_police}') +print(audi.show_speed()) +print(oka.show_speed()) +print(ford.police()) +print(ford.show_speed()) \ No newline at end of file diff --git a/less_6_home_5.py b/less_6_home_5.py new file mode 100644 index 0000000..14bb7e6 --- /dev/null +++ b/less_6_home_5.py @@ -0,0 +1,49 @@ +# Реализовать класс 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}. Запуск отрисовки маркером' + + +pen = Pen('Ручка') +pencil = Pencil('Карандаш') +handle = Handle('Маркер') +print(pen.draw()) +print(pencil.draw()) +print(handle.draw()) \ No newline at end of file