Kodduu Python
1.07K subscribers
312 photos
28 videos
188 links
Научись программировать на Python на интересных примерах

Самый быстрый курс https://stepik.org/a/187914
Самый нескучный курс https://stepik.org/a/185238

Во вопросам сотрудничества: @AlexErf
Download Telegram
Управление роботом-пылесосом может быть реализовано на Python с использованием различных библиотек и протоколов, в зависимости от модели и API, предоставляемого производителем. Для демонстрации я предложу упрощенный пример кода, который имитирует базовые функции управления роботом-пылесосом, такие как старт, стоп, и изменение направления движения. Этот пример не взаимодействует с настоящим устройством, но демонстрирует, как мог бы выглядеть интерфейс программного обеспечения для управления роботом.

Предположим, у нас есть класс VacuumCleaner, который представляет собой робота-пылесоса с методами для начала уборки, остановки, поворота налево и направо.

class VacuumCleaner:
def __init__(self):
self.is_running = False
self.direction = "forward"

def start(self):
if not self.is_running:
self.is_running = True
print("Пылесос начал уборку.")
else:
print("Пылесос уже работает.")

def stop(self):
if self.is_running:
self.is_running = False
print("Пылесос остановлен.")
else:
print("Пылесос уже остановлен.")

def turn_left(self):
if self.is_running:
self.direction = "left"
print("Пылесос повернул налево.")
else:
print("Пылесос не может повернуть, он остановлен.")

def turn_right(self):
if self.is_running:
self.direction = "right"
print("Пылесос повернул направо.")
else:
print("Пылесос не может повернуть, он остановлен.")

# Создание экземпляра робота-пылесоса
vacuum = VacuumCleaner()

# Управление роботом-пылесосом
vacuum.start() # Запуск
vacuum.turn_left() # Поворот налево
vacuum.turn_right() # Поворот направо
vacuum.stop() # Остановка


Этот код создает базовый интерфейс для управления роботом-пылесосом, позволяя ему начинать и заканчивать уборку, а также менять направление на лево или право. В реальных приложениях управление роботом-пылесосом будет включать в себя коммуникацию с API устройства, отправку команд через Wi-Fi или Bluetooth и обработку состояний и ошибок устройства.

Для работы с конкретным роботом-пылесосом вам потребуется ознакомиться с его API или SDK, предоставляемым производителем, и возможно, использовать специальные библиотеки для взаимодействия с устройством. Некоторые производители, такие как iRobot (создатели Roomba), предоставляют официальные библиотеки и документацию для разработчиков, желающих создавать приложения или интеграции с их продуктами.

Подпишись 👉🏻 @KodduuPython 🤖
Вот простой и забавный пример кода на Python, который демонстрирует "пасхалку" (easter egg). Этот код использует знаменитую пасхалку из Python, связанную с импортом модуля this, который выводит "The Zen of Python" — коллекцию афоризмов, которые отражают философию программирования на Python.

python
import this


Когда вы выполните этот код, он напечатает "The Zen of Python" Тима Петерса, который содержит принципы, лежащие в основе дизайна языка Python.

Если вы ищете что-то более интерактивное и необычное, вот еще один пример "пасхалки", связанный с модулем antigravity, который открывает в вашем веб-браузере комикс xkcd, посвященный Python.

python
import antigravity


Этот код автоматически откроет страницу комикса xkcd, которая шутит о простоте запуска веб-проектов на Python.

И наконец, для любителей математики и загадок, Python предлагает забавную пасхалку через библиотеку __hello__, которая является отсылкой к традиционной программе "Hello, World!":

python
import __hello__


Хотя это и не "пасхалка" в полном смысле слова, она демонстрирует любовь разработчиков Python к играм со словами и традициям программирования.

Помните, что эти "пасхалки" предназначены скорее для развлечения и демонстрации культурных и исторических аспектов Python, чем для использования в производственном коде.

