/
sejeenn
/
python_basic
Обзор
Документация
Войти
/
sejeenn
/
python_basic
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Module25/05_auto/main.py
139 строк
5 KB
Eugene Vorontsov
Copy repo python basic
03 фев 2025, 20:23
03 фев 2025, 20:23
a8fce4a
Код
Авторство
О чём код?
from math import sin, cos from random import randint class Car: """ Базовый класс Car(автомобиль), описывающий его движение. Args: x (int): передаётся координата 'х' y (int): передаётся координата 'y' Attributes: x (int): координата 'x' точки нахождения Car y (int): координата 'y' точки нахождения Car """ def __init__(self, x, y): self.x = x self.y = y def move(self, dist, angle): """ Метод для вычисления точки конечного следования Car(автомобиля) :param dist: передаётся дистанция на которую движется Car :rtype: int :param angle: передаётся угол направления движения Car :rtype: int """ self.x = self.x + int(dist * cos(angle)) self.y = self.y + int(dist * sin(angle)) print('Едем прямо', self.x, self.y, 'дальность пути: ', dist) def turn(self, dist, angle): """ Метод для вычисления точки следования Car(автомобиля) при смене движения (изменение dist - расстоянии и angle - угла направления движения) :param dist: передаётся дистанция на которую движется Car :rtype: int :param angle: передаётся угол направления движения Car :rtype: int """ self.x = self.x + int(dist * cos(angle)) self.y = self.y + int(dist * sin(angle)) print('Поворот не туда', self.x, self.y, 'дальность пути: ', dist) class Bus(Car): """ Класс Bus(автобус). Родитель: Car(автомобиль) __peoples: количество пассажиров __money: количество заработанных денег __places: количество мест в Bus(автобус) Args: x (int): передаётся координата 'х' y (int): передаётся координата 'y' cost (int): передаётся величина тарифа расчёта стоимости билета Attributes: cost (int): тариф для расчёта стоимости поездки """ __peoples = 0 __money = 0 __places = 24 def __init__(self, x, y, cost): super().__init__(x, y) self.cost = cost def more_passengers(self, entered, dist): """ Метод запускающий __peoples(пассажир) и собирающий many(деньги) с них. :param entered: количество вошедших пассажиров :rtype: int :param dist: дистанция движения калькуляции вместе с cost :rtype: int """ if Bus.__peoples >= Bus.__places: print('Мест нет') else: Bus.__peoples += entered Bus.__money += (self.cost * dist) * entered print(f'Зашло {entered} , оплата {Bus.__money} ') def fewer_passengers(self, people_came_out): """ Метод для выхода пассажиров. :param people_came_out: количество вышедших пассажиров. :rtype: int """ if Bus.__peoples - people_came_out < 0: print('Не может выйти больше чем есть пассажиров.') else: Bus.__peoples -= people_came_out print(f'Вышло {people_came_out} ') def get_money(self): """ Геттер для показа суммы many(заработанных средств) в конце поездки. :return:__many """ return self.__money direction = 30 distance = 100 car = Car(1, 2) bus = Bus(2, 4, 3) route = 0 while route != 5: route += 1 if randint(1, 2) == 2: bus.move(distance, direction) bus.more_passengers(randint(1, 5), distance) bus.fewer_passengers(randint(1, 5)) else: bus.turn(randint(1, distance), randint(1, direction)) bus.more_passengers(randint(1, 5), distance) bus.fewer_passengers(randint(1, 5)) print(f'Заработано {bus.get_money()} ')