Главная страница  Карта сайта  Печать  Написать письмо  RSS
Войти
Персональный сайт
Стеллецкого Владимира
Обновлено: 12.03.2022 г.

Python

В 2009 году я решил изучить ещё какой-нибудь язык программирования. После анализа текущего выбора языков программирования я остановил свой выбор на Python или Ruby. После ещё некоторых колебаний склонился всё же к Python. Может быть когда-нибудь и до Ruby руки дойдут.

Если обнаружите ошибки или сможете предложить более "правильное" решение размещённых здесь задач, или же какую-то задачку для решения - пишите, буду очень признателен.

Ссылки (18.12.2019) #

«   ‹   1   2   3   следующая ›   последняя »

Telegram-бот (12.03.2022) #

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

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

Комментарии

Мой комментарий (23.04.2022)
Разработка бота потихоньку продолжается. Познакомился с основными возможностями Telegram-ботов и пока реализовал с помощью своего бота удобный интерфейс для решения трёх прикладных задач по работе.

Как очень часто бывает, помимо практической пользы от реализованной программы и удовольствия от её написания, удалось узнать/попробовать что-то новое.
В этот раз помимо изучения самой библиотеки для написания бота, удалось поближе познакомиться с классами и декораторами в Python.

Небольшие программки (19.12.2021) #

За последние несколько недель удалось вместе с Андреем написать несколько небольших программок на Python:

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

И хотя все эти программы были довольно таки не сложные, всё равно удалось попрактиковаться в программировании, с пользой провести время, а также закрепить и приобрести новые знания (Андрею) и "размять" мозги.

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

Комментарии

swi, www (12.01.2022)
"нормализатор данных" было бы удобно написать на рефале... Но оформить в виде модуля... Хотя кому теперь этот рефал нужен?! :(
Как раз сегодня сделал возможность "развернуть" блок с кодом для решения описанных выше задач (так что можно посмотреть, что у нас в итоге получилось).
Посмотрим насколько такое "разворачивание" будет востребовано и удобно.
 
Касательно рефала - возможно, на нём действительно было бы быстрее и проще написать решение данной задачи (не знаю данный язык программирования), но пока Python подкупает меня своей универсальностью - и в базу данных можно "залезть", и данные обработать и никаких отдельных "конвейеров" городить не надо - запустил один файл и готово. :)
Мой комментарий (13.01.2022)
Если есть время и желание предлагаю реализовать аналогичный алгоритм на РеФАле и разместить решение здесь.
Думаю, будет интересно посмотреть/посравнивать решения одной и той же задачи на столь разных языках программирования.
 
PS Готов предоставить ТЗ и примеры для тестирования.

Проблемы с кодировкой (14.10.2021) #

При получении данных с MSSQL-сервера с помощью pymssql столкнулся с тем, что данные поступают в нечитаемом виде:

15 Äðîçäîâ False 165
16 Çàéöåâà False 95

Сначала попробовал исправить кодировку полученных данных в python-скрипте - к сожалению, не получилось.

Потом была идея исправить это указав кодировку при подключении к MSSQL, например:
Connection = pymssql.connect(server, user, password, database, charset='WINDOWS-1251')

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

В итоге, в Интернете был найдено следующее решение - попробовать привести на MSSQL тип колонки к NVARCHAR.
После этого данные стали поступать в нормальном виде.

Python'о-выходные (05.04.2021) #

На выходных удалось немного попрограммировать на Python - разбирали с ребёнком решения задач. В итоге с удовольствием освежил и закрепил свои знания и навыки, а также удалось узнать кое что новое: впервые на практике применил несложный, но новый для меня приём, вместе разобрали решения нового для меня круга задач (работа с изображениями, цветовые схемы BGR и HSV(B), распознавание информации с изображений), поверхностно познакомились с возможностями пакетов/библиотек NumPy и cv2.

В очередной раз получил массу удовольствия от программирования на Python.

Особенности Python для новичков (05.12.2020) #

Полезная статья для тех, кто только изучает Python (правда, для некоторых рассматриваемых примеров определённый уровень знаний всё же уже нужен), особенно, если делает это самостоятельно. В ней рассмотрены частые примеры корректного решения отдельных задач, написанные без учёта (и зачастую понимания) особенностей и тонкостей Python.

Так часто бывает, если новый язык изучаешь самостоятельно, опираясь только на общую документацию и Интернет, вместо того, чтобы прочитать самоучитель или просто описание языка. Сам поначалу писал Delphi-код на синтаксисе Python.

