Сообщество - Программирование на python

Программирование на python

929 постов 11 940 подписчиков

Популярные теги в сообществе:

8

Программа Английский тренажер слов

Программа для тех, кто хочет подтянуть свой английский язык, в частности изучить/закрепить в памяти побольше слов.
В программе уже есть 500 предустановленных слов, включающих существительные, прилагательные и глаголы. Также, пользователь может составить и загрузить свой тематический словарь, отдельно глаголы, прилагательные и т.д.
Словарь нужно создать в формате txt в следующем виде:


apple:яблоко

car:машина

house:дом

computer:компьютер


Ещё программа умеет озвучивать слова мужским или женским голосом.

Скачать программу можно здесь:
https://drive.google.com/file/d/1JrqsMoYV0BpFZMzufNV_CeJZUid...

Вид программы

Вид программы

Выбор озвучки

Выбор озвучки

Так выглядят правильные ответы.

Так выглядят правильные ответы.

Так выглядят неправильные ответы

Так выглядят неправильные ответы

Перед закрытием, программа покажет ваш прогресс

Перед закрытием, программа покажет ваш прогресс

Показать полностью 5
21

Silero TTS v5 — бесплатный синтез речи с ИИ. Как интегрировать в свой проект

Silero TTS v5 — бесплатный синтез речи с ИИ. Как интегрировать в свой проект

Недавно российская команда разработчиков выпустила пятую версию Silero TTS — библиотеки для преобразования текста в речь. Это не просто обновление, а значительный прорыв в производительности и качестве.

Суть проекта простая: вы пишете текст, система озвучивает его естественным голосом. Но вот что важно — всё это происходит локально, на вашем компьютере. Никакие облачные сервисы, никакие API-ключи, никаких платежей. Ваши данные остаются при вас.

В новой версии модели работают в 3-4 раза быстрее, чем в третьей версии, и в 1,5-2 раза быстрее, чем в четвёртой. Главное улучшение — добавилась автоматическая расстановка ударений в омографах. Это те слова, которые пишутся одинаково, но произносятся по-разному. Теперь система правильно различает "закупать" и "закупить", "дорога" в смысле пути и "дорога" как дорогой.

Для русского языка доступно пять голосов: aidar, baya, kseniya, xenia и eugene. Поддерживаются ещё 10+ языков. Требования к ресурсам минимальные — работает на обычном процессоре без видеокарты. На одном потоке CPU генерирует 37-42 секунды аудио в секунду, на четырех потоках достигает 100-110 секунд.

Система поддерживает SSML для полного управления просодией — вы можете менять скорость, тон, делать паузы, всё это прямо в коде. Проект полностью открыт на GitHub, код можно смотреть и модифицировать под себя.

Идеально подходит для озвучки видео, создания голосовых ботов, приложений для людей с нарушениями зрения, игр. Просто установите пакет и начните использовать. Разработчики создали инструмент, который решает реальные проблемы без лишних сложностей.

GitHub проект - https://colab.research.google.com/github/snakers4/silero-mod...

Полезные контент в телеграмм канале EasyProger - https://t.me/easyprogers

Показать полностью

Программа для удаления временных файлов Windows с помощью DeepSeek

Иногда временные файлы могут занимать не меньше 20 гигабайт свободного места на жёстком диске, многие не знают как почистить папку с временными файлами. Эта утилита поможет без лишних действий очистить папки с временными файлами. Стоит учитывать, что некоторые временные файлы могут использоваться системой или работающими программами, поэтому будут удалены только те, которые не используются.
Скачать можно здесь:
https://drive.google.com/file/d/1PUkHtah9eZN-wS2ES9GsNrBhYvh...

Программа для удаления временных файлов Windows с помощью DeepSeek
6

Рекурсивная генерация кода

Автор: Денис Аветисян