Подпишись 👉🏻 @KodduuPython 🤖
Использование редких библиотек в Python может открыть новые возможности и предложить интересные решения для различных задач. Давайте рассмотрим пример с использованием библиотеки textblob для обработки естественного языка (NLP).

### Установка библиотек

Перед тем как начать, убедитесь, что у вас установлены эти библиотеки. Вы можете установить их, используя pip:

pip install textblob


textblob предоставляет простой API для выполнения различных задач NLP, таких как определение тональности текста, коррекция орфографии, перевод и многое другое.

from textblob import TextBlob

# Пример текста
text = "Textblob is amayzing for quickly prototyping NLP applications. It's so cool!"

# Создание объекта TextBlob
blob = TextBlob(text)

# Проверка орфографии (автоматическое исправление ошибок)
corrected_text = blob.correct()

print("Исправленный текст:")
print(corrected_text)

# Определение тональности текста
sentiment = blob.sentiment

print("\nАнализ тональности:")
print(f"Полярность: {sentiment.polarity}, Субъективность: {sentiment.subjectivity}")

# Перевод текста на русский язык
translated_text = blob.translate(to='ru')

print("\nПереведенный текст:")
print(translated_text)


Эти примеры демонстрируют базовое использование textblob для обработки естественного языка.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим пример с использованием`tinydb` для работы с легковесной документо-ориентированной базой данных.

### Установка библиотек

Перед тем как начать, убедитесь, что у вас установлены эти библиотеки. Вы можете установить их, используя pip:

sh
pip install tinydb


tinydb — это легковесная документо-ориентированная база данных, идеально подходящая для маленьких проектов, прототипирования или для случаев, когда не требуется полноценная СУБД.

python
from tinydb import TinyDB, Query

# Создание / открытие базы данных
db = TinyDB('db.json')

# Вставка документа
db.insert({'type': 'apple', 'count': 7})
db.insert({'type': 'banana', 'count': 3})

# Поиск документов
Fruit = Query()
results = db.search(Fruit.type == 'apple')

print("Результаты поиска:")
for result in results:
print(result)

# Обновление документа
db.update({'count': 10}, Fruit.type == 'apple')

# Проверка обновления
updated_results = db.search(Fruit.type == 'apple')
print("\nОбновленные результаты:")
for result in updated_results:
print(result)

# Удаление документа
db.remove(Fruit.type == 'banana')

# Проверка содержимого базы данных
print("\nСодержимое базы данных после удаления:")
print(db.all())


Эти примеры демонстрируют базовое использование tinydb для работы с легковесной базой данных.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим пример с использованием библиотеки rich, которая предназначена для создания красивых и стилизованных консольных интерфейсов. Rich может значительно улучшить визуальное представление вывода вашей программы, добавив цвета, стили, таблицы, прогресс-бары и многое другое.

### Установка rich

Если у вас еще не установлена библиотека rich, вы можете сделать это с помощью pip:

pip install rich


### Пример использования rich

В этом примере мы создадим простое приложение, которое демонстрирует возможности rich по оформлению текста, выводу таблиц и прогресс-барам.

from rich.console import Console
from rich.table import Table
from rich.progress import track
import time

# Создаем объект Console для управления выводом в консоль
console = Console()

# Выводим стилизованный текст
console.print("Пример использования [bold magenta]Rich[/bold magenta]!", style="bold green")

# Создаем таблицу
table = Table(show_header=True, header_style="bold magenta")
table.add_column("ID", style="dim", width=6)
table.add_column("Описание")
table.add_column("Статус", justify="right")

# Добавляем строки в таблицу
table.add_row("1", "Изучаем Rich", "[green]Активно[/green]")
table.add_row("2", "Создаем таблицу", "[cyan]В процессе[/cyan]")
table.add_row("3", "Используем прогресс-бар", "[red]Ожидание[/red]")

# Выводим таблицу
console.print(table)

# Демонстрация прогресс-бара
for _ in track(range(10), description="Прогресс..."):
time.sleep(0.5) # Имитация загрузки

