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
Binary file added reports/Tsiutskou/1/rep/Лаба 1.pdf
Binary file not shown.
7 changes: 7 additions & 0 deletions reports/Tsiutskou/1/src/1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import random

N = int(input("Введите количество чисел N: "))
numbers = list(range(1, N + 1))
random.shuffle(numbers)
print(f"\n{N} чисел в случайном порядке:")
print(" ".join(map(str, numbers)))
7 changes: 7 additions & 0 deletions reports/Tsiutskou/1/src/2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
nums = list(map(int, input("Введите числа: ").split()))
for x in set(nums):
if nums.count(x) > len(nums) // 2:
print(f"Элемент большинства: {x}")
break
else:
print("Нет элемента большинства")
Binary file added reports/Tsiutskou/2/rep/Лаба 2.pdf
Binary file not shown.
56 changes: 56 additions & 0 deletions reports/Tsiutskou/2/src/1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
class LimitedSet:
def __init__(self, max_power, elements=None):
self.max_power = max_power
self.items = []
if elements:
for e in elements:
self.add(e)

def add(self, value):
if value not in self.items and len(self.items) < self.max_power:
self.items.append(float(value))
return True
return False

def remove(self, value):
if value in self.items:
self.items.remove(value)
return True
return False

def contains(self, value):
return value in self.items

def intersection(self, other):
result = LimitedSet(min(self.max_power, other.max_power))
for item in self.items:
if item in other.items:
result.add(item)
return result

def __str__(self):
return "{" + ", ".join(str(x) for x in self.items) + "}"

def __eq__(self, other):
return set(self.items) == set(other.items)


# Создание множеств
s1 = LimitedSet(5, [1.5, 2.7, 3.2, 4.8])
s2 = LimitedSet(5, [2.7, 4.8, 6.1, 7.5])
print("Множество 1:", s1)
print("Множество 2:", s2)
# Проверка принадлежности
print(f"Содержит 2.7? {s1.contains(2.7)}")
# Добавление элемента
s1.add(5.9)
print("После добавления 5.9:", s1)
# Удаление элемента
s1.remove(1.5)
print("После удаления 1.5:", s1)
# Пересечение
s3 = s1.intersection(s2)
print("Пересечение:", s3)
# Сравнение
s4 = LimitedSet(5, [2.7, 4.8])
print(f"Равны? {s3 == s4}")
68 changes: 68 additions & 0 deletions reports/Tsiutskou/2/src/2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
class Subscriber:
def __init__(self, name, phone_number):
self.name = name
self.phone_number = phone_number
self.debt = 0
self.services = []
self.is_active = True

def pay(self, amount):
if amount <= self.debt:
self.debt -= amount
print(f"{self.name} оплатил {amount} руб. Остаток: {self.debt}")
else:
print(f"Оплачено {amount}, сдача {amount - self.debt}")
self.debt = 0

def make_call(self, minutes):
cost = minutes * 0.2
self.debt += cost
print(f"Звонок {minutes} мин = {cost} руб.")

def add_service(self, service_name, service_price):
self.services.append(service_name)
self.debt += service_price
print(f"Добавлена услуга {service_name} ({service_price} руб.)")

def remove_service(self, service_name):
for s in self.services:
if s == service_name:
self.services.remove(s)
print(f"Услуга {service_name} удалена")
return
print(f"Услуга {service_name} не найдена")


class Administrator:
def __init__(self, name):
self.name = name

def change_number(self, subscriber, new_number):
old = subscriber.phone_number
subscriber.phone_number = new_number
print(f"{self.name}: сменил номер {old} -> {new_number}")

def disable(self, subscriber):
if subscriber.debt > 0:
subscriber.is_active = False
print(f"{self.name}: отключил {subscriber.name} (долг {subscriber.debt} руб.)")

def enable(self, subscriber):
if subscriber.debt == 0:
subscriber.is_active = True
print(f"{self.name}: включил {subscriber.name}")


admin = Administrator("Иван")
sub = Subscriber("Петр", "123-45-67")
print(f"Абонент: {sub.name}, Номер: {sub.phone_number}\n")
sub.make_call(10)
sub.add_service("Интернет", 30)
sub.add_service("ТВ", 20)
print(f"\nДолг: {sub.debt} руб.")
print(f"Услуги: {sub.services}\n")
sub.pay(50)
print(f"Остаток долга: {sub.debt}\n")
admin.change_number(sub, "999-88-77")
admin.disable(sub)
print(f"Активен: {sub.is_active}")
Binary file added reports/Tsiutskou/3/rep/Лаба 3.pdf
Binary file not shown.
62 changes: 62 additions & 0 deletions reports/Tsiutskou/3/src/1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
class Sedan:
def drive(self):
pass


class Hatchback:
def drive(self):
pass


class ToyotaSedan(Sedan):
def drive(self):
return "Toyota Camry"


class ToyotaHatchback(Hatchback):
def drive(self):
return "Toyota Corolla"


class TeslaSedan(Sedan):
def drive(self):
return "Tesla Model 3"


