TGViewer
Channel Public Channel
Python академия

Python академия

@pythonofff

Учи Python быстро и легко.

Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам.

✔ Подходит для прокачки навыков кодирования.

По всем вопросам @evgenycarter
Subscribers
7.13K
Photos
2.6K
Videos
4
Links
462

Showing posts older than #2477 · Back to latest

Older Posts 20 shown
Post #2476 941
Распаковка последовательности при неизвестном числе элементов.

Для этого в Python есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции

Подписывайтесь на канал 👉@pythonofff
  • 👍 5
Post #2474 926
Как удалить элемент из словаря в python по ключу?

Вы можете использовать del <Список>["<Ключ>"]

costs = {
"The Mist" : 13,
"Mile 81" : 12,
"11/22/63" : 17,
"The Green Mile" : 14,
"Fairy Tale" : 10,
"End of Watch" : 18
}

del costs["Mile 81"]

print(costs)

# Вывод : {'The Mist': 13, '11/22/63': 17, 'The Green Mile': 14, 'Fairy Tale': 10, 'End of Watch': 18}

Подписывайтесь на канал 👉@pythonofff
Post #2473 895
Mодуль cmath

Функции в математическом модуле стандартной библиотеки Python обрабатывают числа с плавающей запятой. Для комплексных чисел библиотека Python содержит модуль cmath.

📌Функция polar():
Эта функция возвращает полярное представление декартовой записи комплексного числа. Возвращаемое значение - это кортеж, состоящий из модуля и фазы.

📌Функция phase():
Эта функция возвращает угол против часовой стрелки между осью x и сегментом, соединяющим точку с исходной точкой. Угол представлен в радианах и находится между π и -π.

📌Функция rect():
Эта функция возвращает декартово представление комплексного числа, представленного в полярной форме, то есть по модулю и фазе.

📌Функция sin():
Эта функция возвращает тригонометрическое соотношение синуса фазового угла, представленного в радианах.

Подписывайтесь на канал 👉@pythonofff
  • 👍 1
Post #2471 955
Функция sum()

Как бы вы решили задачу получения суммы элементов списка без обхода элементов в цикле?

Это можно сделать с помощью стандартной функции sum().

Cинтакс функции sum():
start)

Параметры sum():
iterable - итерируемые типы (list ,dict, tuple, и.т.д.)
start - (необязательно) значение этого параметра прибавляется к уже готовой сумме элементов iterable. По умолчанию значение этого параметра 0.

Возвращаемое значение из sum():
sum() возвращает сумму start и элементов всех последующих элементов.

Подписывайтесь на канал 👉@pythonofff
  • ❤ 2
  • 👍 1
Post #2470 931
Важные методы в Python, которые должен знать каждый python разработчик.

abs() - возвращает модуль переданного параметра.

all() - функция возвращает значение True, если все элементы в итерируемом объекте - истинны. В противном случае, она возвращает значение False.

any() - функция возвращает True, если какой-либо (любой) элемент в итерируемом объекте является истинным True. В противном случае, any() возвращает значение False.

ascii() - возвращает строку, содержащую печатное представление объекта, и экранирует символы, отличные от ASCII, в строке с помощью экранирования \ x, \ u или \ U.

bin() - функция преобразует целое число в двоичную строку с префиксом 0b.

Подписывайтесь на канал 👉@pythonofff
  • ❤ 2
  • 👍 2
Post #2468 1.03K
Библиотека Flask

Если вы работали с запросами, к примеру на библиотеке request, то знаете, что существуют несколько видов запросов.

К примеру, в браузере при получении страницы это метод GET. Когда вы отправляете пароль и логин серверу (или другие данные) - POST. Кроме этого существуют запросы сугубо для программ, а не для браузера.

Какие есть методы?
Основных 4:
GET — получение ресурса
POST — отправить данные
PUT — обновление данных
DELETE — удаление данных

Flask позволяет обрабатывать данные запросы посредством добавления аргумента methods в декоратор.

Подписывайтесь на канал 👉@pythonofff
  • ❤ 4
Post #2467 977
Как удалить дубликаты из списка в python?

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 5
Post #2465 977
Регулярные выражения

Вы уже поняли, что при работе со строками модель re просто необходим. Отлаживать их очень тяжело, но все же необходимо.

В python для этого есть встроенная возможность, вы можете указать как флаг re.DEBUG. По названию видно, что данный flag помогает дебажить регулярные выражения.

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 2
  • 🔥 1
Post #2464 1.06K
Оператор морж в Python 3.8

Оператор морж (:=) в Python 3.8 позволяет присваивать значения переменным внутри выражений. Это означает, что вы можете присвоить значение переменной и использовать её в том же выражении. Например, вместо того, чтобы записывать значение в переменную, а затем использовать её, вы можете сделать это одновременно.

Пример использования оператора морж:

