логотип сайта MyLittleServices.ru

Пифон

Сценарии на Python

Python мне пока не особо нужен. Но порой и с его помощью я делаю что-то полезное. Здесь - результат. Конечно, ничего выдающегося, я ни разу не питонист.

Вот, содержание:


Слувеса

Скрипт берет из словаря в текстовом файле указанное количество слов случайным образом. Выводит результат. Зачем? Ну, например, если в голове нет идей - случайный набор слов может помочь идею найти. Но это не точно.

Перед запуском нужно отредактировать путь к словарю в строке path = "c:\path\dictionary.txt" и вписать нужное количество слов в строке quantity = 5 (по умолчанию выдается 5 штук).

В строке substring = "" можно прописать подстроку, с которой должно начинаться найденное слово; регистр не важен, ожидается что-то типа substring = "лол". Есть и аналогичная переменная для поиска подстроки в конце: substring_e = "". При использовании и начальной, и конечной подстрок - они не исключаются (то бишь, по "аг" в начале и "га" в конце будет найдено слово «ага»). Также есть переменная substring_a для поиска текста в любой части слова. В переменной length можно указать длину слов для выборки (0 или пустота означают любую длину).

Для корректной работы с текстом желательно указать правильную кодировку. В строке charset = "utf-8" прописана умолчальная кодировка UTF-8. Скрипт умеет ловить ошибку, связанную с неправильной кодировкой, и пытается открыть файл кодировке Windows-1251. Ежели файл в совсем уж экзотической кодировке - ее можно указать явным образом; например charset = "koi8_r".

Словарь предполагается с одним словом на строке, разделение произойдет по переносам.

Журнал версий


Версия 7.0

  • Заделана еще одна переменная substring_a для поиска подстроки в любой части слова.
  • Довольно сильно переделана логика работы скрипта.

Версия 6.0

  • Скрипт научился выдавать лишь слова определенной длины (в буквах). Для сего слушит переменная length, куда можно вписать пустую строку или 0 для получения слов любой длины.
  • Добавлена обработка двух ошибок: отсутствия словаря по указанному пути, и пустоты в указанном словаре.

Версия 5.0

  • Добавлена возможность искать также и по подстроке в конце слова.
  • Появилось сравнение длины словаря и желаемого количества, и ежели желаемое количество больше количества слов в словаре - скрипт сообщает об этом.

Версия 4.0

  • Скрипт научился искать слова, которые начинаются не только лишь с одной буквы. Иными словами, теперь пользователь может указывать любую подстроку для поиска в начале слова. Как и прежде, это может быть одна буква, либо же пустая строка для выбора любых слов. Для ввода подстроки введена новая переменная substring (вместо старой letter).
  • Изменена сама логика создания выборки: теперь скрипт сначала создает отфильтрованную выборку, и лишь потом из нее случайным образом выбирает слова. Я не смог придумать, как бы тут смог проявиться вечный цикл, так что убрал предохранитель вовсе.

Версия 3.0

  • Внедрена возможность указать начальную букву для случайно выбираемого слова (букву можно указать в строке letter = ""). Всем порою бывает нужна пачка случайных слов, начинающихся с определенной буквы. Регистр не имеет значения.
  • Так как случайный выбор с вышеуказанным условием теоретически может привести к вечному циклу - встроен предохранитель с лимитом в 10000 попыток.
  • Результат выдается в виде строки с разделением слов запятой.

Версия 2.0

  • Улучшенная версия скрипта ловит ошибку с кодировкой и пробует наиболее вероятную альтернативу автоматически.

Версия 1.1

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

Версия 1.0

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


Рифмоплет

Очень примитивный подборщик рифм из словаря, предоставленного пользователем. Путь к словарю, как водится, нужно отредактировать в теле скрипта (в строке path = "c:\path\dictionary.txt"). Слово-образец также необходимо указать в скрипте, в переменной sample.

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

Если нужно ограничить результат - можно вписать соответствующее число в переменную quantity. А ежели словарь такой большой, что рифм найдено 1000 - работа скрипта будет прервана, ибо даже и 1000 слов вряд ли кто осилит; но если нужно - можно увеличить лимит в переменной limit.

В переменной s4r указывается длина окончания для рифмы. Логика такая: берется указанное в s4r количество символов с конца слова из словаря, и если есть совпадение с тем же количеством букв с конца образца - считается, что рифма найдена. Если образец короче желаемого количества символов в окончании - скрипт предупредит об этом и прекратит работу. Если в словаре найдется слово, длина коего меньше указанного количества символов для рифмы - слово будет дополнено до нужного количества из образца.

В переменной syllables указывается желаемое количество слогов. Ноль означает любое количество.

Журнал версий


Версия 2.2

  • Внедрена возможность заказать рифмы с определенным количеством слогов.

