PYTHON ONLINE
401 subscribers
1 photo
52 links
PYTHON для начинающих
Download Telegram
Создаем калькулятор в одну строчку.

Строка имеет следующий вид: print(eval(input()))

eval(). Необходима для того, чтобы выполнять выражения и функции, при этом возвращая результат.

При этом, eval() не может что-либо присваивать переменным: она только использует их.

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

Зачастую, вывод в одну строку с помощью функции print не подходит под решаемую задачу.

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

Вот список некоторых параметров принимаемых: pprint.pprint:

1. width=80 — ширина экрана печати
2. object — объект форматирования
3. compact=False — компактное форматирование
4. depth=None — уровни вложенности
5. stream=None — форматированный вывод

Также, при необходимости вы сможете переопределить стандартную функцию print на более удобную pprint, написав print = pprint.pprint.
Что такое принцип "KISS"?

По сути, принцип "KISS" имеет следующую расшифровку "Keep It Simple, Stupid", что в переводе звучит как "Придерживайся простоты, идиот".

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

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

Проще говоря, чем проще написан код, тем лучше.
Встроенные функции all и any.

Данные функции позволяют вам узнать, имеются ли определённые значения или же нет.

Таким образом, all возвращает значение True, если все объекты равны True или, по крайней мере, соответствуют заданному условию.

При этом, функция any, в свою очередь, делает то же самое, но возвращает True даже в тех случаях, когда какие-то из объектов не соответствуют условию.

Проще говоря, если даже один из них будет равен True, когда все остальные не равны, то функция any всё-равно вернёт значение True.
Как сортировать словарь по значениям?

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

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

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

Вычисление времени исполнения кода можно осуществить следующим образом: с помощью модуля time запоминаем начальное время, выполняем основной код, узнаём конечное время и просто высчитываем разницу.
Функция zip.

Данная функция позволяет создать итератор, который комбинирует элементы нескольких списков. Что позволяет осуществлять параллельный обход списков в циклах for или, к примеру, выполнять параллельную сортировку.
Библиотека FuzzyWuzzy.

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

Для установки библиотеки прописываем:

install fuzzywuzzy
Библиотека showballstemmer.

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

Многие используют pymorph2 (первая слишком много потребляет ресурсов), но для нахождения большинства результатов достаточно определять основу слова, а не начальную форму.

Как раз библиотека showballstemmer и занимается тем, что определяет основу слова, что, в свою очередь, позволяет сделать поиск более точным. При этом, библиотека потребляет мало ресурсов, а вот результат у нее получается намного лучше.

Для начала нужно импортировать модуль требуемого языка, к примеру, вот модули английского, русского и французского, соответственно: EnglishStemmer, FrenchStemmer, RussianStemmer.
Более продвинутая работа со списками

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

Общая форма формирования среза выглядит следующим образом:


Комбинации параметров помогут вам достичь необходимого результата.
Основные генераторы списков.

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

Генераторы списков сами по себе весьма интересная особенность языка. С их помощью можно максимально коротко и просто сформировать интересующий вас список значений.

Для примера:

>>> data = [i for i in range(0, 10)]
>>> print(data)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

или

>>> data = [i for i in "python"]
>>> print(data)
['p', 'y', 't', 'h', 'o', 'n']
Удаление префиксов и суффиксов

Почему-то многие разработчики посчитали данную фишку в 3.9 не очень интересной и попросту ее выбросили. Хотя и очень даже зря.

Ведь некоторое программисты до сих пор для удаления префиксов и суффиксов на полном серьезе пытаются использовать забагованные .strip и .lsrtip. Это обусловлено тем, что они не до конца понимают, как работают два этих метода.

Но все же в Python 3.9 были добавлены методы для строк .removeprefix и .removesuffix, которые предназначены именно для удаления префиксов и суффиксов в строках.
Используем потоковый ввод.

Можно обрабатывать ввод от пользователя потоком.

В таком случае для завершения надо воспользоваться специальной "командой" на WindowsCtrl + D. А запустить потоковый ввод можно посредством библиотеки sys и метода stdin.

При необходимости получить и тут же обработать строку, пишем: sys.stdin

А вот если надо прочитать весь потоковый ввод, а затем обработать, то sys.stdin.readlines()
Операторы множеств.

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

Помимо обычных методов, у множеств имеется поддержка различных операторов таких как: объединение, пересечение, симметрическая разность, обычная разность и некоторые другие.
Форматируем строку с помощью f-строк.

f-
строки очень похожи на метод .format(), но при этом они являются более емким способ сделать то же самое, всего-лишь добавив к строке букву f в качестве префикса.

Последовательный порядок из метода конкатенации
Модульность метода .format()

Данные достоинства обуславливают все большее количество разработчиков, которые используют именно этот метод. Помимо этого. его попросту очень легко освоить. Поэтому f-строки очень хороши для новичков в программировании.
Контейнер deque.

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

Помимо этого, контейнер deque позволяет обеспечить линейную сложность O(1) для операций добавления и выталкивания по сравнению со стандартным списком, у которого сложность по времени для тех же операций составляет O(n).

А еще deque имеет возможность использовать такие стандартные функции, как sum, min, max и другие.
Функция findall()

При необходимости найти все вхождения, в дело идет функция findall().

Синтаксис: findall(pattern, string, flags=0[optional])

В случае успеха функция возвращает список, в котором в виде строк содержатся все искомые вхождения по порядку. При этом, если вхождений нет, то эта функция возвратит пустой список.
Метод float.hex.

Данный метод позволит вам предоставить число с плавающей запятой в виде шестнадцатеричной строки. Так, для конечных чисел с плавающей запятой данное представление всегда будет включать начальный 0x и конечный p и показатель степени.

Шестнадцатеричные строки обеспечивают точное представление и спецификацию чисел с плавающей запятой.
lambda функции с условием.

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

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

Для наших целей мы будем использовать символы из пакета String. Собираем ascii буквы и цифры. После чего выбираем из них случайные для необходимой длинны пароля.

Будет полезно как для личного использования, так и для личного использования.