Новый самый быстрый курс по JavaScript 🤖 Перед Вами самый быстрый курс по JavaScript, тут есть все что нужно чтобы начать программировать на JS. Для тех кому некогда, но очень надо выучить JS или подтянуть базу перед собеседованием. Мы отвечаем на все ваши комментарии и вопросы в курсе 👨💻👩💻
Код для обнаружения космический лучей:
Этот код будет бесконечно печатать "Обнаружение космических лучей...", пока не обнаружит космический луч! С днем космонавтики всех 🧑🚀
Подпишись 👉🏻 @KodduuPython 🤖
# Бесконечный цикл, который "обнаруживает" космические лучи
while True:
if False:
print("Космический луч обнаружен!")
else:
print("Обнаружение космических лучей...")
# Добавим задержку, чтобы не заспамить консоль
import time
time.sleep(1)
Этот код будет бесконечно печатать "Обнаружение космических лучей...", пока не обнаружит космический луч! С днем космонавтики всех 🧑🚀
Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим два интересных кейса из астрономии и космонавтики, которые можно реализовать на Python:
1. Расчет орбитальных параметров спутника — вычисление параметров орбиты, таких как большая полуось, период обращения и эксцентриситет орбиты.
2. Определение видимости космических объектов — определение, когда и где на Земле можно наблюдать определенные космические объекты, такие как планеты или спутники.
### 1. Расчет орбитальных параметров спутника
Этот код будет использовать закон третьего Кеплера для расчета периода обращения спутника на основе его большой полуоси.
### 2. Определение видимости космических объектов
Этот код будет использовать библиотеку
Подпишись 👉🏻 @KodduuPython 🤖
1. Расчет орбитальных параметров спутника — вычисление параметров орбиты, таких как большая полуось, период обращения и эксцентриситет орбиты.
2. Определение видимости космических объектов — определение, когда и где на Земле можно наблюдать определенные космические объекты, такие как планеты или спутники.
### 1. Расчет орбитальных параметров спутника
Этот код будет использовать закон третьего Кеплера для расчета периода обращения спутника на основе его большой полуоси.
def orbital_period(semi_major_axis, central_mass):
"""
Calculate the orbital period of a satellite using Kepler's third law.
Args:
semi_major_axis (float): Semi-major axis of the orbit in meters.
central_mass (float): Mass of the central body around which the satellite orbits in kilograms.
Returns:
float: Orbital period in seconds.
"""
G = 6.67430e-11 # Gravitational constant in m^3 kg^-1 s^-2
period = 2 * 3.14159 * (semi_major_axis ** 3 / (G * central_mass)) ** 0.5
return period
# Example usage:
# Earth's mass ~ 5.972e24 kg, GEO orbit semi-major axis ~ 42,164 km
# orbital_period(42164000, 5.972e24)
### 2. Определение видимости космических объектов
Этот код будет использовать библиотеку
ephem для определения, когда и где на Земле можно увидеть Марс.import ephem
def mars_visibility(observer_latitude, observer_longitude):
"""
Determine the next time Mars is visible from a given location on Earth.
Args:
observer_latitude (float): Latitude of the observer in degrees.
observer_longitude (float): Longitude of the observer in degrees.
Returns:
str: Date and time when Mars is visible next.
"""
observer = ephem.Observer()
observer.lat = str(observer_latitude)
observer.long = str(observer_longitude)
mars = ephem.Mars()
next_rising = observer.next_rising(mars)
return next_rising.datetime().strftime('%Y-%m-%d %H:%M:%S')
# Example usage:
# mars_visibility(48.8566, 2.3522) # Paris coordinates
Подпишись 👉🏻 @KodduuPython 🤖
Дескрипторы в Python — это объекты, которые реализуют методы протокола дескрипторов (
Ниже приведен простой пример, демонстрирующий использование дескрипторов для управления доступом к атрибуту класса:
В этом примере
Подпишись 👉🏻 @KodduuPython 🤖
__get__, __set__, и __delete__). Они позволяют вам контролировать доступ к атрибутам. Дескрипторы используются для реализации свойств, методов, статических методов, классовых методов и многого другого.Ниже приведен простой пример, демонстрирующий использование дескрипторов для управления доступом к атрибуту класса:
class TypedProperty:
def __init__(self, name, type, default=None):
self.name = "_" + name
self.type = type
self.default = default if default else type()
def __get__(self, instance, cls):
return getattr(instance, self.name, self.default)
def __set__(self, instance, value):
if not isinstance(value, self.type):
raise TypeError(f"Значение должно быть типа {self.type}")
setattr(instance, self.name, value)
def __delete__(self, instance):
raise AttributeError("Невозможно удалить атрибут")
class Person:
name = TypedProperty("name", str)
age = TypedProperty("age", int)
def __init__(self, name, age):
self.name = name
self.age = age
# Создание экземпляра класса Person
p = Person("Алексей", 34)
# Получение доступа к атрибутам
print(p.name) # Алексей
print(p.age) # 34
# Попытка присвоить некорректный тип данных атрибуту
try:
p.age = "тридцать четыре"
except TypeError as e:
print(e) # Значение должно быть типа <class 'int'>
# Попытка удалить атрибут
try:
del p.age
except AttributeError as e:
print(e) # Невозможно удалить атрибут
В этом примере
TypedProperty является дескриптором, который контролирует, что значения, присваиваемые атрибутам name и age экземпляра класса Person, соответствуют указанным типам. Попытка присвоить значение неправильного типа приведет к возникновению исключения TypeError. Также, в данном примере, удаление атрибута с помощью del запрещено и приведет к возникновению AttributeError.Подпишись 👉🏻 @KodduuPython 🤖
👍2
Метаклассы в Python — это глубокая и мощная особенность, позволяющая изменять поведение классов на этапе их создания. В основе своей метаклассы используются для создания "классов классов", т.е. они определяют, как классы должны быть созданы.
В Python,
Ниже приведен пример, демонстрирующий создание и использование метакласса для изменения атрибутов класса во время его создания:
В этом примере
Подпишись 👉🏻 @KodduuPython 🤖
В Python,
type является встроенным метаклассом, от которого производятся все новые классы. Вы можете использовать type для динамического создания классов, но также можете определить свой собственный метакласс, который наследуется от type, для кастомизации процесса создания класса.Ниже приведен пример, демонстрирующий создание и использование метакласса для изменения атрибутов класса во время его создания:
# Определение метакласса
class UpperAttrMetaclass(type):
# Метод __new__ вызывается в момент создания класса
def __new__(cls, name, bases, dct):
# Преобразование всех атрибутов класса в верхний регистр
uppercase_attr = {}
for name, value in dct.items():
if not name.startswith('__'):
uppercase_attr[name.upper()] = value
else:
uppercase_attr[name] = value
# Создание класса с помощью type.__new__
return type.__new__(cls, name, bases, uppercase_attr)
# Использование метакласса для создания класса
class MyClass(metaclass=UpperAttrMetaclass):
bar = 'bip'
# Создание экземпляра класса
instance = MyClass()
# Попытка доступа к атрибуту в его исходном регистре не сработает
# print(instance.bar) # Это вызовет AttributeError
# Доступ к атрибуту после его преобразования в верхний регистр
print(instance.BAR) # Выведет: bip
# Этот пример демонстрирует, как метакласс изменяет атрибуты класса,
# преобразуя их имена в верхний регистр. Это может быть полезно в различных
# ситуациях, например, для обеспечения соответствия определенным конвенциям
# именования без необходимости вручную изменять каждое имя атрибута.
В этом примере
UpperAttrMetaclass изменяет все атрибуты класса, созданного с его использованием, преобразуя их имена в верхний регистр. Это достигается за счет переопределения метода __new__ метакласса, который вызывается в момент создания класса. Важно отметить, что метаклассы — это продвинутая и мощная особенность Python, использование которой может сделать код сложнее для понимания. Поэтому применять их следует осторожно и с умом.Подпишись 👉🏻 @KodduuPython 🤖
👍2
Понял, давайте попробуем что-то уникальное и полезное в другой области. Рассмотрим библиотеку
### Установка Pendulum
Перед использованием
### Пример использования Pendulum
Давайте посмотрим на простой пример, демонстрирующий некоторые возможности
Этот пример демонстрирует базовые возможности
Подпишись 👉🏻 @KodduuPython 🤖
Pendulum для работы с датами и временем в Python. Pendulum предоставляет удобные инструменты для парсинга, манипуляции и форматирования дат и времени. Она обладает рядом преимуществ перед стандартными библиотеками datetime и pytz, такими как улучшенная поддержка временных зон и более интуитивный API.### Установка Pendulum
Перед использованием
Pendulum убедитесь, что вы установили его через pip:pip install pendulum
### Пример использования Pendulum
Давайте посмотрим на простой пример, демонстрирующий некоторые возможности
Pendulum:import pendulum
# Создание объекта datetime сейчас
now = pendulum.now()
print(f"Сейчас: {now.to_datetime_string()}")
# Парсинг строки в дату/время
dt = pendulum.parse('2024-04-02T15:30:00')
print(f"Парсинг строки в дату/время: {dt.to_datetime_string()}")
# Работа с временными зонами
paris = pendulum.now('Europe/Paris')
print(f"Время в Париже: {paris.to_datetime_string()}")
# Манипуляции с датой/временем
in_two_weeks = now.add(weeks=2)
print(f"Через две недели будет: {in_two_weeks.to_date_string()}")
# Разница между двумя датами
diff = pendulum.now().diff(pendulum.now().subtract(hours=2))
print(f"Разница между датами: {diff.in_hours()} часов")
# Локализация
localized = now.in_locale('ru')
print(f"Месяц по-русски: {localized.format('MMMM')}")
# Форматирование
formatted = now.format('YYYY-MM-DD HH:mm:ss')
print(f"Отформатированная дата: {formatted}")
Этот пример демонстрирует базовые возможности
Pendulum, такие как создание объектов даты/времени, парсинг, работа с временными зонами, манипуляции с датами и временем, разница между датами, локализация и форматирование. Pendulum делает работу с датами и временем в Python значительно проще и интуитивно понятнее.Подпишись 👉🏻 @KodduuPython 🤖
👍4
Одной из новых и интересных библиотек в Python, которая появилась на горизонте и привлекла внимание сообщества, является
Пример простого текстового интерфейса с использованием
Этот код создает простое приложение с использованием
Обратите внимание, что для работы с
Подпишись 👉🏻 @KodduuPython 🤖
Textual. Textual — это библиотека для создания современных терминальных интерфейсов с использованием асинхронного программирования, что делает её особенно подходящей для создания сложных текстовых пользовательских интерфейсов (TUI).Textual использует возможности современных терминалов для создания богатых текстовых интерфейсов с элементами управления, анимацией и даже поддержкой веб-технологий в терминале. Она строится на асинхронных возможностях Python и позволяет создавать реактивные TUI с минимальными затратами времени и усилий.Пример простого текстового интерфейса с использованием
Textual:# Убедитесь, что у вас установлена библиотека Textual
# pip install textual
from textual.app import App
from textual.widgets import Header, Footer, Placeholder
class SimpleApp(App):
async def on_mount(self) -> None:
"""Метод вызывается при монтировании приложения."""
# Добавляем виджеты: заголовок, подвал и заполнитель в тело приложения
await self.view.dock(Header(), edge="top")
await self.view.dock(Footer(), edge="bottom")
await self.view.dock(Placeholder(), edge="left", size=40)
await self.view.dock(Placeholder(), edge="right")
# Запуск приложения
if __name__ == "__main__":
app = SimpleApp()
app.run()
Этот код создает простое приложение с использованием
Textual, которое включает в себя заголовок, подвал и два заполнителя, расположенных слева и справа в терминале. Textual обрабатывает всю асинхронность и обновление интерфейса за вас, позволяя сосредоточиться на логике приложения.Textual является мощным инструментом для создания сложных TUI и может быть особенно полезен для разработки инструментов разработки, системного администрирования и любых приложений, где графический интерфейс пользователя не требуется или не желателен.Обратите внимание, что для работы с
Textual и асинхронным программированием вам потребуется понимание асинхронных функций и сопрограмм в Python.Подпишись 👉🏻 @KodduuPython 🤖
🔥🔥🔥 Апрельская распродажа курсов 🤖🤖🤖
👉 Python в нескучных примерах (50) 🔥
Это курс cook book или книга рецептов, где можно как пройти всю базу по Python, так и попробовать совершенно разные библиотеки от рисования до нейросетей.
👉 Python: самый быстрый курс 🔥
Этот курс очень хорошо структурирован, поэтому он самый короткий среди существующих курсов. В курсе есть вся база для того, чтобы стать разработчиком. После завершения вы сможете создать свой проект на Python. Цель курса - максимально быстро и точно погрузить Вас в прекрасный мир разработки. Выбирайте Python - самый популярный язык на сегодняшний день!
👉 JavaScript: самый быстрый курс 🔥
Перед Вами самый быстрый курс по JavaScript, тут есть все что нужно чтобы начать программировать на JS. Для тех кому некогда, но очень надо выучить JS или подтянуть базу перед собеседованием. Мы отвечаем на все ваши комментарии и вопросы в курсе.
👉 Python в нескучных примерах (50) 🔥
Это курс cook book или книга рецептов, где можно как пройти всю базу по Python, так и попробовать совершенно разные библиотеки от рисования до нейросетей.
👉 Python: самый быстрый курс 🔥
Этот курс очень хорошо структурирован, поэтому он самый короткий среди существующих курсов. В курсе есть вся база для того, чтобы стать разработчиком. После завершения вы сможете создать свой проект на Python. Цель курса - максимально быстро и точно погрузить Вас в прекрасный мир разработки. Выбирайте Python - самый популярный язык на сегодняшний день!
👉 JavaScript: самый быстрый курс 🔥
Перед Вами самый быстрый курс по JavaScript, тут есть все что нужно чтобы начать программировать на JS. Для тех кому некогда, но очень надо выучить JS или подтянуть базу перед собеседованием. Мы отвечаем на все ваши комментарии и вопросы в курсе.
Stepik: online education
Python в нескучных примерах (50)
Для того чтобы научится программировать - нужно много программировать, совершать ошибки, править код, узнавать как можно сделать код лучше, делать код лучше, и продолжать программировать. В этом курсе нет воды, только большое количество примеров на основании…
Давайте рассмотрим использование библиотеки
### Установка
Если у вас еще не установлена библиотека
### Пример использования
В этом примере мы сгенерируем набор фиктивных данных для имитации информации о пользователях.
Этот скрипт демонстрирует базовое использование
Подпишись 👉🏻 @KodduuPython 🤖
faker, которая предназначена для генерации большого количества фиктивных данных для различных целей, таких как тестирование, наполнение баз данных для разработки и т.д. Faker может создавать данные на множестве языков и для различных культур, включая, но не ограничиваясь, имена людей, адреса, телефонные номера, и даже тексты на "рыбном" языке.### Установка
fakerЕсли у вас еще не установлена библиотека
faker, вы можете сделать это с помощью pip:pip install faker
### Пример использования
fakerВ этом примере мы сгенерируем набор фиктивных данных для имитации информации о пользователях.
from faker import Faker
# Создаем объект Faker. Можно указать язык/локаль для генерации данных, например, 'ru_RU' для русскоязычных данных.
fake = Faker()
# Генерируем и выводим фиктивные данные
print("Фиктивные данные пользователя:")
for _ in range(5): # Генерируем данные для 5 пользователей
name = fake.name() # Имя
address = fake.address() # Адрес
email = fake.email() # Электронная почта
job = fake.job() # Профессия
date_of_birth = fake.date_of_birth() # Дата рождения
# Выводим сгенерированные данные
print(f"Имя: {name}, Дата рождения: {date_of_birth}, Профессия: {job}, Email: {email}, Адрес: {address}\n")
# Генерация текста на "рыбном" языке
lorem_text = fake.text()
print("Пример текста на 'рыбном' языке:")
print(lorem_text)
Этот скрипт демонстрирует базовое использование
faker для генерации разнообразных типов данных. Вы можете настроить генерацию данных под конкретные нужды, выбирая из широкого спектра методов, которые faker предоставляет. Например, можно генерировать данные, специфичные для определенной страны или культуры, используя соответствующую локализацию при создании экземпляра Faker.Faker является мощным инструментом для разработчиков и QA инженеров, позволяя создавать реалистичные данные для тестирования и разработки без необходимости раскрывать личную информацию реальных пользователей.Подпишись 👉🏻 @KodduuPython 🤖
Давай создадим простой текстовый анализатор на Python, который будет анализировать текст и выдавать статистику по использованию слов и предложений. Этот скрипт будет читать текстовый файл, считать количество слов, уникальных слов, количество предложений и наиболее часто встречающиеся слова. Вот пример кода:
Этот код будет работать следующим образом:
1. Сначала он просит пользователя ввести путь к файлу, который необходимо анализировать.
2. Считывает текст из файла и передаёт его в функцию
3. Функция анализирует текст, удаляя знаки препинания, подсчитывая слова и предложения, и находя наиболее часто встречающиеся слова.
4. Выводит полученные результаты.
Убедитесь, что у вас есть доступ к файлу с текстом для анализа, чтобы этот код работал корректно.
Подпишись 👉🏻 @KodduuPython 🤖
import re
from collections import Counter
def analyze_text(text):
# Убираем знаки препинания и приводим к нижнему регистру
words = re.findall(r'\b\w+\b', text.lower())
# Подсчёт слов
total_words = len(words)
unique_words = len(set(words))
# Подсчёт предложений
sentences = re.split(r'[.!?]+', text)
total_sentences = len(sentences) - 1 # Вычитаем пустое последнее предложение после разделения
# Часто встречающиеся слова
word_counts = Counter(words)
most_common_words = word_counts.most_common(10)
return {
"total_words": total_words,
"unique_words": unique_words,
"total_sentences": total_sentences,
"most_common_words": most_common_words
}
# Чтение текста из файла
def read_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
def main():
file_path = input("Введите путь к файлу для анализа: ")
text = read_file(file_path)
result = analyze_text(text)
print(f"Общее количество слов: {result['total_words']}")
print(f"Количество уникальных слов: {result['unique_words']}")
print(f"Количество предложений: {result['total_sentences']}")
print("Наиболее часто встречающиеся слова:")
for word, count in result['most_common_words']:
print(f"{word}: {count}")
if __name__ == "__main__":
main()
Этот код будет работать следующим образом:
1. Сначала он просит пользователя ввести путь к файлу, который необходимо анализировать.
2. Считывает текст из файла и передаёт его в функцию
analyze_text.3. Функция анализирует текст, удаляя знаки препинания, подсчитывая слова и предложения, и находя наиболее часто встречающиеся слова.
4. Выводит полученные результаты.
Убедитесь, что у вас есть доступ к файлу с текстом для анализа, чтобы этот код работал корректно.
Подпишись 👉🏻 @KodduuPython 🤖
Распродажа курсов в самом разгаре, даже Elon Mask 🤯 уже купил наш курс 👉 JavaScript: самый быстрый курс 🔥 и учит JavaScript 🤖
Создадим программу, которая генерирует музыкальные пьесы на основе заданной музыкальной гаммы с использованием библиотеки
Для начала установите библиотеку
А вот и сам код:
Эта программа выполняет следующие задачи:
1. Запрашивает у пользователя начальную ноту, тип гаммы, количество нот и имя файла.
2. Создаёт музыкальную гамму на основе заданных параметров.
3. Генерирует последовательность нот на основе этой гаммы.
4. Сохраняет полученную музыкальную композицию в MIDI-файл.
Это интересный способ познакомиться с генерацией музыки на Python!
Подпишись 👉🏻 @KodduuPython 🤖
mido, которая предназначена для работы с MIDI файлами. Программа будет спрашивать у пользователя желаемый размер композиции и используемую гамму, после чего создаст случайную музыкальную последовательность.Для начала установите библиотеку
mido:pip install mido
А вот и сам код:
import random
from mido import MidiFile, MidiTrack, Message, MetaMessage
def create_scale(root_note, scale_type):
# Музыкальные интервалы для разных типов гамм
scale_patterns = {
'major': [2, 2, 1, 2, 2, 2, 1],
'minor': [2, 1, 2, 2, 1, 2, 2],
}
pattern = scale_patterns[scale_type]
scale = [root_note]
current_note = root_note
for step in pattern:
current_note += step
if current_note > 127: # MIDI notes range from 0 to 127
break
scale.append(current_note)
return scale
def generate_music(scale, num_notes, file_name):
mid = MidiFile()
track = MidiTrack()
mid.tracks.append(track)
track.append(MetaMessage('set_tempo', tempo=500000)) # Установить темп
track.append(Message('program_change', program=12)) # Выбор инструмента
for _ in range(num_notes):
note = random.choice(scale)
track.append(Message('note_on', note=note, velocity=64, time=120))
track.append(Message('note_off', note=note, velocity=64, time=120))
mid.save(file_name)
print(f"Музыкальное произведение сохранено в {file_name}")
def main():
root_note = int(input("Введите начальную ноту (MIDI номер): "))
scale_type = input("Введите тип гаммы (major или minor): ")
num_notes = int(input("Количество нот в композиции: "))
file_name = input("Введите имя файла для сохранения композиции: ")
scale = create_scale(root_note, scale_type)
generate_music(scale, num_notes, file_name)
if __name__ == "__main__":
main()
Эта программа выполняет следующие задачи:
1. Запрашивает у пользователя начальную ноту, тип гаммы, количество нот и имя файла.
2. Создаёт музыкальную гамму на основе заданных параметров.
3. Генерирует последовательность нот на основе этой гаммы.
4. Сохраняет полученную музыкальную композицию в MIDI-файл.
Это интересный способ познакомиться с генерацией музыки на Python!
Подпишись 👉🏻 @KodduuPython 🤖
Создадим программу на Python, которая моделирует эволюцию популяции с помощью генетического алгоритма. Генетические алгоритмы — это методы поиска и оптимизации, вдохновлённые процессом естественного отбора. Мы создадим простую симуляцию, в которой "особи" популяции будут стремиться к максимальному значению какой-то численной "приспособленности".
В этой программе:
1. Начальная популяция генерируется случайным образом.
2. Каждое поколение оценивается по приспособленности, определяемой количеством единиц в геноме.
3. Родители выбираются случайно, их дети создаются путем скрещивания, а затем подвергаются мутации.
4. Программа выводит лучшую приспособленность в каждом поколении, что демонстрирует, как улучшается "приспособленность" популяции со временем.
Это пример генетического алгоритма, который можно использовать в различных областях, от науки и инженерии до искусственного интеллекта и игр.
Подпишись 👉🏻 @KodduuPython 🤖
import random
# Параметры
population_size = 10
genome_length = 10
mutation_rate = 0.01
num_generations = 50
# Генерируем начальную популяцию
def generate_initial_population(size, genome_length):
return [[random.randint(0, 1) for _ in range(genome_length)] for _ in range(size)]
# Оценка приспособленности
def fitness(genome):
return sum(genome) # Приспособленность особи пропорциональна количеству единиц в геноме
# Размножение
def reproduce(parent1, parent2):
crossover_point = random.randint(0, len(parent1) - 1)
child = parent1[:crossover_point] + parent2[crossover_point:]
return child
# Мутация
def mutate(genome, mutation_rate):
return [gene if random.random() > mutation_rate else 1 - gene for gene in genome]
# Отбор особей для размножения
def select_pair(population):
return random.sample(population, 2)
def run_simulation():
population = generate_initial_population(population_size, genome_length)
for generation in range(num_generations):
# Оцениваем приспособленность каждой особи
population = sorted(population, key=fitness, reverse=True)
# Выводим лучшую особь
print(f"Поколение {generation}, Лучшая приспособленность: {fitness(population[0])}")
# Создаем новую популяцию
new_population = []
while len(new_population) < population_size:
parent1, parent2 = select_pair(population)
child = reproduce(parent1, parent2)
child = mutate(child, mutation_rate)
new_population.append(child)
population = new_population
if __name__ == "__main__":
run_simulation()
В этой программе:
1. Начальная популяция генерируется случайным образом.
2. Каждое поколение оценивается по приспособленности, определяемой количеством единиц в геноме.
3. Родители выбираются случайно, их дети создаются путем скрещивания, а затем подвергаются мутации.
4. Программа выводит лучшую приспособленность в каждом поколении, что демонстрирует, как улучшается "приспособленность" популяции со временем.
Это пример генетического алгоритма, который можно использовать в различных областях, от науки и инженерии до искусственного интеллекта и игр.
Подпишись 👉🏻 @KodduuPython 🤖
В Python можно демонстрировать разные парадигмы программирования, такие как процедурное программирование, объектно-ориентированное программирование (ООП) и функциональное программирование. Я покажу примеры каждой из этих парадигм:
1. Процедурное программирование — использует последовательность процедурных вызовов для выполнения задач.
2. Объектно-ориентированное программирование (ООП) — организует программу вокруг объектов и данных, а не функций и логики.
3. Функциональное программирование — строит структуру программы с использованием функций, использует концепции неизменяемости и первоклассных функций.
### Пример кода
#### Процедурное программирование
Процедурный пример может быть реализован как простая функция для вычисления факториала числа:
#### Объектно-ориентированное программирование (ООП)
Пример ООП может использовать класс для представления геометрической фигуры, например, круга, с методами для вычисления площади и периметра:
#### Функциональное программирование
Функциональный пример может включать использование функций высшего порядка и лямбда-функций для работы с данными:
Подпишись 👉🏻 @KodduuPython 🤖
1. Процедурное программирование — использует последовательность процедурных вызовов для выполнения задач.
2. Объектно-ориентированное программирование (ООП) — организует программу вокруг объектов и данных, а не функций и логики.
3. Функциональное программирование — строит структуру программы с использованием функций, использует концепции неизменяемости и первоклассных функций.
### Пример кода
#### Процедурное программирование
Процедурный пример может быть реализован как простая функция для вычисления факториала числа:
python
def factorial(n):
result = 1
for i in range(2, n + 1):
result *= i
return result
# factorial(5)
#### Объектно-ориентированное программирование (ООП)
Пример ООП может использовать класс для представления геометрической фигуры, например, круга, с методами для вычисления площади и периметра:
python
class Circle:
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14159 * self.radius ** 2
def perimeter(self):
return 2 * 3.14159 * self.radius
# circle = Circle(5)
# print(circle.area())
# print(circle.perimeter())
#### Функциональное программирование
Функциональный пример может включать использование функций высшего порядка и лямбда-функций для работы с данными:
python
from functools import reduce
def multiply(x, y):
return x * y
numbers = [1, 2, 3, 4, 5]
product = reduce(multiply, numbers)
# product
Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим программу на Python для моделирования цепочек Маркова, которая генерирует случайные тексты на основе обучения на исходном тексте. Это полезно для создания интересных имитаций стилей письма или даже для автоматической генерации текста на основе образца.
В этом примере:
1. Класс MarkovChain инициализирует внутренний словарь для хранения последовательностей слов.
2. Метод
3. Метод
4. Метод
Такая программа может быть интересным инструментом для экспериментов с текстовыми данными, создания художественных текстов или даже для разработки игр и приложений, где нужно динамически генерировать текст.
Подпишись 👉🏻 @KodduuPython 🤖
import random
class MarkovChain:
def __init__(self):
self.lookup_dict = {}
def add_words(self, words):
for i in range(len(words) - 1):
key = words[i]
if key in self.lookup_dict:
self.lookup_dict[key].append(words[i + 1])
else:
self.lookup_dict[key] = [words[i + 1]]
def train(self, text):
words = text.split()
self.add_words(words)
def generate_text(self, length):
word1 = random.choice(list(self.lookup_dict.keys()))
chain = [word1]
for _ in range(length - 1):
word2 = random.choice(self.lookup_dict[word1])
chain.append(word2)
word1 = word2
if word1 not in self.lookup_dict:
break
return ' '.join(chain)
def main():
text = """В своем путешествии по Америке я посетил множество интересных мест и увидел много красивых пейзажей."""
markov = MarkovChain()
markov.train(text)
generated_text = markov.generate_text(20)
print("Сгенерированный текст:", generated_text)
if __name__ == "__main__":
main()
В этом примере:
1. Класс MarkovChain инициализирует внутренний словарь для хранения последовательностей слов.
2. Метод
add_words обрабатывает список слов и добавляет каждое слово в словарь вместе со следующим словом как возможное продолжение.3. Метод
train разбивает исходный текст на слова и передает их в add_words.4. Метод
generate_text создает текст определенной длины, начиная со случайного слова и последовательно выбирая следующее слово из возможных вариантов.Такая программа может быть интересным инструментом для экспериментов с текстовыми данными, создания художественных текстов или даже для разработки игр и приложений, где нужно динамически генерировать текст.
Подпишись 👉🏻 @KodduuPython 🤖
❤2
Давайте создадим простой скрипт на Python для визуализации данных с использованием библиотеки
Перед тем как начать, убедитесь, что у вас установлены необходимые библиотеки:
Вот код скрипта:
В этой программе:
1. Функция
2. Функция
3.
Этот скрипт можно использовать как основу для более сложных анализов данных, добавляя различные типы графиков, настройки или другие элементы анализа.
Подпишись 👉🏻 @KodduuPython 🤖
matplotlib. Этот скрипт будет генерировать случайные данные и визуализировать их в виде графика разброса (scatter plot), который полезен для анализа распределения и корреляций между двумя переменными.Перед тем как начать, убедитесь, что у вас установлены необходимые библиотеки:
pip install matplotlib numpy
Вот код скрипта:
import numpy as np
import matplotlib.pyplot as plt
def generate_data():
# Генерация случайных данных
x = np.random.rand(50) * 100 # 50 случайных значений X от 0 до 100
y = x * 0.5 + np.random.normal(size=50) * 10 # Y зависит от X, добавляем нормальный шум
return x, y
def plot_data(x, y):
plt.figure(figsize=(8, 5))
plt.scatter(x, y, color='blue', alpha=0.5, label='Data points')
plt.title('Random Data Scatter Plot')
plt.xlabel('X values')
plt.ylabel('Y values')
plt.legend()
plt.grid(True)
plt.show()
def main():
x, y = generate_data()
plot_data(x, y)
if __name__ == "__main__":
main()
В этой программе:
1. Функция
generate_data() генерирует случайные данные для двух переменных x и y, где y частично зависит от x с добавлением случайного шума.2. Функция
plot_data() использует matplotlib для создания и отображения графика разброса. Мы настраиваем некоторые аспекты визуализации, такие как цвет точек, подписи осей и сетка.3.
main() вызывает эти функции для выполнения генерации данных и их визуализации.Этот скрипт можно использовать как основу для более сложных анализов данных, добавляя различные типы графиков, настройки или другие элементы анализа.
Подпишись 👉🏻 @KodduuPython 🤖
🆒2
Допустим, мы хотим создать микросервис для обработки запросов по REST API с использованием асинхронной библиотеки
Этот код демонстрирует:
1. Создание базы данных и таблиц с помощью SQLAlchemy.
2. Асинхронное взаимодействие с базой данных через
3. Определение моделей данных с использованием Pydantic для валидации.
4. Обработка API-запросов с помощью FastAPI для создания и чтения данных пользователей.
5. Асинхронный старт и остановка сервиса.
Код написан чисто и модульно, учитывает обработку ошибок и правильно использует асинхронные вызовы для повышения производительности.
Подпишись 👉🏻 @KodduuPython 🤖
FastAPI. Этот микросервис будет принимать запросы на добавление пользователей в базу данных и возвращать информацию о пользователях.from fastapi import FastAPI, HTTPException, status
from pydantic import BaseModel
from typing import List
import databases
import sqlalchemy
from sqlalchemy import create_engine, Column, Integer, String, MetaData
import asyncio
DATABASE_URL = "sqlite:///./test.db"
database = databases.Database(DATABASE_URL)
metadata = MetaData()
users = sqlalchemy.Table(
"users",
metadata,
Column("id", Integer, primary_key=True),
Column("name", String(50)),
Column("email", String(50))
)
engine = create_engine(DATABASE_URL)
metadata.create_all(engine)
class User(BaseModel):
id: int
name: str
email: str
class UserCreate(BaseModel):
name: str
email: str
app = FastAPI()
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
@app.post("/users/", response_model=User, status_code=status.HTTP_201_CREATED)
async def create_user(user: UserCreate):
query = users.insert().values(name=user.name, email=user.email)
last_record_id = await database.execute(query)
return {**user.dict(), "id": last_record_id}
@app.get("/users/", response_model=List[User])
async def read_users():
query = users.select()
result = await database.fetch_all(query)
return result
@app.get("/users/{user_id}", response_model=User)
async def read_user(user_id: int):
query = users.select().where(users.c.id == user_id)
user = await database.fetch_one(query)
if user is None:
raise HTTPException(status_code=404, detail="User not found")
return user
Этот код демонстрирует:
1. Создание базы данных и таблиц с помощью SQLAlchemy.
2. Асинхронное взаимодействие с базой данных через
databases.3. Определение моделей данных с использованием Pydantic для валидации.
4. Обработка API-запросов с помощью FastAPI для создания и чтения данных пользователей.
5. Асинхронный старт и остановка сервиса.
Код написан чисто и модульно, учитывает обработку ошибок и правильно использует асинхронные вызовы для повышения производительности.
Подпишись 👉🏻 @KodduuPython 🤖
Давайте расширим предыдущий пример, добавив к нашему микросервису возможность обновления и удаления данных пользователей. Также мы добавим более сложные элементы, такие как валидация данных и использование средств логирования для отслеживания событий.
Этот код включает следующие дополнительные функции:
1. **Валидация данных**: Используется
2. Логирование: Ведение журнала операций для отслеживания действий пользователей и ошибок.
3. Обновление и удаление данных: API теперь поддерживает запросы PUT и DELETE для обновления и удаления пользователей.
Таким образом, код остается структурированным и читаемым, а также обеспечивает дополнительный контроль над данными и их безопасностью.
Подпишись 👉🏻 @KodduuPython 🤖
import logging
from fastapi import FastAPI, HTTPException, status, Depends
from pydantic import BaseModel, EmailStr, validator
from typing import List, Optional
import databases
import sqlalchemy
from sqlalchemy import create_engine, Column, Integer, String, MetaData
import asyncio
# Setup logger
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
DATABASE_URL = "sqlite:///./test.db"
database = databases.Database(DATABASE_URL)
metadata = MetaData()
users = sqlalchemy.Table(
"users",
metadata,
Column("id", Integer, primary_key=True),
Column("name", String(50)),
Column("email", String(50))
)
engine = create_engine(DATABASE_URL)
metadata.create_all(engine)
class User(BaseModel):
id: int
name: str
email: EmailStr
class UserCreate(BaseModel):
name: str
email: EmailStr
@validator('name')
def validate_name(cls, value):
if not value.isalpha():
raise ValueError('Name must contain only letters')
return value
class UserUpdate(BaseModel):
name: Optional[str] = None
email: Optional[EmailStr] = None
app = FastAPI()
@app.on_event("startup")
async def startup():
await database.connect()
logger.info("Database connection established.")
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
logger.info("Database connection closed.")
@app.post("/users/", response_model=User, status_code=status.HTTP_201_CREATED)
async def create_user(user: UserCreate):
query = users.insert().values(name=user.name, email=user.email)
last_record_id = await database.execute(query)
logger.info(f"User created with ID: {last_record_id}")
return {**user.dict(), "id": last_record_id}
@app.get("/users/", response_model=List[User])
async def read_users():
query = users.select()
result = await database.fetch_all(query)
logger.info("Read all users")
return result
@app.get("/users/{user_id}", response_model=User)
async def read_user(user_id: int):
query = users.select().where(users.c.id == user_id)
user = await database.fetch_one(query)
if user is None:
logger.warning(f"User not found: {user_id}")
raise HTTPException(status_code=404, detail="User not found")
return user
@app.put("/users/{user_id}", response_model=User)
async def update_user(user_id: int, user: UserUpdate):
query = users.update().where(users.c.id == user_id).values(**user.dict(exclude_unset=True))
await database.execute(query)
updated_user = await read_user(user_id)
logger.info(f"User updated with ID: {user_id}")
return updated_user
@app.delete("/users/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
async def delete_user(user_id: int):
query = users.delete().where(users.c.id == user_id)
await database.execute(query)
logger.info(f"User deleted with ID: {user_id}")
return {"message": "User deleted successfully"}
Этот код включает следующие дополнительные функции:
1. **Валидация данных**: Используется
Pydantic для валидации имен и адресов электронной почты пользователей.2. Логирование: Ведение журнала операций для отслеживания действий пользователей и ошибок.
3. Обновление и удаление данных: API теперь поддерживает запросы PUT и DELETE для обновления и удаления пользователей.
Таким образом, код остается структурированным и читаемым, а также обеспечивает дополнительный контроль над данными и их безопасностью.
Подпишись 👉🏻 @KodduuPython 🤖