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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
🪤 Что выведет код?
Anonymous Quiz
27%
[2, 4, 6]
70%
[99, 4, 6]
1%
[2, 99, 6]
1%
Error
👍2👎1
Данная задача демонстрирует ключевую особенность изменяемых объектов — списков. Рассмотрим код пошагово:

🔘 𝚊 = [𝟸, 𝟺, 𝟼] — создается список с тремя элементами
🔘 𝚋 = 𝚊 — переменная 𝚋 начинает указывать на тот же список, что и 𝚊
🔘 𝚊[𝟶] = 𝟿𝟿 — изменяется первый элемент списка
🔘 𝚙𝚛𝚒𝚗𝚝(𝚋) — выводится список, на который указывает 𝚋

Ключевой момент заключается в том, что и 𝚊, и 𝚋 указывают на один и тот же объект списка в памяти. Когда мы изменяем элемент списка через переменную 𝚊, этот же объект изменяется и для переменной 𝚋.

Любанович Б. «Простой Python», глава 𝟸:

«В случае, когда оба имени указывают на изменяемый объект, вы можете изменить значение объекта с помощью любого имени. [...] Список представляет собой изменяемый массив значений... Эти элементы списка (𝚊[𝟶], 𝚊[𝟷] и 𝚊[𝟸]) сами по себе являются именами, указывающими на целочисленные объекты со значениями 𝟸, 𝟺 и 𝟼. Список хранит элементы в заданном порядке. Когда первый элемент списка изменяется, он больше не указывает на объект со значением 𝟸. Теперь он указывает на объект со значением 𝟿𝟿. Список всё ещё имеет тип 𝚕𝚒𝚜𝚝, но его значения (элементы списка и их порядок) можно изменить».
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1
🪤 Что выведет код?
Anonymous Quiz
64%
5
14%
05
1%
0
21%
Error
👍1👎1
Код вызовет 𝚂𝚢𝚗𝚝𝚊𝚡𝙴𝚛𝚛𝚘𝚛, потому что в Python нельзя использовать «ведущий» ноль при объявлении целых чисел.

Ведущий ноль в Python имеет специальное значение для восьмеричной системы счисления, но синтаксис для этого отличается (𝟶𝚘𝟷𝟶 — число 𝟾 в этой системе, к примеру). Для восьмеричных чисел используется префикс 𝟶𝚘.
👌5👍3👎1
🧩 Какой из способов объявить числовой литерал валидный?
Anonymous Quiz
48%
Первый (а)
12%
Третий (c)
16%
Второй и третий (b и c)
24%
Все три
👍3👎1
В Python нижнее подчеркивание в числовых литералах игнорируется и служит только для улучшения читаемости кода.

Любанович Б., «Простой Python», глава 𝟹:

«Нижние подчёркивания _ будут просто проигнорированы, [их можно ставить] на любую позицию после первой цифры».

«[Если в качестве разделителя групп разрядов вы используете запятую], то вместо миллиона получите кортеж из трех значений 𝟷, 𝟶, 𝟶».
👍3👎1
🧩 Что выведет код?
Anonymous Quiz
23%
3.25
51%
3
17%
1
9%
Error
👎4💩3🤡2
Оператор // выполняет целочисленное деление (𝚏𝚕𝚘𝚘𝚛 𝚍𝚒𝚟𝚒𝚜𝚒𝚘𝚗), которое возвращает наибольшее целое число, меньшее или равное результату деления.

𝟺 помещается в 𝟷𝟹 три раза (𝟺 × 𝟹 = 𝟷𝟸), и остается остаток 𝟷. Целочисленное деление отбрасывает дробную часть и возвращает только целую часть результата.

Любанович Б., «Простой Python», глава 𝟹:
«Оператор //= является сокращенной формой записи [целочисленного деления], аналогично другим операторам присваивания».
👎2🔥1
🧩 Что выведет код?
Anonymous Quiz
5%
10
65%
25
27%
-25
3%
Error
👍4
Оператор возведения в степень (∗∗) имеет более высокий приоритет, чем унарный минус (−). Поэтому выражение −𝟻 ∗∗ 𝟸 интерпретируется как −(𝟻 ∗∗ 𝟸).

🔘 Сначала выполняется 𝟻 ∗∗ 𝟸 = 𝟸𝟻
🔘 Затем применяется унарный минус: −(𝟸𝟻) = −𝟸𝟻

Если возводим -5 в степень 2, используем скобки так: (−𝟻) ∗∗ 𝟸 = 𝟸𝟻.
Please open Telegram to view this post
VIEW IN TELEGRAM
5
🪤 Что выведет код?
Anonymous Quiz
46%
98
11%
98.6
12%
99
31%
Error
Любанович Б., «Простой Python», глава 𝟹:

«Функция 𝚒𝚗𝚝() будет преобразовывать в целые числа строки, состоящие из цифр и чисел с плавающей точкой, но не будет обрабатывать строки, содержащие десятичные точки или экспоненты».

В данном случае строка "𝟿𝟾.𝟼" содержит десятичную точку, что делает её непригодной для прямого преобразования.

Интерпретатор вызовет исключение 𝚅𝚊𝚕𝚞𝚎𝙴𝚛𝚛𝚘𝚛 с сообщением '𝚒𝚗𝚟𝚊𝚕𝚒𝚍 𝚕𝚒𝚝𝚎𝚛𝚊𝚕 𝚏𝚘𝚛 𝚒𝚗𝚝() 𝚠𝚒𝚝𝚑 𝚋𝚊𝚜𝚎 𝟷𝟶: '𝟿𝟾.𝟼'.

Для преобразования строки с десятичной точкой в целое число необходимо сначала использовать функцию 𝚏𝚕𝚘𝚊𝚝(), а затем 𝚒𝚗𝚝():
− 𝚏𝚕𝚘𝚊𝚝("𝟿𝟾.𝟼") → 𝟿𝟾.𝟼
− 𝚒𝚗𝚝(𝟿𝟾.𝟼) → 𝟿𝟾

Можно одной строкой: 𝚒𝚗𝚝(𝚏𝚕𝚘𝚊𝚝(«𝟿𝟾.𝟼»)) → 𝟿𝟾
🪤 Что выведет код?
Anonymous Quiz
34%
1
40%
2
23%
3
4%
Error
Пасхавер Б., «Pandas в действии», глава 𝟹:

«Метод 𝚟𝚊𝚕𝚞𝚎_𝚌𝚘𝚞𝚗𝚝𝚜 по умолчанию возвращает полуоткрытые интервалы, включающие одну из граничных точек и не включающие другую. Круглая скобка означает, что значение не включается в интервал. Квадратная скобка означает, что значение включается».

В данном случае:
🔘 𝚋𝚒𝚗𝚜=[𝟷, 𝟹, 𝟻] создает два интервала: (𝟶.𝟿𝟿𝟿, 𝟹.𝟶] и (𝟹.𝟶, 𝟻.𝟶];
🔘 В первый интервал попадают значения 𝟷, 𝟸 и 𝟹 (𝟹 элемента);
🔘 Во второй интервал попадают значения 𝟺 и 𝟻 (𝟸 элемента).

При размещении значений объекта 𝚂𝚎𝚛𝚒𝚎𝚜 по корзинам 𝚙𝚊𝚗𝚍𝚊𝚜 может расширить любой из диапазонов до 𝟶,𝟷% в любом направлении, поэтому левая граница первого интервала становится 𝟶.𝟿𝟿𝟿 вместо 𝟷.𝟶.
Please open Telegram to view this post
VIEW IN TELEGRAM