class TeslaHatchback(Hatchback):
def drive(self):
return "Tesla Model Y"


class CarFactory:
def create_sedan(self):
pass

def create_hatchback(self):
pass


class ToyotaFactory(CarFactory):
def create_sedan(self):
return ToyotaSedan()

def create_hatchback(self):
return ToyotaHatchback()


class TeslaFactory(CarFactory):
def create_sedan(self):
return TeslaSedan()

def create_hatchback(self):
return TeslaHatchback()


def produce_cars(factory, name):
print(f"\nЗавод {name}:")
print(factory.create_sedan().drive())
print(factory.create_hatchback().drive())


produce_cars(ToyotaFactory(), "Toyota")
produce_cars(TeslaFactory(), "Tesla")
78 changes: 78 additions & 0 deletions reports/Tsiutskou/3/src/2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
class Account:
def get_discount(self):
return 0

def get_benefits(self):
return []

def get_name(self):
return "Базовая"


class BaseAccount(Account):
def get_discount(self):
return 0

def get_benefits(self):
return ["Просмотр книг"]

def get_name(self):
return "Базовая"


class SilverLevel(Account):
def __init__(self, account):
self.account = account

def get_discount(self):
return self.account.get_discount() + 5

def get_benefits(self):
benefits = self.account.get_benefits()
benefits.append("Скидка 5%")
benefits.append("Бесплатная доставка")
return benefits

def get_name(self):
return f"{self.account.get_name()} + Серебряный"


class GoldLevel(Account):
def __init__(self, account):
self.account = account

def get_discount(self):
return self.account.get_discount() + 10

def get_benefits(self):
benefits = self.account.get_benefits()
benefits.append("Скидка 10%")
benefits.append("Бесплатная доставка за 1 час")
benefits.append("Доступ к эксклюзивным книгам")
benefits.append("Приоритетная поддержка")
return benefits

def get_name(self):
return f"{self.account.get_name()} + Золотой"


def show_account_info(account):
print(f"\n=== {account.get_name()} ===")
print(f"Скидка: {account.get_discount()}%")
print("Возможности:")
for benefit in account.get_benefits():
print(f" - {benefit}")


base = BaseAccount()
show_account_info(base)
silver = SilverLevel(base)
show_account_info(silver)
gold = GoldLevel(silver)
show_account_info(gold)
print("\n=== Покупатель заказал книгу ===")
book_price = 1000
final_price = book_price - (book_price * gold.get_discount() / 100)
print(f"Цена книги: {book_price} руб.")
print(f"Скидка: {gold.get_discount()}%")
print(f"Итого: {final_price} руб.")
109 changes: 109 additions & 0 deletions reports/Tsiutskou/3/src/3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
class State:
def __init__(self, atm):
self.atm = atm


class WaitState(State):
def insert_card(self):
print("Карта вставлена. Введите PIN")
self.atm.state = self.atm.auth

def enter_pin(self, pin):
print("Сначала вставьте карту")

def withdraw(self, amount):
print("Сначала вставьте карту")

def end(self):
print("Нет сессии")


class AuthState(State):
def insert_card(self):
print("Карта уже есть")

def enter_pin(self, pin):
if pin == "1234":
print("PIN верен")
self.atm.state = self.atm.oper
else:
print("PIN неверен")
self.atm.state = self.atm.wait

def withdraw(self, amount):
print("Сначала введите PIN")

def end(self):
print("Сессия завершена")
self.atm.state = self.atm.wait


class OperState(State):
def insert_card(self):
print("Карта уже есть")

def enter_pin(self, pin):
print("PIN уже введен")

def withdraw(self, amount):
if amount > self.atm.cash:
print("Нет денег в банкомате")
elif amount > 10000:
print("Лимит 10000 руб")
else:
self.atm.cash -= amount
print(f"Выдано {amount} руб. Остаток: {self.atm.cash}")

print("Заберите карту")
self.atm.state = self.atm.wait

def end(self):
print("Заберите карту")
self.atm.state = self.atm.wait


class BlockState(State):
def insert_card(self):
print("Банкомат заблокирован")

def enter_pin(self, pin):
print("Банкомат заблокирован")

def withdraw(self, amount):
print("Банкомат заблокирован")

def end(self):
print("Банкомат заблокирован")


class ATM:
def __init__(self, cash):
self.cash = cash
self.wait = WaitState(self)
self.auth = AuthState(self)
self.oper = OperState(self)
self.block = BlockState(self)
self.state = self.wait

def insert_card(self):
self.state.insert_card()

def enter_pin(self, pin):
self.state.enter_pin(pin)

def withdraw(self, amount):
self.state.withdraw(amount)

def end(self):
self.state.end()


atm = ATM(50000)
atm.insert_card()
atm.enter_pin("1111")
atm.insert_card()
atm.enter_pin("1234")
atm.withdraw(15000)
atm.insert_card()
atm.enter_pin("1234")
atm.withdraw(5000)
Binary file added reports/Tsiutskou/4/rep/Лаба 4.pdf
Binary file not shown.
Loading
Loading