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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
В задаче рассматривается поведение метода 𝚗𝚜𝚖𝚊𝚕𝚕𝚎𝚜𝚝 при работе с 𝙽𝚊𝙽 значениями в объекте 𝚂𝚎𝚛𝚒𝚎𝚜.

Согласно
документации 𝚙𝚊𝚗𝚍𝚊𝚜, метод 𝚗𝚜𝚖𝚊𝚕𝚕𝚎𝚜𝚝 возвращает минимальные значения объекта 𝚂𝚎𝚛𝚒𝚎𝚜, отсортированные в порядке возрастания. Аргумент по умолчанию параметра 𝚗 равен 𝟻.

Ключевой момент: 𝙽𝚊𝙽 значения в 𝚙𝚊𝚗𝚍𝚊𝚜 считаются «больше» любого числового значения при сортировке. Это означает, что:

🔘 𝙽𝚊𝙽 значения всегда помещаются в конец отсортированной последовательности
🔘 При использовании 𝚗𝚜𝚖𝚊𝚕𝚕𝚎𝚜𝚝(𝚗) 𝙽𝚊𝙽 значения не включаются в выборку 𝚗 наименьших значений
🔘 Если в 𝚂𝚎𝚛𝚒𝚎𝚜 есть 𝙽𝚊𝙽 значения, они будут отфильтрованы из результата

В нашем примере:
🔘 Исходные данные: [𝟷𝟶.𝟻, 𝙽𝚊𝙽, 𝟹.𝟸, 𝙽𝚊𝙽, 𝟽.𝟾, 𝟷.𝟷, 𝙽𝚊𝙽, 𝟻.𝟺]
🔘 𝚗𝚜𝚖𝚊𝚕𝚕𝚎𝚜𝚝(𝟹) вернет только числовые значения: [𝟷.𝟷, 𝟹.𝟸, 𝟻.𝟺]
🔘 𝙽𝚊𝙽 значения будут исключены из результата

Это поведение согласуется с общей логикой 𝚙𝚊𝚗𝚍𝚊𝚜, где 𝙽𝚊𝙽 рассматривается как «отсутствующее значение» и не участвует в числовых операциях сортировки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
🧩 Что выведет код?
Anonymous Quiz
80%
3
13%
3.75
5%
15.4%
2%
Error
👍1👎1
Оператор % возвращает остаток от деления.

Согласно
документации Python:

«Оператор % (модуло) возвращает остаток от деления первого аргумента на второй».

𝚡 % 𝚢 — остаток от 𝚡 / 𝚢

В данном случае:
− 𝟷𝟻 разделить на 𝟺 будет 𝟹 (с остатком 𝟹)
− 𝟷𝟻 = 𝟺 × 𝟹 + 𝟹

Поэтому 𝟷𝟻 % 𝟺 возвращает 𝟹.
👍1👎1
🪤 Какие циклы for исполнятся без ошибок?
Anonymous Quiz
50%
1 и 2
5%
Только 2
42%
Все
3%
Никакие
Все три цикла исполнятся без ошибок, потому что оператор 𝚏𝚘𝚛 может проходить по любому итерируемому объекту.

Согласно
документации 𝙿𝚢𝚝𝚑𝚘𝚗, синтаксис оператора 𝚏𝚘𝚛 следующий:

𝚏𝚘𝚛_𝚜𝚝𝚖𝚝 ::= "𝚏𝚘𝚛" 𝚝𝚊𝚛𝚐𝚎𝚝_𝚕𝚒𝚜𝚝 "𝚒𝚗" 𝚜𝚝𝚊𝚛𝚛𝚎𝚍_𝚕𝚒𝚜𝚝 ":" 𝚜𝚞𝚒𝚝𝚎
["𝚎𝚕𝚜𝚎" ":" 𝚜𝚞𝚒𝚝𝚎]

Оператор 𝚏𝚘𝚛 используется для итерирования по элементам последовательности (такой как строка, кортеж или список) или другого итерируемого объекта.

Рассмотрим каждый цикл:

🔘 Первый цикл итерирует по строке '𝚜𝚙𝚊𝚖'. Строки в 𝙿𝚢𝚝𝚑𝚘𝚗 являются последовательностями символов, поэтому цикл выведет каждый символ: 𝚜, 𝚙, 𝚊, 𝚖.