41 вопрос о работе со строками в Python (26.11.2020) #

Неплохая статья с разбором тонкостей при работе со строками в Python. Конечно, в основном рассматриваются общеизвестные моменты, но есть и малоизвестные нюансы.

Для себя отмечу f-строки (появились в Python 3.6) и методы maketrans() и translate(). Остальное было известно.

Python 3.9 (29.06.2020) #

В преддверие выхода новой версии языка программирования Python наткнулся на две статьи с анонсами будущих нововведений:

Первая статья более подробная, вторая покороче (в ней описаны только основные нововведения). Кратко опишу их тут:

  • Операторы объединения словарей: оператор слияния (c = a | b) и оператор обновления (a |= b).
  • Строковые методы для удаления префикса и суффикса (removeprefix() и removesuffix()).
  • Новый парсер и подсказки по типам (type hinting).

PS Это первая версия, которая выйдет после того, как создатель языка Python Гвидо Ван Россум покинул пост "великодушного пожизненного диктатора" (BDFL) проекта.

Интересная задачка (22.03.2020) #

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

Бригада скорой помощи выехала по вызову в один из отделенных районов. К сожалению, когда диспетчер получил вызов, он успел записать только адрес дома и номер квартиры K1, а затем связь прервалась. Однако он вспомнил, что по этому же адресу дома некоторое время назад скорая помощь выезжала в квартиру K2, которая расположена в подъезда P2 на этаже N2. Известно, что в доме M этажей и количество квартир на каждой лестничной площадке одинаково. Напишите программу, которая вычисляет номер подъезда P1 и номер этажа N1 квартиры K1.

Входные данные:
Во входном файле записаны пять положительных целых чисел K1, M, K2, P2, N2. Все числа не превосходят 1000.

Выходные данные:
Выведите два числа P1 и N1. Если входные данные не позволяют однозначно определить P1 или N1, вместо соответствующего числа напечатайте 0 (ноль). Если входные данные противоречивы, напечатайте два числа –1 (минус один).

Примеры:

Ввод
89
20
41
1
11
Вывод
2 3

Ввод
11
1
1
1
1
Вывод
0 1

Своё решение планирую опубликовать в ближайшее время.

Новые фичи Python 3.8 и самое время перейти с Python 2 (25.01.2020) #

Наткнулся на статью с таким заголовком и решил ссылку на неё себе сохранить, тем более, что до сих пор использую Python 2.

Конечно, это не все нововведения третьей версии, так что Вас ждет ещё не мало открытий.

Табель сотрудников (28.10.2019) #

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

В итоге остановился на web-страничке (HTML с CSS и JS) и скрипте на Python, который её формирует на основании информации из базы данных (тут, конечно же, не обошлось без SQL).

Табель сотрудников

На этой несложной задачке с удовольствием освежил в памяти знания по всем четырём технологиям.

Также хотел бы отметить два удобных параметра запуска Python:

  • -i - после работы программы/скрипта войти в диалоговый режим. Это бывает удобно при отладке и поиске ошибок в скриптах (или при отказах).
  • -3 - выводит замечания к коду (вполне, возможно, работоспособному), который не сможет быть запущен в Python 3.x. Актуально, если приложение написано на второй версии, но Вы задумываетесь о переходе на третью версию.

Комментарии

Мой комментарий (29.06.2020)
Почти через год использования данного "решения" сделал ещё одну небольшую доработку - улучшил отображение этой странички на мобильных устройствах (постарался максимально сократить ширину таблицы).
Теперь, в случае открытия табеля с устройства с небольшим разрешением экрана, в таблице автоматически скрываются: год в дате, а также инициалы сотрудников (это позволило выиграть чуть больше четверти от начальной ширины таблицы и, соответственно, улучшить отображение на маленьких экранах).
Сделать это было не так сложно, так как изначально вёрстка страницы была несложная и приближенная к стандартам. С технической точки зрения на этапе формирования страницы выделил потенциально скрываемый текст (назначением отдельного класса), а потом добавил адаптивный стиль:
@media screen and (max-width: 1150px) {
    .io {
        display: none;
    }
    .year {
        display: none;
    }
}

«   ‹   1   2   3   следующая ›   последняя »

  Вы 18 070 посетитель этой странички
с 05 марта 2009 года
© http://svv-home.ru
О сайте