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 Homework_6/1Traffic_light.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#Создать класс TrafficLight (светофор) и определить у него один атрибут color (цвет) и метод running (запуск).
# Атрибут реализовать как приватный.
# В рамках метода реализовать переключение светофора в режимы: красный, желтый, зеленый.
# Продолжительность первого состояния (красный) составляет 7 секунд, второго (желтый) — 2 секунды, третьего (зеленый) — на ваше усмотрение.
# Переключение между режимами должно осуществляться только в указанном порядке (красный, желтый, зеленый).
# Проверить работу примера, создав экземпляр и вызвав описанный метод.

from itertools import count #Импортируем для бесконечного цикла.
import time #Для того, чтобы запись выводилась через некоторое время.
class TrafficLight:
def __init__(self):
color = self.running() #Формируем запуск.
return color #Возвращаем color, который запускает функцию running.


def running(self):
__color_base = ['Красный', 'Желтый', 'Зеленый'] #Создаем список из 3 цветов.
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)



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

class Road:
def __init__(self, length, width):
self._length = int(length) #Переводим значения в интовые(на всякий случай).
self._width = int(width)
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

mass_of_asphalt = Road(20,30)





28 changes: 28 additions & 0 deletions Homework_6/3Worker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#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.surname = str(surname)
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')) #Присваиваем значения переменной для удобного подсчета.
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())
71 changes: 71 additions & 0 deletions Homework_6/4Car.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#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.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) #Машина поворачивает через 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', True)
mar.turn()
mar.show_speed()
print(mar.result)
31 changes: 31 additions & 0 deletions Homework_6/5stationery.py
Original file line number Diff line number Diff line change
@@ -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()