🔘 Второй цикл итерирует по объекту 𝚛𝚊𝚗𝚐𝚎(𝟷, 𝟻, 𝟸). Функция 𝚛𝚊𝚗𝚐𝚎() возвращает итерируемый объект, который генерирует арифметическую прогрессию. С параметрами (𝟷, 𝟻, 𝟸) будут сгенерированы числа 𝟷 и 𝟹 (начиная с 𝟷, до 𝟻 (не включая), с шагом 𝟸).

🔘 Третий цикл итерирует по кортежу (𝟻, 𝟺, 𝟹, 𝟸, 𝟷, '𝚑𝚎𝚢!'). Когда перечисляются элементы через запятую без скобок, 𝙿𝚢𝚝𝚑𝚘𝚗 автоматически создает кортеж. Кортежи являются последовательностями, поэтому 𝚏𝚘𝚛 может по ним итерировать. Цикл выведет каждый элемент кортежа, включая строку '𝚑𝚎𝚢!' в конце.

Важно отметить, что элементы итерируемого объекта могут быть разных типов — в третьем примере кортеж содержит и числа, и строку, что не является ошибкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧩 Что выведет код?
Anonymous Quiz
8%
10
90%
20
1%
1
2%
Error
Списки — это последовательности (𝚜𝚎𝚚𝚞𝚎𝚗𝚌𝚎𝚜), к элементам которых можно обращаться по индексу.

Из
документации 𝙿𝚢𝚝𝚑𝚘𝚗, операция индексирования последовательности определяется следующим образом:

𝚜𝚞𝚋𝚜𝚌𝚛𝚒𝚙𝚝𝚒𝚘𝚗 ::= 𝚙𝚛𝚒𝚖𝚊𝚛𝚢 "[" 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗_𝚕𝚒𝚜𝚝 "]"

При индексации список 𝚗𝚞𝚖𝚜[𝚒] возвращает 𝚒−й элемент последовательности. Индексы нумеруются с нуля. Это пришло из низкоуровневых языков вроде 𝙲. Там индекс массива — это фактически смещение (𝚘𝚏𝚏𝚜𝚎𝚝) от адреса начала массива в памяти. Первый элемент находится по адресу 𝚋𝚊𝚜𝚎_𝚊𝚍𝚍𝚛𝚎𝚜𝚜 + 𝟶, второй — 𝚋𝚊𝚜𝚎_𝚊𝚍𝚍𝚛𝚎𝚜𝚜 + 𝟷, и так далее. Поэтому индексация с нуля естественна на уровне работы с памятью.

− 𝚗𝚞𝚖𝚜[𝟶] возвращает первый элемент — 𝟷𝟶
− 𝚗𝚞𝚖𝚜[𝟷] возвращает второй элемент — 𝟸𝟶
− 𝚗𝚞𝚖𝚜[𝟸] возвращает третий элемент — 𝟹𝟶

В данном коде создается список из трех элементов: [𝟷𝟶, 𝟸𝟶, 𝟹𝟶]. При обращении 𝚗𝚞𝚖𝚜[𝟷] мы получаем элемент с индексом 𝟷, то есть второй элемент списка, который равен 𝟸𝟶.
🧩 Что выведет код?
Anonymous Quiz
19%
True
75%
False
0%
0
6%
Error
🔥1
В данном коде выполняется логическая операция 𝚊𝚗𝚍 между двумя выражениями сравнения.

Переменные:
− 𝚡 = 𝟽
− 𝚢 = 𝟻

Выражение: 𝚡 > 𝚢 𝚊𝚗𝚍 𝚢 < 𝟹

Вычисление по шагам:
𝟷. 𝚡 > 𝚢 → 𝟽 > 𝟻 → 𝚃𝚛𝚞𝚎
𝟸. 𝚢 < 𝟹 → 𝟻 < 𝟹 → 𝙵𝚊𝚕𝚜𝚎
𝟹. 𝚃𝚛𝚞𝚎 𝚊𝚗𝚍 𝙵𝚊𝚕𝚜𝚎 → 𝙵𝚊𝚕𝚜𝚎

Согласно документации, оператор 𝚊𝚗𝚍 возвращает:
🔘 первый ложный операнд, если хотя бы один операнд ложен;
🔘 последний операнд, если все операнды истинны.

В данном случае первый операнд (𝚃𝚛𝚞𝚎) истинен, но второй операнд (𝙵𝚊𝚕𝚜𝚎) ложен, поэтому оператор «𝚊𝚗𝚍» возвращает 𝙵𝚊𝚕𝚜𝚎.
Please open Telegram to view this post
VIEW IN TELEGRAM