console.print("[bold green]Демонстрация завершена![/bold green]")


Этот код демонстрирует базовые возможности rich: красивый и гибкий вывод текста с использованием различных стилей, создание и отображение таблиц с заголовками и столбцами различного оформления, а также использование прогресс-бара для отображения процесса выполнения задач. Rich делает вывод в консоль не только информативным, но и визуально привлекательным, что может быть особенно полезно при создании CLI-инструментов и скриптов для повышения их удобства использования.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим пример с использованием библиотеки howdoi, которая представляет собой инструмент командной строки, позволяющий получать мгновенные ответы на вопросы по программированию прямо из консоли. Это может быть особенно полезно, когда вам нужен быстрый ответ на вопрос по коду, не отвлекаясь на поиск в интернете.

### Установка howdoi

Перед использованием убедитесь, что у вас установлена библиотека howdoi:

pip install howdoi

### Использование howdoi в Python скрипте

Хотя howdoi изначально предназначен для использования в командной строке, мы можем интегрировать его в Python скрипт, используя функцию howdoi.howdoi.

from howdoi import howdoi

# Формируем запрос
query = "reverse a list in python"

# Формируем параметры запроса, добавляя необходимые ключи
params = {
'query': 'reverse a list in python',
'all': False,
'num_answers': 1,
'pos': 1,
'search_engine': 'google', # Явно указываем поисковую систему
'explain': False # Предполагаемое значение для 'explain'
}

# Получаем ответ
answer = howdoi.howdoi(params)

print(f"Вопрос: Как перевернуть список в Python?")
print("Ответ:")
print(answer)

Этот скрипт отправляет запрос "Как перевернуть список в Python?" и выводит полученный ответ. howdoi автоматически ищет ответы на вопросы по программированию, используя различные источники в интернете, и предоставляет краткий и точный ответ.

### Примечание

Использование howdoi в качестве библиотеки может быть не таким же прямолинейным, как использование его через командную строку, и может потребовать дополнительной настройки или обновления, в зависимости от версии библиотеки и её текущего API. Также стоит учитывать, что качество и точность ответов зависят от источников, к которым обращается howdoi, и могут варьироваться.

Этот пример демонстрирует, как можно интегрировать внешние инструменты и API в свои Python скрипты для расширения их функциональности, делая процесс разработки более эффективным и менее затратным по времени.

Подпишись 👉🏻 @KodduuPython 🤖
Новый самый быстрый курс по JavaScript 🤖 Перед Вами самый быстрый курс по JavaScript, тут есть все что нужно чтобы начать программировать на JS. Для тех кому некогда, но очень надо выучить JS или подтянуть базу перед собеседованием. Мы отвечаем на все ваши комментарии и вопросы в курсе 👨‍💻👩‍💻
Код для обнаружения космический лучей:

# Бесконечный цикл, который "обнаруживает" космические лучи
while True:
if False:
print("Космический луч обнаружен!")
else:
print("Обнаружение космических лучей...")

# Добавим задержку, чтобы не заспамить консоль
import time
time.sleep(1)


Этот код будет бесконечно печатать "Обнаружение космических лучей...", пока не обнаружит космический луч! С днем космонавтики всех 🧑‍🚀

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим два интересных кейса из астрономии и космонавтики, которые можно реализовать на Python:

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 — это объекты, которые реализуют методы протокола дескрипторов (__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, 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 для работы с датами и временем в 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, которая появилась на горизонте и привлекла внимание сообщества, является 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 или подтянуть базу перед собеседованием. Мы отвечаем на все ваши комментарии и вопросы в курсе.
Давайте рассмотрим использование библиотеки 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, который будет анализировать текст и выдавать статистику по использованию слов и предложений. Этот скрипт будет читать текстовый файл, считать количество слов, уникальных слов, количество предложений и наиболее часто встречающиеся слова. Вот пример кода:

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 🤖