В эволюции систем, управляемых большими языковыми моделями, наблюдается переход от простых циклов наблюдения и действия к более сложным архитектурам, где ReAct оперирует на фиксированном уровне детализации, Agent with Planner жестко разделяет планирование и исполнение, а ReCode объединяет их в единое кодовое представление, позволяя рекурсивно уточнять высокоуровневые планы до примитивных действий в рамках единого динамического цикла, обеспечивая тем самым плавный контроль над гранулярностью принятия решений.

В эпоху, когда LLM-агенты все чаще сталкиваются с неспособностью адаптироваться к сложным и динамичным средам, возникает фундаментальное противоречие: существующие подходы, разделяющие планирование и действие, оказываются хрупкими и неэффективными в долгосрочных задачах, требующих гибкости и предвидения. В своей работе “ReCode: Unify Plan and Action for Universal Granularity Control”, авторы осмеливаются подвергнуть сомнению эту устоявшуюся дихотомию, стремясь преодолеть ограничения, порожденные жесткими границами между абстрактным мышлением и конкретными действиями. Но способна ли новая парадигма, объединяющая планирование и действие в единое целое, действительно высвободить потенциал адаптивного интеллекта, или же попытка универсального контроля над гранулярностью окажется лишь очередной иллюзией в бесконечном поиске совершенной системы?

За пределами линейного мышления: хрупкость традиционных агентов

Современные LLM-агенты, такие как ReAct и CodeAct, опираются на последовательное чередование рассуждений и действий. Этот подход, хотя и эффективный в простых сценариях, становится хрупким и неэффективным в сложных, динамичных средах. Каждый шаг, каждое решение в этих системах – это, по сути, следствие линейного времени, и любые отклонения от предсказуемой траектории приводят к существенным сбоям. Недостаток гибкости в адаптации к непредвиденным обстоятельствам становится особенно заметен при решении задач, требующих глубокого планирования и стратегического предвидения.

Авторы отмечают, что фундаментальная проблема заключается в том, что эти системы оперируют в рамках фиксированной гранулярности. Они не способны динамически переключаться между абстрактными планами и конкретными действиями, что ограничивает их способность решать задачи с различным уровнем сложности и неопределенности. В результате, даже незначительные изменения в окружающей среде могут потребовать полной перестройки всей цепочки рассуждений, что приводит к значительным затратам времени и вычислительных ресурсов.

Система ReCode преобразует инструкции задачи в начальную функцию-заполнитель с помощью метода, основанного на правилах преобразования текста в код, и динамически расширяет ее, последовательно выполняя код каждого узла и заменяя функции-заполнители дочерними узлами, используя чистый контекст, состоящий только из сигнатуры текущей функции и доступных переменных.

По мере увеличения сложности решаемых задач, потребность в вычислительных ресурсах растет экспоненциально. Каждый новый уровень абстракции, каждое дополнительное условие требует все больше и больше вычислительной мощности. Авторы подчеркивают, что масштабирование этих подходов часто приводит к уменьшению отдачи от инвестиций. В конечном итоге, система достигает предела своей способности эффективно обрабатывать информацию. Это, по сути, признак старения системы, ее неспособности адаптироваться к изменяющимся требованиям времени. Каждый сбой – это сигнал времени, указывающий на необходимость рефакторинга, переосмысления фундаментальных принципов работы.

Авторы отмечают, что существующие методы часто страдают от отсутствия внутренней структуры и иерархичности. Цепочки рассуждений и действий выглядят как монолитные блоки, лишенные возможности быть разложенными на более мелкие, управляемые компоненты. Это затрудняет отладку, анализ и повторное использование кода. Рефакторинг – это диалог с прошлым, попытка извлечь уроки из предыдущих ошибок и создать более устойчивую и гибкую систему.

В конечном итоге, авторы утверждают, что существующие подходы, хотя и представляют собой важный шаг вперед в области искусственного интеллекта, имеют фундаментальные ограничения, которые необходимо преодолеть для создания действительно интеллектуальных и адаптивных агентов.

ReCode: гармоничное единство планирования и действия через рекурсивное разложение