x = 5
if (n := len(str(x))) > 3:
print(f"Number {x} has more than 3 digits ({n})")


В этом примере переменной n присваивается значение длины строки x, и это значение сразу же используется в условии if. Таким образом, оператор морж позволяет делать код более компактным и читаемым.

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

Пример использования оператора морж в цикле:

while (n := random.randint(1, 10)) != 5:
print(n)


В этом примере переменной n присваивается случайное значение от 1 до 10, и цикл продолжается до тех пор, пока значение переменной не станет равным 5. Таким образом, оператор морж позволяет уменьшить количество строк кода и улучшить его читаемость.

Подписывайтесь на канал 👉@pythonofff
  • 👍 6
  • 🔥 3
Post #2463 890
Регулярные выражения

Метод sub позволяет заменить в строке по шаблону на нужный нам текст.

repl, string, max=0)

pattern - шаблон
repl - на что заменяем
string - строка по которой ищем
max - сколько раз заменяем

Соответственно, этот метод возвращает нужную нам строку.

Подписывайтесь на канал 👉@pythonofff
  • ❤ 5
  • 👍 1
Post #2461 941
hex, oct, bin

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

Из 10-ричной:
hex - перевод в 16-ричную систему
oct - перевод в 8-ричную систему
bin - перевод в 2-ичную систему

А из любой системы счисления можно получить число максимально простым способом:
int(number, base)

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
Post #2460 1.04K
Замена текста с re.sub()

Метод re.sub() в модуле re является функцией, которая позволяет заменять фрагменты строки в соответствии с определенным шаблоном. Этот метод очень полезен при работе с регулярными выражениями в Python, так как он позволяет легко заменять или модифицировать текст в строке.

Для использования метода re.sub(), необходимо передать ему три аргумента: шаблон (регулярное выражение), строку замены и строку, в которой нужно произвести замену. При этом, если шаблон не найден в строке, то замена не будет выполнена.

Пример использования метода re.sub():


import re

text = "Hello, World!"
new_text = re.sub(r"Hello", "Hi", text)
print(new_text) # Output: Hi, World!


В данном примере мы импортируем модуль re, создаем переменную text с исходным текстом «Hello, World!» и заменяем слово «Hello» на «Hi» с помощью метода re.sub(). Результатом будет строка «Hi, World!».

Подписывайтесь на канал 👉@pythonofff
  • 👍 4
Post #2459 898
infinity

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

float('infinity') или float('inf') для получения максимально возможного числа

float('-infinity') или float('-inf') для получения минимально возможного числа.

Не работает с int, требуется использовать именно float.

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
  • 😁 1
Post #2457 1.01K
Избегайте пустого списка

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

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

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


def my_function(my_list=None):
if my_list is None:
my_list = []
my_list.append("element")
print(my_list)

my_function() # ["element"]
my_function() # ["element"] (не изменяет значение по умолчанию)


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

Подписывайтесь на канал 👉@pythonofff
  • 👍 4
  • 👏 3
  • ❤ 1
Post #2456 893
Библиотека Progressbar

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 5
  • 🔥 1
Post #2455 980
Библиотека schedule

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

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

Библиотеку необходимо установить:

install schedule

В примере используется seconds, но можно использовать minutes, hour, day.at("8:00"), monday, minute.at(":17"). Если добавлять at, то указываем во сколько именно произойдет событие.

Подписывайтесь на канал 👉@pythonofff
  • 👍 4
Post #2453 958
Библиотека JmesPath

Как вы уже заметили работать с json файлами в python очень удобно, ведь они отлично конвертируется в словарь. Также мы разобрали полезную библиотеку json, поэтому еще раз говорить о ней не будем.

Но вот нам надо получить данные из файла. А формат json, как правило имеет множество вложений. Искать что-то нужное можно, но не всегда это удобно и красиво (а дзен Python говорит, что красота имеет значение)

JmesPath облегчает работу в несколько раз. Вместо file['a']['b']['c'] можно написать jmespath.search('a.b.c', file). Кажется стало длиннее, но это потому что мы взяли мало элементов, и согласитесь a.b.c выглядит лучше. Даже отредактировать в случае чего будет проще.

Подписывайтесь на канал 👉@pythonofff
Post #2452 1.07K
Асинхронное программирование

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 8
  • 👏 2
Post #2450 1.07K
Как красиво напечатать json в Python?

Вы можете использовать json.dumps() в Python, чтобы красиво напечатать json.

Подписывайтесь на канал 👉@pythonofff
  • ❤ 2
  • 👍 2
Post #2449 1.18K
Удаление дубликатов в списке

Первое что приходит на ум — преобразовать список во множество и обратно. Это хороший и рабочий способ. Но если вам нужно сохранить последовательность, то этот способ не подойдёт. С этой задачей легко справится OrderedDict из модуля collections

Подписывайтесь на канал 👉@pythonofff
  • ❤ 6
  • 🥰 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →