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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
Циклы for начинаются со строки заголовка, где указывается переменная для присваивания (или – цель), а также объект, обход которого будет выполнен. Вслед за заголовком следует блок (обычно с отступами) инструкций, которые требуется выполнить:

 <target> in <object>: # Связывает элементы объекта с переменной цикла
<statements> # Повторяющееся тело цикла: использует переменную цикла
else:
<statements> # Если не попали на инструкцию ‘break’


Блок else не выполнится, если цикл был прерван с помощью оператора break.
Чтобы получить каждый второй символ из строки 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