Python: задачки и вопросы
7.75K subscribers
1.19K photos
1 video
1 file
89 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Чтобы получить каждый второй символ из строки S, можно извлечь срез с шагом (страйдом) 2:

>>> S = ‘abcdefghijk’
>>> for c in S[::2]: print(c, end=’ ‘)
... a c e g i k
Длина списка, возвращаемого функцией zip, равна длине кратчайшей из последовательностей, если аргументы имеют разную длину. В задаче выше выполняется объединение двух строк с целью параллельной обработки их символов, при этом результат содержит столько кортежей, сколько было
элементов в кратчайшей последовательности.
Функция enumerate возвращает объект-генератор, который позволяет итерироваться по значению, создаваемому в процессе выполнения кода, без необходимости загружать все значения в память сразу. Это особенно полезно для работы с большими и динамически генерируемыми наборами данных.

E = enumerate(S)
E # <enumerate object at 0x02765AA8>


В контексте задачи выше c — каждая из букв 'spam', i — её индексы в строке. Первый элемент результирующего списка равен пустоте, потому что c * i = 's' * 0 ('s' повторяется 0 раз).

В дальнейшем индексы повторяют буквы p, a и m по 1, 2 и 3 раза соответственно (перемножение строки и целого числа дает повторение строки).
Выполнится ли код выше? file.py существует и является валидным файлом.
Anonymous Quiz
57%
Да
43%
Нет
В вызовах функций можно применять специальную форму *аргумент для распаковки коллекции значений в индивидуальные аргументы. Здесь подойдет любой итерируемый объект, в том числе и файлы.
sorted(testDict) сгенерирует список упорядоченных ключей testDict, то есть:

sortedKeys = sorted(testDict) 
print(sortedKeys) # ['a', 'b', 'c']


Теперь для каждого элемента sortedKeys мы генерируем пару "ключ: значение по ключу из testDict")

# Для i = 0
print(sortedKeys[0], testDict['a']) # a: 2
В Python ради гибкости вызовам функций можно передавать аргументы по имени с помощью синтаксиса имя=значение и распаковывать произвольно много аргументов для отправки посредством снабжения аргументов звездочками — *args (позиционные аргументы) и **kwargs ключевые аргументы — Keyword arguments.

Пример позиционных аргументов:
def print_numbers(*args):
for number in args:
print(number)

# Вызов функции с произвольным количеством аргументов
print_numbers(1, 2, 3, 4, 5)


Пример именованных аргументов:
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

# Вызов функции с произвольным количеством ключевых аргументов
print_info(name="Alice", age=30, city="New York")