Python Community
12.9K subscribers
1.24K photos
35 videos
15 files
731 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Замеряем время выполнения программы

Многие новички используют time или встроенные в ОС приложения, но это не верно. Лучше использовать timeit, поскольку он может более точно рассчитать, сколько занимает выполнение кода, независимо от ОС.

Он довольно прост в использовании. Всего пару строк, и вы можете доказать, что код админа медленнее вашего решения :)

timeit.timeit(code, setup='', timer, number=1_000_000) — запускает код number раз. Но перед этим выполняет строку setup, которая не входит в время, измеряемое таймером. Эта основная функция больше вам не понадобится.

Если вам лень запускать IDE, можете воспользоваться терминалом, вписав python3 -m timeit "print('Hello world')".

А если вам стало интересно, то можете посетить страницу документации.

#миниурок #timeit
3 причины подписаться на аккаунт @selectel 🔥

1. Основы программирования простым языком и без снобизма.
2. Полезные факты о железе, дата-центрах и хостингах.
3. Актуальные новости из IT.

Жми «Подписаться», чтобы получать больше IT-материалов и каждый день узнавать что-то новое!
⚡️ Продолжаем рассматривать модуль itertools

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

zip_longest(a, b, fill_value) — очень удобный итератор. Работает также как и zip, но если длина списков разная, заполняет их fill_value.

takewhile(func, seq) — возвращает значения из seq, пока func не вернёт False.

chain(a, b,...) — соединяет два и более итерируемых объектов в один.

product(a, b...) — декартово произведение итерируемых объектов.

#миниурок #itertools
⚡️ Задачка с собеседования | #Easy

Условие:

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

Примеры:

find_outlier([2, 4, 0, 4, 11, 36]) -> 11
find_outlier([160, 3, 19, 11, -21]) -> 160
find_outlier([-1, 1, 3, 3, 2, -11, -21]) -> 2

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Оператор with

Если вы работаете с файлами или соединениями, то их стоит закрывать после работы. Использовать try/except/finally — не красиво и занимает много места.

Поэтому, разработчики придумали оператор with, выполняющий обязательные функции по окончанию работы с классом. Можете почитать о нём в PEP 343.

Как и у любого оператора, у with есть свои методы. __enter__ вызывается в переданном классе с самого начала, для инициализации. А после, по окончанию работы, вызывается __exit__.

#теория #with
⚡️ Работаем с временем

Ранее я рассказывал о модулях для взаимодействия с временем, но их необходимо устанавливать, а вот datetime — нет.

Хоть с ним и неудобно работать в отличие от его конкурентов, с ним у вас в проекте будет меньше зависимостей. Объектов много, поэтому тут будут самые используемые.

date, time, datetime — классы, предоставляющие доступ к дате, времени или к всему сразу.

Получить их можно с помощью date.today(), datetime.today(), datetime.now() или создав их самостоятельно, передав нужные значения, которые можно почитать в документации.

А также, используя timedelta, мы можем менять время: добавлять, забирать и многое другое.

#миниурок #datetime
⚡️ Отображаем календарь

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

TextCalendar и HTMLCalendar позволяют выводить календарь в текстовом и веб форматах. Вы можете их настроить, используя методы, записанные в документации.

calendar.weekday(year, month, day) — возвращает день недели в определённый день. Возвращает число от 0 до 6, что, соответственно, понедельник - суббота.

calendar.isleap(year) — позволяет узнать, является ли год високосным.

calendar.firstweekday() — сообщает день недели, с которого начинается неделя.

#миниурок #calendar