В последние годы наблюдается устойчивый интерес к созданию интеллектуальных агентов, способных эффективно взаимодействовать со сложными окружениями. Однако, существующие подходы часто страдают от жесткого разделения процессов планирования и исполнения, что ограничивает их адаптивность и эффективность. Авторы данной работы предлагают принципиально новый подход, основанный на идее рекурсивного разложения задач и унификации представления планов и действий.

В основе ReCode лежит концепция, что планирование – это не отдельный процесс, а скорее высокоуровневое представление действий, осуществляемых на разных уровнях абстракции. Эта идея находит отражение в предложенной архитектуре, где агенты рекурсивно разлагают сложные задачи на более простые подцели, представленные в виде кода. Такой подход позволяет агентам динамически адаптироваться к меняющимся условиям и эффективно исследовать пространство планов.

Авторы подчеркивают, что предложенный подход не просто объединяет процессы планирования и исполнения, но и создает принципиально новую структуру данных – иерархическую структуру, позволяющую агентам эффективно навигировать по сложным задачам, разбивая их на управляемые единицы. Это позволяет агентам не просто выполнять действия, но и понимать, почему они выполняют те или иные действия, что является ключевым шагом на пути к созданию действительно интеллектуальных систем.

Представление как планов, так и действий в виде кода открывает новые возможности для динамической адаптации и эффективного исследования пространства планов. Агент может не просто выбирать между заранее определенными действиями, но и генерировать новые действия на основе текущей ситуации и поставленной цели. Это особенно важно в сложных и непредсказуемых окружениях, где заранее определенные планы часто оказываются неэффективными.

На примере задачи "поместить два будильника в комод" в среде ALFWorld, диаграмма демонстрирует, как высокоуровневый план, состоящий из функций-заполнителей, рекурсивно расширяется по мере необходимости, показывая переход от абстрактного планирования к генерации детализированного, исполняемого кода, где каждая стрелка указывает от вызова функции к сгенерированному ей блоку кода.

Важно отметить, что предложенный подход не является панацеей от всех проблем, связанных с созданием интеллектуальных агентов. Как и любая система, ReCode имеет свои ограничения и требует дальнейших исследований. Однако, авторы демонстрируют, что предложенный подход является перспективным направлением для развития интеллектуальных агентов, способных эффективно взаимодействовать со сложными окружениями. В конечном счете, как и в любой сложной системе, время покажет, насколько устойчивым окажется предложенный подход. Но, как утверждают исследователи, даже если система и стареет, важно, чтобы она делала это достойно.

Сила заполнителей: динамичное и эффективное принятие решений

В архитектуре любого сложного агента ключевым является умение откладывать принятие окончательных решений, позволяя времени и поступающей информации формировать наиболее адекватную стратегию. Исследователи, представляя ReCode, делают ставку именно на эту концепцию, вводя понятие Функции-Заполнителя (Placeholder Function). Эти функции, по сути, представляют собой абстрактные подцели, позволяя агенту отложить детализированное планирование действий до тех пор, пока это не станет абсолютно необходимым. Каждая задержка – это цена понимания, и в данном случае, эта «цена» оправдывается возможностью более гибкого и обоснованного выбора действий.

Традиционные системы часто страдают от жесткости, поскольку заранее определяют все возможные сценарии. ReCode, напротив, использует динамическую декомпозицию задач. Это означает, что процесс планирования не является статичным, а адаптируется к поступающей информации об окружающей среде и текущему пониманию ситуации агентом. Вместо того чтобы заранее прописывать все шаги, агент формирует общую структуру задачи, а затем детализирует ее по мере необходимости. Это напоминает опытного мастера, который не начинает сразу же создавать сложный механизм, а сначала продумывает общую концепцию и только потом приступает к детальной реализации.

Архитектура без истории – хрупка и скоротечна. ReCode стремится к созданию именно исторической, контекстуально-зависимой стратегии. Агент достигает гибридного принятия решений, комбинируя эти абстрактные функции-заполнители с конкретными действиями. Это позволяет ему быть более гибким и устойчивым к непредсказуемым ситуациям. Вместо того чтобы строго следовать заранее определенному плану, агент может адаптироваться к меняющимся условиям, пересматривая свои цели и стратегии по мере необходимости. Такой подход позволяет ему не только эффективно решать поставленные задачи, но и учиться на своем опыте, улучшая свои навыки и способности.

