Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Григорьев ЛР / 7 / parking_final

.py
Скачиваний:
1
Добавлен:
03.06.2024
Размер:
3.13 Кб
Скачать
from typing import List

class Car:
    def __init__(self, manufacturer: str, model: str, license_plate: str):
        self.manufacturer = manufacturer
        self.model = model
        self.license_plate = license_plate

class ParkingLot:
    def __init__(self, max_cars: int):
        self.max_cars = max_cars
        self.cars_in_lot: List[Car] = []

    def add_car(self, car: Car) -> bool:
        if len(self.cars_in_lot) < self.max_cars:
            self.cars_in_lot.append(car)
            return True
        else:
            return False

    def remove_car(self, car: Car) -> bool:
        if car in self.cars_in_lot:
            self.cars_in_lot.remove(car)
            return True
        else:
            return False

    def remove_manufacturer(self, manuf: str):
        if not any(car.manufacturer == manuf for car in self.cars_in_lot):
            print("Марки",manuf,"нет на парковке")
            return False
        new_cars_in_lot = []
        for car in self.cars_in_lot:
            if car.manufacturer != manuf:
                new_cars_in_lot.append(car)
        self.cars_in_lot = new_cars_in_lot
        if len(self.cars_in_lot) != len(new_cars_in_lot):
            return True


    def search_car_by_license_plate(self, license_plate: str) -> Car:
        for car in self.cars_in_lot:
            if car.license_plate == license_plate:
                return car
        return None

    def num_of_cars(self) -> int:
        return len(self.cars_in_lot)

    def cars_print(self):
        print("Максимальная вместимость:",self.max_cars)
        print("Машины на парковке:")
        for car in self.cars_in_lot:
            print(car.manufacturer, car.model, car.license_plate)
                


def testing():
    parking_lot = ParkingLot(2)
    
    car_1 = Car("Toyota", "Corolla", "а111аа")
    parking_lot.add_car(car_1) 
    car_2 = Car("Honda", "Civic", "б222бб")
    parking_lot.add_car(car_2) 
    
    car_3 = Car("BMW", "X5", "в333вв")
    assert parking_lot.add_car(car_3) == False

    assert parking_lot.search_car_by_license_plate("а111аа") == car_1
    assert parking_lot.search_car_by_license_plate("д322дд") == None

    assert parking_lot.remove_car(car_2) == True
    assert parking_lot.remove_car(car_2) == False

    assert parking_lot.num_of_cars() == 1

    try:
        print(parking_lot.cars_in_lot[2])
    except IndexError:
        print("Парковка заполнена!")

    parking_lot.cars_print()

testing()

print("///")
def remove_manufacturer_test():
    parking_lot = ParkingLot(5)

    car_1 = Car("Toyota", "Corolla", "а111аа")
    car_2 = Car("Toyota", "Corolla2", "а222аа")
    car_3 = Car("Honda", "Civic", "б222бб")

    parking_lot.add_car(car_1)
    parking_lot.add_car(car_2)
    parking_lot.add_car(car_3)
    parking_lot.cars_print()

    print("///")
    parking_lot.remove_manufacturer("Toyot")
    parking_lot.cars_print()
remove_manufacturer_test()
Соседние файлы в папке 7