Версия 2.1

  • Добавлено одно мелкое улучшение: теперь скрипт не добавляет в результирующий список сам образец.

Версия 2.0

  • Появилась переменная под говорящим названием s4r, в которую можно вписать количество символов, которые нужно искать в окончании слова для фиксации рифмы.

Версия 1.0

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

Плект

Нужна выборка слов, в коих есть набор букв? Нет ничего проще! Сей скрипт разберет словарь на строки, и выведет лишь те, где найдется весь комплект указанных пользователем букв. Также есть опциональная возможность указать подстроку, с которой должно начинаться искомое слово.

Работает все просто, нужно лишь указать требуемые параметры в переменных внутри скрипта.

Путь к словарю: path = "c:\path\dictionary.txt"
Максимальное количество требуемых слов: quantity = 5
Подстрока, с которой слово должно начинаться (пустая - любые слова): substring = "нах"
И таки набор букв, каждая из коих должна быть в слове (да, это строка, а не список): letters = "епты"
В переменной под именем output2file можно указать True если нужен вывод в файл, а не на экран. В имени файла будет строка "plete" + дата в миллисекундах, а расположен он будет в той же папке, где и скрипт.
В syllables можно указать количество слогов в найденном. Пустышка означает любое количество.

Журнал версий


Версия 2.1

  • Добавлена возможность выуживать из словаря слова не только с нужным комплектом букв, но и с нужным количеством слогов.

Версия 2.0

  • Добавлена возможность выводить результаты в текстовый файл.

Версия 1.0

  • Скрипт выбирает из словаря слова, в которых есть все указанные буковки. Ну, или выводит сообщение, что ничего не нашлось.
  • Есть возможность указать начальную подстроку для требуемого слова. Регистр не имеет значения.

Игрив

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

Но есть простое решение: бекап файла сохранения. Если файл бекапить почаще - можно сделать что-то, отдаленно напоминающее нормальную человеческую систему сохранений. И вот, сей скрипт делает одну нехитрую операцию: копирует указанный пользователем файл с переименованием (оригинальное имя + дата в миллисекундах). Ежели будет нужно загрузить предыдущую сохраненку - нужно лишь найти ее в папке с сохранениями, и переименовать обратно (удалив, конечно, косячное сохранение сначала).

Скрипт нужно отредактировать, функция ожидает массив путей к файлам сохранений в качестве аргумента. Проще говоря, нужно отредактировать строку save_save(["c:\Games\Game\save1.me", "c:\Games\Game\save2.me"]), где вместо c:\Games\Game\saveX.me вписать реальные пути к файлам сохранений, причем путей может быть сколь угодно много, а не только лишь 2. Ну а регулярность запуска решается средствами операционной системы (в Windows есть нечто под названием «Планировщик заданий»).

Журнал версий


Версия 2.0

  • Добавлена возможность указать массив (или как там на питонячем) путей - на случай если в игре несколько ячеек для сохранения, и полезно их бекапить все.

Версия 1.0

  • Скрипт копирует файл по указанному пути, добавляя при этом к имени текущую дату в миллисекундах. Дублирование фактически исключается.
  • Если файла по указанному пути нет - выдается соответствующее сообщение.

Палинднилап

Се скрипт, кой ищет в словаре палиндромы. Вот так просто. Впрочем, можно заказать желаемое количество, а еще выводить результат в текстовый файл, а не на экран.

Путь к словарю: path = "c:\path\dictionary.txt"
Максимальное количество требуемых слов: quantity = 5
Вывод в файл (по умолчанию выключен, для вывода надо указать True): output2file = False

Журнал версий


Версия 1.0

  • Скрипт вскрывает словарь, после чего проверяет каждое слово на палиндромичность. Найденное добавляется к результату пока не будет собрано указанное пользователем количество палиндромов.
  • Можно выводить результат на экран или в файл.

Слопистика

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

При выводе результата в файл будет список вида «слово количество» с разделением табуляцией, так можно легко вставить данные в табличный редактор.

Пути к словарям: path = ["c:\path\work.txt", "c:\path\work_z.txt"]
Минимальное количество букв в слове для попадания в выборку: ml = 4
Вывод в файл (по умолчанию выключен, для вывода надо указать True): output2file = False
Минимальное количество вхождений слова для попадания в выборку (1 и менее выведут все): mr = 1

Журнал версий


Версия 2.0

  • В переменной path отныне ожидается список (типа массив) со ссылками на текстовые файлы для анализа. Сие позволит взять данные из разных файлов, объединить их, и выдать общую статистику по словам.

Версия 1.1

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

Версия 1.0

  • Скрипт открывает текст, и считает вхождения каждого найденного слова.
  • Можно выводить результат на экран или в файл.