В конечном итоге, ReCode представляет собой не просто новый алгоритм, а новую парадигму в области разработки интеллектуальных агентов. Вместо того чтобы стремиться к созданию идеального плана, агент учится эффективно использовать время и информацию для принятия оптимальных решений. Это позволяет ему быть более адаптивным, устойчивым и эффективным в любой ситуации. И, как и в любом устоявшемся ремесле, умение ждать подходящего момента и использовать доступные ресурсы определяет мастерство и долговечность системы.

Проверка на прочность: производительность ReCode в различных окружениях

Исследование, представленное авторами, демонстрирует существенный прогресс в области создания агентов, способных эффективно функционировать в сложных, динамичных средах. Системы, подобные ReCode, не просто решают текущие задачи; они адаптируются к меняющимся условиям, подобно живым организмам, приспосабливающимся к своей среде обитания. Именно в этой адаптивности кроется ключ к долговечности любой интеллектуальной системы.

В частности, ReCode проявляет впечатляющие результаты в таких требовательных средах, как ALFWorld, WebShop и ScienceWorld. В этих мирах, где каждое действие имеет последствия, а долгосрочное планирование критически важно, способность агента эффективно использовать доступное пространство действий и ориентироваться в задачах с горизонтом планирования, простирающимся на многие шаги вперед, является решающим фактором успеха. Устойчивость системы в этих условиях свидетельствует о глубине её понимания и способности предвидеть последствия своих действий.

Авторы подчеркивают, что ReCode не просто достигает более высоких показателей успеха; он делает это с большей эффективностью, потребляя меньше ресурсов. Это особенно важно, поскольку любой алгоритм, требующий чрезмерных вычислительных затрат, обречён на вымирание. Система, способная оптимизировать свои действия и минимизировать потребление ресурсов, обретает возможность функционировать в течение длительного времени, даже в условиях ограниченных ресурсов.

Эксперименты в среде ScienceWorld с использованием GPT-4o mini показали, что производительность агента напрямую зависит от максимальной глубины рекурсии, при этом оптимальное значение обеспечивает пиковую эффективность.

Эксперименты в среде ScienceWorld с использованием GPT-4o mini показали, что производительность агента напрямую зависит от максимальной глубины рекурсии, при этом оптимальное значение обеспечивает пиковую эффективность.

Дальнейшее обучение с учителем, как продемонстрировано в исследовании, позволяет ещё больше повысить производительность ReCode, адаптируя его к конкретным требованиям каждой задачи и оптимизируя процесс принятия решений. Этот подход, подобно опытному мастеру, оттачивающему своё мастерство, позволяет системе накапливать знания и совершенствовать свои навыки с течением времени. Авторы справедливо отмечают, что эта способность к обучению является ключевым фактором долговечности любой интеллектуальной системы.

В заключение, работа, представленная авторами, демонстрирует не просто создание нового алгоритма, но и закладывает основу для создания интеллектуальных систем, способных адаптироваться к меняющимся условиям, оптимизировать свои действия и учиться на собственном опыте. Эти качества, подобно фундаментальным законам природы, являются ключом к долговечности и устойчивости любой системы, независимо от её сложности.

Исследование, представленное авторами, демонстрирует, что системы, подобные ReCode, не просто решают задачи, но и адаптируются к изменяющимся условиям, пересматривая свой план действий на разных уровнях гранулярности. Это напоминает высказывание Блеза Паскаля: “Все великие вещи требуют времени”. Именно время, как среда, в которой система эволюционирует, позволяет ReCode достичь большей эффективности и гибкости. Как и любая сложная структура, ReCode не избежит старения, но предложенный подход к адаптивному планированию и генерации кода позволяет системе стареть достойно, максимально используя доступные ресурсы и оптимизируя процесс принятия решений. Авторы подчеркивают важность адаптивности, а это, в сущности, и есть ключ к долговечности любой системы.

