altervisi0n

Untitled

Sep 28th, 2025
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.17 KB | None | 0 0
  1. # 1.py: Области видимости
  2. global_var1 = 10
  3. global_var2 = 20
  4.  
  5. class Example:
  6. static_a = 1
  7. static_b = 2
  8.  
  9. def __init__(self, dyn_a, dyn_b):
  10. self.dyn_a = dyn_a
  11. self.dyn_b = dyn_b
  12.  
  13. def first_method(self):
  14. local_variable = "Это локальная переменная"
  15. print(local_variable)
  16.  
  17. def second_method(self):
  18. return global_var1 + global_var2
  19.  
  20. def third_method(self):
  21. return self.dyn_a ** self.dyn_b
  22.  
  23.  
  24. my_object = Example(dyn_a=5, dyn_b=3)
  25.  
  26.  
  27. print("Вызов первого метода:")
  28. my_object.first_method()
  29.  
  30.  
  31. sum_result = my_object.second_method()
  32. print(f"\nРезультат второго метода (сумма глобальных переменных): {sum_result}")
  33.  
  34. power_result = my_object.third_method()
  35. print(f"Результат третьего метода ({my_object.dyn_a} в степени {my_object.dyn_b}): {power_result}")
  36.  
  37. print(f"\nЗначение статической переменной a: {Example.static_a}")
  38.  
  39. # 2.py: Расчет площади обоев (классы Wall, Room)
  40. class Wall:
  41. def __init__(self, width, height):
  42. self.width = width
  43. self.height = height
  44.  
  45. def get_area(self):
  46. return self.width * self.height
  47.  
  48.  
  49. class Room:
  50. def __init__(self, length, width, height):
  51. self.length = length
  52. self.width = width
  53. self.height = height
  54. self.walls = [
  55. Wall(length, height),
  56. Wall(length, height),
  57. Wall(width, height),
  58. Wall(width, height)
  59. ]
  60. self.openings = []
  61.  
  62. def add_opening(self, width, height):
  63. self.openings.append(Wall(width, height))
  64.  
  65. def get_wallpaper_area(self):
  66. total_wall_area = sum(wall.get_area() for wall in self.walls)
  67. total_openings_area = sum(opening.get_area() for opening in self.openings)
  68.  
  69. return total_wall_area - total_openings_area
  70.  
  71.  
  72.  
  73. my_room = Room(length=5, width=4, height=2.5)
  74.  
  75.  
  76. my_room.add_opening(width=1.5, height=1.2) # Окно
  77. my_room.add_opening(width=0.9, height=2.0) # Дверь
  78.  
  79.  
  80. wallpaper_needed = my_room.get_wallpaper_area()
  81.  
  82. print(f"Общая площадь стен: {sum(wall.get_area() for wall in my_room.walls)} м²")
  83. print(f"Площадь окна и двери: {sum(op.get_area() for op in my_room.openings)} м²")
  84. print(f"Площадь для оклейки обоями: {wallpaper_needed:.2f} м²")
  85.  
  86. # 3.py: Иерархия классов автомобилей
  87. class Car:
  88. def __init__(self, speed, color, name, is_police=False):
  89. self.speed = speed
  90. self.color = color
  91. self.name = name
  92. self.is_police = is_police
  93. print(f"Создан автомобиль: {self.name} (Цвет: {self.color})")
  94.  
  95. def go(self):
  96. print(f"{self.name} поехала.")
  97.  
  98. def stop(self):
  99. print(f"{self.name} остановилась.")
  100.  
  101. def turn(self, direction):
  102. print(f"{self.name} повернула {direction}.")
  103.  
  104. def show_speed(self):
  105. print(f"Текущая скорость {self.name}: {self.speed} км/ч.")
  106.  
  107. class TownCar(Car):
  108. def show_speed(self):
  109. super().show_speed()
  110. if self.speed > 60:
  111. print(f"ВНИМАНИЕ: {self.name} превысила разрешенную скорость 60 км/ч!")
  112.  
  113. class SportCar(Car):
  114. pass
  115.  
  116. class WorkCar(Car):
  117. def show_speed(self):
  118. super().show_speed()
  119. if self.speed > 40:
  120. print(f"ВНИМАНИЕ: {self.name} превысила разрешенную скорость 40 км/ч!")
  121.  
  122. class PoliceCar(Car):
  123. def __init__(self, speed, color, name):
  124. super().__init__(speed, color, name, is_police=True)
  125.  
  126. print("--- Создание автомобилей ---")
  127. town_car = TownCar(75, "Синий", "Lada Vesta")
  128. sport_car = SportCar(120, "Красный", "Ferrari")
  129. work_car = WorkCar(50, "Желтый", "Ford Transit")
  130. police_car = PoliceCar(80, "Белый", "Ford Focus")
  131.  
  132. print("\n--- Демонстрация методов ---")
  133. town_car.go()
  134. town_car.turn("налево")
  135. town_car.show_speed()
  136. print("-" * 20)
  137.  
  138. work_car.show_speed()
  139. print("-" * 20)
  140.  
  141. sport_car.show_speed()
  142. print("-" * 20)
  143.  
  144. police_car.stop()
  145. print(f"Является ли {police_car.name} полицейской? {'Да' if police_car.is_police else 'Нет'}")
  146.  
  147. # 4.py: Банковский счет
  148. class BankAccount:
  149. bank_name = "Global Python Bank"
  150. MIN_BALANCE = 0
  151.  
  152. def __init__(self, owner, balance):
  153. self.owner = owner
  154. self.balance = balance
  155.  
  156. def deposit(self, amount):
  157. if amount > 0:
  158. self.balance += amount
  159. print(f"Счет {self.owner} пополнен на {amount}. Баланс: {self.balance}")
  160. else:
  161. print("Сумма пополнения должна быть положительной.")
  162.  
  163. def withdraw(self, amount):
  164. if self.balance - amount >= self.MIN_BALANCE:
  165. self.balance -= amount
  166. print(f"Со счета {self.owner} снято {amount}. Баланс: {self.balance}")
  167. else:
  168. print("Недостаточно средств.")
  169.  
  170. @classmethod
  171. def from_vip_client(cls, owner_name):
  172. print(f"Создание VIP-счета для {owner_name} в {cls.bank_name}.")
  173. return cls(owner_name, balance=1000)
  174.  
  175. @staticmethod
  176. def validate_transaction(amount):
  177. if 0 < amount < 100000:
  178. print(f"Транзакция на сумму {amount} допустима.")
  179. return True
  180. else:
  181. print(f"Транзакция на сумму {amount} недопустима.")
  182. return False
  183.  
  184.  
  185.  
  186. acc1 = BankAccount("Иван Петров", 500)
  187.  
  188. acc1.deposit(150)
  189. acc1.withdraw(100)
  190. print("-" * 30)
  191.  
  192. acc_vip = BankAccount.from_vip_client("Анна Смирнова")
  193. print(f"Начальный баланс VIP-клиента {acc_vip.owner}: {acc_vip.balance}")
  194. print("-" * 30)
  195.  
  196. BankAccount.validate_transaction(5000)
  197. acc1.validate_transaction(200000)
Advertisement
Add Comment
Please, Sign In to add comment