Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 1.py: Области видимости
- global_var1 = 10
- global_var2 = 20
- class Example:
- static_a = 1
- static_b = 2
- def __init__(self, dyn_a, dyn_b):
- self.dyn_a = dyn_a
- self.dyn_b = dyn_b
- def first_method(self):
- local_variable = "Это локальная переменная"
- print(local_variable)
- def second_method(self):
- return global_var1 + global_var2
- def third_method(self):
- return self.dyn_a ** self.dyn_b
- my_object = Example(dyn_a=5, dyn_b=3)
- print("Вызов первого метода:")
- my_object.first_method()
- sum_result = my_object.second_method()
- print(f"\nРезультат второго метода (сумма глобальных переменных): {sum_result}")
- power_result = my_object.third_method()
- print(f"Результат третьего метода ({my_object.dyn_a} в степени {my_object.dyn_b}): {power_result}")
- print(f"\nЗначение статической переменной a: {Example.static_a}")
- # 2.py: Расчет площади обоев (классы Wall, Room)
- class Wall:
- def __init__(self, width, height):
- self.width = width
- self.height = height
- def get_area(self):
- return self.width * self.height
- class Room:
- def __init__(self, length, width, height):
- self.length = length
- self.width = width
- self.height = height
- self.walls = [
- Wall(length, height),
- Wall(length, height),
- Wall(width, height),
- Wall(width, height)
- ]
- self.openings = []
- def add_opening(self, width, height):
- self.openings.append(Wall(width, height))
- def get_wallpaper_area(self):
- total_wall_area = sum(wall.get_area() for wall in self.walls)
- total_openings_area = sum(opening.get_area() for opening in self.openings)
- return total_wall_area - total_openings_area
- my_room = Room(length=5, width=4, height=2.5)
- my_room.add_opening(width=1.5, height=1.2) # Окно
- my_room.add_opening(width=0.9, height=2.0) # Дверь
- wallpaper_needed = my_room.get_wallpaper_area()
- print(f"Общая площадь стен: {sum(wall.get_area() for wall in my_room.walls)} м²")
- print(f"Площадь окна и двери: {sum(op.get_area() for op in my_room.openings)} м²")
- print(f"Площадь для оклейки обоями: {wallpaper_needed:.2f} м²")
- # 3.py: Иерархия классов автомобилей
- class Car:
- def __init__(self, speed, color, name, is_police=False):
- self.speed = speed
- self.color = color
- self.name = name
- self.is_police = is_police
- print(f"Создан автомобиль: {self.name} (Цвет: {self.color})")
- def go(self):
- print(f"{self.name} поехала.")
- def stop(self):
- print(f"{self.name} остановилась.")
- def turn(self, direction):
- print(f"{self.name} повернула {direction}.")
- def show_speed(self):
- print(f"Текущая скорость {self.name}: {self.speed} км/ч.")
- class TownCar(Car):
- def show_speed(self):
- super().show_speed()
- if self.speed > 60:
- print(f"ВНИМАНИЕ: {self.name} превысила разрешенную скорость 60 км/ч!")
- class SportCar(Car):
- pass
- class WorkCar(Car):
- def show_speed(self):
- super().show_speed()
- if self.speed > 40:
- print(f"ВНИМАНИЕ: {self.name} превысила разрешенную скорость 40 км/ч!")
- class PoliceCar(Car):
- def __init__(self, speed, color, name):
- super().__init__(speed, color, name, is_police=True)
- print("--- Создание автомобилей ---")
- town_car = TownCar(75, "Синий", "Lada Vesta")
- sport_car = SportCar(120, "Красный", "Ferrari")
- work_car = WorkCar(50, "Желтый", "Ford Transit")
- police_car = PoliceCar(80, "Белый", "Ford Focus")
- print("\n--- Демонстрация методов ---")
- town_car.go()
- town_car.turn("налево")
- town_car.show_speed()
- print("-" * 20)
- work_car.show_speed()
- print("-" * 20)
- sport_car.show_speed()
- print("-" * 20)
- police_car.stop()
- print(f"Является ли {police_car.name} полицейской? {'Да' if police_car.is_police else 'Нет'}")
- # 4.py: Банковский счет
- class BankAccount:
- bank_name = "Global Python Bank"
- MIN_BALANCE = 0
- def __init__(self, owner, balance):
- self.owner = owner
- self.balance = balance
- def deposit(self, amount):
- if amount > 0:
- self.balance += amount
- print(f"Счет {self.owner} пополнен на {amount}. Баланс: {self.balance}")
- else:
- print("Сумма пополнения должна быть положительной.")
- def withdraw(self, amount):
- if self.balance - amount >= self.MIN_BALANCE:
- self.balance -= amount
- print(f"Со счета {self.owner} снято {amount}. Баланс: {self.balance}")
- else:
- print("Недостаточно средств.")
- @classmethod
- def from_vip_client(cls, owner_name):
- print(f"Создание VIP-счета для {owner_name} в {cls.bank_name}.")
- return cls(owner_name, balance=1000)
- @staticmethod
- def validate_transaction(amount):
- if 0 < amount < 100000:
- print(f"Транзакция на сумму {amount} допустима.")
- return True
- else:
- print(f"Транзакция на сумму {amount} недопустима.")
- return False
- acc1 = BankAccount("Иван Петров", 500)
- acc1.deposit(150)
- acc1.withdraw(100)
- print("-" * 30)
- acc_vip = BankAccount.from_vip_client("Анна Смирнова")
- print(f"Начальный баланс VIP-клиента {acc_vip.owner}: {acc_vip.balance}")
- print("-" * 30)
- BankAccount.validate_transaction(5000)
- acc1.validate_transaction(200000)
Advertisement
Add Comment
Please, Sign In to add comment