Lesson 12
This commit is contained in:
parent
622d1ff2bb
commit
5b6f2916a6
79
lesson_12/code/db.py
Normal file
79
lesson_12/code/db.py
Normal file
@ -0,0 +1,79 @@
|
||||
import psycopg2
|
||||
|
||||
dbname='llm'
|
||||
user='postgres'
|
||||
host='localhost'
|
||||
password='123'
|
||||
id=1
|
||||
|
||||
try:
|
||||
conn = psycopg2.connect(f"dbname={dbname} user={user} host={host} password={password} ")
|
||||
except:
|
||||
print("I am unable to connect to the database")
|
||||
|
||||
|
||||
# we use a context manager to scope the cursor session
|
||||
with conn.cursor() as curs:
|
||||
try:
|
||||
# simple single row system query
|
||||
curs.execute("""
|
||||
CREATE TABLE IF NOT EXISTS cinemas (
|
||||
id serial,
|
||||
name text,
|
||||
describe text
|
||||
);
|
||||
""")
|
||||
print("OK")
|
||||
conn.commit()
|
||||
# a more robust way of handling errors
|
||||
except (Exception, psycopg2.DatabaseError) as error:
|
||||
print(error)
|
||||
try:
|
||||
curs.execute("""
|
||||
INSERT
|
||||
INTO
|
||||
cinemas("name", describe)
|
||||
VALUES('Иллюзия обмана', 'Про фокусы !');
|
||||
""")
|
||||
conn.commit()
|
||||
except (Exception, psycopg2.DatabaseError) as error:
|
||||
print(error)
|
||||
|
||||
try:
|
||||
curs.execute(f"""
|
||||
DELETE
|
||||
FROM
|
||||
cinemas
|
||||
WHERE ID={id}
|
||||
""")
|
||||
conn.commit()
|
||||
except (Exception, psycopg2.DatabaseError) as error:
|
||||
print(error)
|
||||
|
||||
try:
|
||||
curs.execute(f"""
|
||||
UPDATE cinemas SET name='Иллюзия любви!', describe='No name'
|
||||
WHERE ID=2
|
||||
""")
|
||||
conn.commit()
|
||||
except (Exception, psycopg2.DatabaseError) as error:
|
||||
print(error)
|
||||
|
||||
|
||||
try:
|
||||
curs.execute(f"""
|
||||
SELECT id, name, describe
|
||||
FROM cinemas
|
||||
|
||||
""")
|
||||
|
||||
_rows = curs.fetchall()
|
||||
for row in _rows:
|
||||
id, name, desc = row
|
||||
print(f"id: {id}, name: {name}, desc: {desc}")
|
||||
|
||||
except (Exception, psycopg2.DatabaseError) as error:
|
||||
print(error)
|
||||
|
||||
|
||||
conn.close()
|
||||
15
lesson_12/code/oop.py
Normal file
15
lesson_12/code/oop.py
Normal file
@ -0,0 +1,15 @@
|
||||
class Mammal:
|
||||
def move(self, x):
|
||||
print('Двигается')
|
||||
|
||||
|
||||
class Hare(Mammal):
|
||||
def move(self, x, y ):
|
||||
print('Прыгает')
|
||||
|
||||
|
||||
animal = Mammal()
|
||||
animal.move(100) # Двигается
|
||||
|
||||
hare = Hare()
|
||||
hare.move(100) # Прыгает ????
|
||||
32
lesson_12/home_task/task39.py
Normal file
32
lesson_12/home_task/task39.py
Normal file
@ -0,0 +1,32 @@
|
||||
# Модель учебных материалов
|
||||
# todo: Создайте иерархию классов для представления различных типов учебных материалов.
|
||||
#
|
||||
# Требования: Базовый класс LearningMaterial:
|
||||
# Свойства: title, author, duration_minutes
|
||||
# Методы:
|
||||
# display_info() - выводит основную информацию
|
||||
# get_difficulty() - возвращает сложность материала (должен быть переопределен в дочерних классах)
|
||||
#
|
||||
# Дочерние классы:
|
||||
# VideoLesson:
|
||||
# Дополнительные свойства: video_quality, subtitles_available
|
||||
# Сложность: "Средняя"
|
||||
#
|
||||
# Article:
|
||||
# Дополнительные свойства: word_count, reading_level
|
||||
# Сложность: рассчитывается как word_count / 1000 (легкая если <1, средняя 1-3, сложная >3)
|
||||
#
|
||||
# Quiz:
|
||||
# Дополнительные свойства: questions_count, passing_score
|
||||
# Сложность: "Высокая" если passing_score > 80, иначе "Средняя"
|
||||
|
||||
|
||||
# Этот код должен работать после реализации:
|
||||
materials = [
|
||||
VideoLesson("Python ООП", "Иван Иванов", 45, "1080p", True),
|
||||
Article("Глубокое обучение", "Анна Петрова", 1200, "advanced"),
|
||||
Quiz("Проверка знаний", "Платформа", 20, 75, 10)
|
||||
]
|
||||
|
||||
for material in materials:
|
||||
print(f"{material.title}: {material.get_difficulty()}")
|
||||
21
lesson_12/home_task/task40.py
Normal file
21
lesson_12/home_task/task40.py
Normal file
@ -0,0 +1,21 @@
|
||||
# Система уведомлений (Полиморфизм)
|
||||
# todo: Реализовать систему отправки уведомлений пользователям через разные каналы.
|
||||
#
|
||||
# Требования:
|
||||
# Базовый класс NotificationSender с методом send(message, user)
|
||||
# Дочерние классы:
|
||||
# EmailSender: отправляет email с темой "Образовательная платформа"
|
||||
# SMSSender: отправляет SMS (первые 50 символов сообщения)
|
||||
# PushSender: отправляет push-уведомление с иконкой "🎓"
|
||||
#
|
||||
# Класс пользователя User:
|
||||
# Свойства: name, preferred_notifications (список объектов NotificationSender)
|
||||
|
||||
|
||||
# Этот код должен работать после релизации:
|
||||
user = User("Мария", [EmailSender(), PushSender()])
|
||||
notify_user(user, "Блок аналитики начинается с 27 октября!")
|
||||
|
||||
def notify_user(user, message):
|
||||
for sender in user.preferred_notifications:
|
||||
sender.send(message, user)
|
||||
40
lesson_12/home_task/task41.py
Normal file
40
lesson_12/home_task/task41.py
Normal file
@ -0,0 +1,40 @@
|
||||
# todo: Создайте иерархию классов для экспорта данных в разные форматы.
|
||||
# Требования:
|
||||
# Абстрактный базовый класс DataExporter:
|
||||
#
|
||||
# Методы:
|
||||
# export(self, data) - абстрактный метод
|
||||
# get_format_name(self) - возвращает название формата
|
||||
# validate_data(self, data) - общий метод проверки данных (не пустые ли)
|
||||
#
|
||||
# Конкретные реализации:
|
||||
# JSONExporter:
|
||||
# Экспортирует данные в JSON-формат
|
||||
# Добавляет поле "export_timestamp" с текущим временем
|
||||
#
|
||||
# CSVExporter:
|
||||
# Экспортирует данные в CSV (если data - список словарей)
|
||||
# Автоматически определяет заголовки из ключей первого элемента
|
||||
#
|
||||
# XMLExporter:
|
||||
# Создает XML структуру с корневым элементом <report>
|
||||
# HTMLExporter (дополнительно):
|
||||
# Создает красивую HTML-таблицу с CSS-стилями
|
||||
|
||||
|
||||
# Этот код должен работать после реализации:
|
||||
sales_data = [
|
||||
{"product": "Laptop", "price": 1000, "quantity": 2},
|
||||
{"product": "Mouse", "price": 50, "quantity": 10}
|
||||
]
|
||||
|
||||
exporters = [
|
||||
JSONExporter(),
|
||||
CSVExporter(),
|
||||
XMLExporter()
|
||||
]
|
||||
|
||||
for exporter in exporters:
|
||||
print(f"Формат: {exporter.get_format_name()}")
|
||||
exporter.export(sales_data)
|
||||
print("---")
|
||||
Loading…
Reference in New Issue
Block a user