Что дальше?

Исследователи предлагают схему ReCode, стремясь унифицировать планирование и действие через рекурсивную генерацию кода. Однако, за кажущейся элегантностью этой конструкции скрывается старая проблема: любая абстракция несёт груз прошлого. Попытка вместить все уровни детализации в единую парадигму, как бы искусно это ни было сделано, неизбежно порождает новые узкие места. Вопрос не в том, насколько эффективно ReCode справляется с текущими задачами, а в том, как долго она сохранит свою актуальность в постоянно меняющемся ландшафте задач.

Очевидно, что ключевым направлением дальнейших исследований станет адаптация гранулярности принятия решений не только к сложности задачи, но и к доступным ресурсам – времени, вычислительной мощности, объему данных. Но более фундаментальный вопрос заключается в том, возможно ли вообще создать универсального агента, способного эффективно функционировать в любой среде. Скорее всего, истинная устойчивость будет достигнута не путём создания всеобъемлющей системы, а путём разработки модульных, легко адаптируемых компонентов, способных эволюционировать со временем.

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


Оригинал статьи: denisavetisyan.com

Связаться с автором: linkedin.com/in/avetisyan

Показать полностью 3
12

Программа для настроек сети и интернет с помощью DeepSeek

Попытался собрать в одной программе все настройки сети и интернета.
Программа умеет определять ваш IP и к какой категории он относится Серый/Белый(публичный)
Подключенные устройства в вашей сети
Проверка открытых портов, для того что бы проверить, заработали ваши порты или нет, актуально при открытии своего сервера в играх
Открывать страницу настроек роутера из приложения
Быстрый запуск командной строки и брандмауэра
Замер скорости интернета у меня так и не получилось сделать корректным, показания занижены, а пинг всегда 999, будем думать как исправить или накидайте своих предложений по улучшению работы замера скорости, с учётом ограничения сервиса SpeedTest на территории РФ.

Показать полностью 4
17

Разделение одного столбца на несколько в Excel (3 способа)

При работе с большими наборами данных вы часто сталкиваетесь с ситуацией, когда текстовые значения объединены в одном столбце Excel — например, полные имена, адреса или коды, разделённые запятыми или пробелами. Чтобы сделать данные удобнее для анализа и фильтрации, может потребоваться разделить этот столбец на несколько.

К счастью, Microsoft Excel предоставляет несколько встроенных инструментов для этого, а если вы работаете с большими или повторяющимися объёмами данных, процесс можно автоматизировать с помощью Python. В этом руководстве мы подробно рассмотрим оба подхода — использование функции Text to Columns, формул и сценария на Python с библиотекой Free Spire.XLS.

Содержание

  • Почему стоит разделять данные на несколько столбцов

  • Преобразование текста в отдельные столбцы в Excel

  • Разделение текста с помощью формул Excel

  • Автоматическое разделение с помощью Python

  • Заключение

Почему стоит разделять данные на несколько столбцов

Разделение одного столбца на несколько может значительно повысить удобочитаемость и полезность данных. Примеры применения:

  • Разделение имён: отделить имя от фамилии.

  • Разделение адресов: выделить улицу, город и почтовый индекс.

  • Извлечение кодов или категорий: выделить идентификаторы или названия категорий.

  • Подготовка данных к анализу: упростить фильтрацию и сортировку.

Проще говоря, это превращает неструктурированный текст в аккуратный формат, готовый для отчётов, автоматизации или анализа.

Метод 1. Преобразование текста в отдельные столбцы в Microsoft Excel

Встроенная функция Text to Columns — это самый простой способ разделить текст без формул или кода.

Шаги:

  1. Выделите ячейки или столбец с текстом.

  2. Перейдите в Data > Text to Columns.

  3. В мастере выберите Delimited > Next.

  4. Укажите разделители (например, запятая или пробел) и просмотрите результат.

  5. Нажмите Next.

  6. Укажите место, куда вставить разделённые данные.

  7. Нажмите Finish.

