10 189 subscribers

Сниппеты Python для начинающих: распаковка кортежей, пауза в секундах и случайное число

103 full reads
Сниппеты Python для начинающих: распаковка кортежей, пауза в секундах и случайное число

Источник: Nuances of Programming

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

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

Содержание:

  1. Функция с неограниченным количеством аргументов.
  2. Одновременный ввод множества значений.
  3. Пауза выполнения кода.
  4. Обмен значений переменных.
  5. Поиск гласных в строке.
  6. Поиск наиболее часто встречаемого значения.
  7. Сокрытие пароля во время ввода.
  8. Сброс предела глубины рекурсии.
  9. Многократный вывод одной строки.
  10. Список с обратным порядком элементов.
  11. Случайное целое число.
  12. Проверка версии Python.
  13. Выводы.

1. Функция с неограниченным количеством аргументов

Одна из причин высоких позиций языка программирования Python в различных рейтингах (например, первое место согласно TIOBE)  —  это свобода, предоставляемая программистам.

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

Такое поведение функций становится возможным благодаря механизму “распаковка кортежей”. Взгляните на приведенный ниже пример кода:

# Пример распаковки кортежей

def test(*arg):
print(arg) # (1, 3, 60, 23, 435)

test(1, 3, 60, 23, 435)

2. Одновременный ввод множества значений

Вы знали, что с помощью Python можно получить несколько входных значений за раз, а после разделить их по разным переменным?
В приведенном ниже примере функция input() получает на вход множество значений, а строковый метод split() по пробелам делит единую строку входных данных.

# Множественный ввод

x, y, z = input("Enter data: ").split()

print(x, y, z)

3. Пауза выполнения кода

time.sleep()  —  это модуль стандартной библиотеки Python, который заставляет программу “спать” в течение нескольких минут, часов или секунд. Вам просто нужно импортировать модуль time, а затем вызвать из него функцию time.sleep() с числом в круглых скобках. Помните, что данный модуль воспринимает первый числовой аргумент в качестве количества секунд задержки выполнения.

for x in range(1, 10):
print(x)
time.sleep(5)

# output:
# 1
# sleep for 5
# 2
# sleep for 5
# .
# .
# 10

4. Обмен значений переменных

Раньше для обмена значениями между переменными (механизм “swapping”) применялись временные или сторонние переменные, но в Python реализована отличная короткая запись, позволяющая заменять значения с меньшим количеством кода и без временных переменных. Взгляните на приведенный ниже пример кода:

# Обмен значений переменных

v1 = 10
v2 = 20

# Длинный способ
temp = v1
v1 = v2
v2 = temp
print(v1, v2) # 20 10

# Профессиональный способ
[v2, v1] = [v1, v1]
print(v1, v2) # 20 10

5. Поиск гласных в строке

Извлекайте гласные проще и быстрее! Примените следующий фрагмент кода для извлечения гласных из любых строковых данных:

# Поиск гласных в строках

def Fetch_Vowels(data):
return [x for x in data if x in 'aeiou']

print(Fetch_Vowels("World of Codding")) # ['o', 'o', 'o', 'i']

print(Fetch_Vowels("Program")) # ['o', 'a']

6. Поиск наиболее часто встречаемого значения

Предположим, вам был дан длинный список повторяющихся элементов, а ваша задача  —  найти в нем наиболее часто встречающееся значение. Первый подход каждого начинающего программиста  —  реализация циклического алгоритма с конструкциями for или while.

Если вышесказанное  —  про вас, то следующий фрагмент кода с примером использования специального метода списков reversed() сэкономит вам достаточно времени:

# Поиск гласных

def most_freq(list):
return max(set(list), key=list.count)

test = [10, 10, 20, 20, 10, 30, 30, 30, 20, 10]
print(most_freq(test)) # 10

7. Сокрытие пароля во время ввода

В Python нет готовой встроенной функции для сокрытия паролей при вводе, но вместо нее как раз подойдет встроенный модуль getpass. Этот модуль работает так же, как ввод пароля в Linux: вы вводите пароль, но не видите его на экране консоли, пока не закончите ввод.

# Скрытый пароль

import getpass

password = getpass.getpass('Type Password: ')

print(password)

8. Сброс предела глубины рекурсии

Скорее всего, вы уже сталкивались с исключением превышения максимально допустимой глубины рекурсии, но нижеследующий фрагмент кода поможет вам сбросить лимит рекурсии на любое число. По умолчанию предел глубины рекурсии установлен как 1000, получается, что программа выдает ошибку при достижении глубины рекурсии в 1000. Во избежание подобного применяйте данный фрагмент кода:

# Сброс ограничения по допустимой глубине рекурсии

import sys

print(sys.getrecursionlimit()) # 1000

sys.setrecursionlimit(1010)

print(sys.getrecursionlimit()) # 1010

9. Многократный вывод одной строки

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

# Печать строки несколько раз без цикла

py = "GoPython "
print(py * 3) # GoPython GoPython GoPython
print(py * 5) # GoPython GoPython GoPython GoPython GoPython

10. Список с обратным порядком элементов

Снова вернемся к работе со списками Python! Вероятно, что для разворота списка в обратную сторону вы все еще создаете циклы for или while, но упростите себе задачу  —  разверните список при помощи специального спискового метода:

# Реверс списка при помощи метода

mylist = ["X", "Y", "Z"]

mylist.reverse()

print(mylist) # ['Z', 'Y', 'X']

11. Случайное целое число

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

# Генерация случайного целого числа
import random

print(random.randint(1, 10)) # some random 10
print(random.randint(5, 30)) # some random 30
print(random.randint(91, 230)) # some random 94

12. Проверка версии Python

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

# Получение версии Python

import platform

print(platform.python_version()) # 3.7.9

Выводы

Спасибо вам за время, потраченное на чтение спиппетов  —  фрагментов кода на Python. Надеемся, что вам понравилось читать эту статью.

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Haider Imtiaz: 12 Python Pro Snippets for Everyday Problems