💡 Совет: можно использовать несколько разделителей одновременно (например, запятую и пробел), чтобы обработать данные вроде "John, Smith" или "John Smith".

Метод 2. Использование формул Excel для динамического разделения текста

Если вам нужно решение, которое автоматически обновляется при изменении исходных данных, используйте формулы Excel.

TEXTSPLIT() (доступна в Excel 2021 и Excel 365):

=TEXTSPLIT(A1, ",")

Эта формула разделяет текст в ячейке A1 по запятой и автоматически размещает части в соседних ячейках.

Метод 3. Разделение одного столбца на несколько с помощью Python

При работе с большими наборами данных или при необходимости регулярного разделения столбцов автоматизация с помощью Python экономит время и гарантирует стабильность результата.

Для этого подойдёт библиотека Free Spire.XLS for Python — простой и мощный API для работы с Excel-файлами.

Перед запуском кода установите библиотеку из PyPI:

pip install spire.xls.free

Пример кода

from spire.xls import *

from spire.xls.common import *

# === КОНФИГУРАЦИЯ ===

inputFile = "C:/Users/Administrator/Desktop/input.xlsx"

outputFile = "MultipleColumns.xlsx"

# Укажите разделитель (например, ',' для запятой)

delimiter = ','

# === ЗАГРУЗКА КНИГИ ===

workbook = Workbook()

workbook.LoadFromFile(inputFile)

sheet = workbook.Worksheets[0]

# === РАЗДЕЛЕНИЕ ДАННЫХ ===

for i in range(1, sheet.LastRow + 1):

text = sheet.Range[i, 1].Text.strip()

if text:

splitText = text.split(delimiter)

for j, value in enumerate(splitText, start=2):

sheet.Range[i, j].Text = value.strip()

# === ФОРМАТИРОВАНИЕ И СОХРАНЕНИЕ ===

sheet.SetColumnWidth(2, 14)

sheet.DeleteColumn(1)

workbook.SaveToFile(outputFile, ExcelVersion.Version2013)

workbook.Dispose()

print(f"Данные успешно разделены по разделителю '{delimiter}' и сохранены как '{outputFile}'.")

Как это работает:

  • delimiter определяет символ-разделитель (запятая, пробел, табуляция и т. д.).

  • Скрипт проходит по каждой строке, делит текст в первом столбце и записывает результаты в новые столбцы.

  • После обработки файл сохраняется как MultipleColumns.xlsx.

Этот подход особенно полезен для:

  • больших или повторяющихся наборов данных;

  • автоматизации ETL-задач (Extract, Transform, Load);

  • интеграции Excel-операций в конвейеры данных.

Заключение

Разделение одного столбца на несколько помогает превратить неструктурированные данные в организованный набор, готовый к анализу.

  • Excel предлагает быстрые и понятные методы — Text to Columns и формулы.

  • Python обеспечивает масштабируемость и автоматизацию при работе с большими объёмами данных.

Будь вы аналитиком или разработчиком, овладение этими приёмами поможет поддерживать данные в чистоте и порядке.

Показать полностью 3
1

Калькулятор ИМТ на python

Переходим по ссылке:

https://gist.github.com/Omaroviz/8f55504ecb024d13811d583b5fe...

(Это НЕ установочный файл. Это ссылка на мою страницу в Github, чтобы Вы могли скопировать код. Пикабу автоматически удаляет пробелы в коде, из-за чего код не работает)

Вставляем.

Запускаем.

3

Сюжетная игра на python

1.Переходим по ссылке:

https://gist.github.com/Omaroviz/f6fa4c0f7c4fec63ada694be480...

(Это НЕ установочный файл. Это ссылка на мою страницу в Github, чтобы Вы могли скопировать код. Пикабу автоматически удаляет пробелы в коде, из-за чего код не работает)

Копируем.

Запускаем.

Отличная работа, все прочитано!