ch
Feedback
Python: задачки и вопросы

Python: задачки и вопросы

前往频道在 Telegram

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media

显示更多
6 962
订阅者
-124 小时
-67
-5630
帖子存档
Код пытается изменить первый символ строки '𝙷𝚎𝚗𝚗𝚢' на '𝙿', но это приводит к ошибке 𝚃𝚢𝚙𝚎𝙴𝚛𝚛𝚘𝚛, поскольку строки в Python являются неизменяемыми (𝚒𝚖𝚖𝚞𝚝𝚊𝚋𝚕𝚎) объектами. Из документации Python: «Изменчивость объекта определяется его типом; например, числа, строки и кортежи являются неизменяемыми, а словари и списки — изменяемыми». При попытке выполнить операцию присваивания 𝚗𝚊𝚖𝚎[𝟶] = '𝙿' интерпретатор выдаст ошибку: `𝚃𝚢𝚙𝚎𝙴𝚛𝚛𝚘𝚛: '𝚜𝚝𝚛' 𝚘𝚋𝚓𝚎𝚌𝚝 𝚍𝚘𝚎𝚜 𝚗𝚘𝚝 𝚜𝚞𝚙𝚙𝚘𝚛𝚝 𝚒𝚝𝚎𝚖 𝚊𝚜𝚜𝚒𝚐𝚗𝚖𝚎𝚗𝚝` Для изменения строки необходимо создать новую строку. Существует несколько способов: 🔘 Использование срезов: 𝚗𝚊𝚖𝚎 = '𝙿' + 𝚗𝚊𝚖𝚎[𝟷:] 🔘 Использование метода 𝚛𝚎𝚙𝚕𝚊𝚌𝚎(): 𝚗𝚊𝚖𝚎 = 𝚗𝚊𝚖𝚎.𝚛𝚎𝚙𝚕𝚊𝚌𝚎('𝙷', '𝙿', 𝟷) 🔘 Использование форматирования строк: 𝚗𝚊𝚖𝚎 = 𝚏'𝙿{𝚗𝚊𝚖𝚎[𝟷:]}' В данном случае правильным решением было бы: 𝚗𝚊𝚖𝚎 = '𝙿' + 𝚗𝚊𝚖𝚎[𝟷:] 𝚙𝚛𝚒𝚗𝚝(𝚗𝚊𝚖𝚎) # Выведет: 𝙿𝚎𝚗𝚗𝚢 Фундаментальное свойство строк в Python — их неизменяемость, которая обеспечивает безопасность данных и оптимизацию памяти.

🪤 Что выведет код?
Anonymous voting

Код использует оператор присваивания выражения (𝚠𝚊𝚕𝚛𝚞𝚜 𝚘𝚙𝚎𝚛𝚊𝚝𝚘𝚛) `:=`. Этот оператор позволяет присваивать значение переменной в рамках выражения. Рассмотрим выполнение кода пошагово: 🔘 `𝚝𝚠𝚎𝚎𝚝_𝚕𝚒𝚖𝚒𝚝 = 𝟸𝟾𝟶` − устанавливается лимит символов для твита 🔘 `𝚝𝚠𝚎𝚎𝚝_𝚜𝚝𝚛𝚒𝚗𝚐 = "𝙱𝚕𝚊𝚑" ∗ 𝟻𝟶` − создается строка путем повторения строки «𝙱𝚕𝚊𝚑» 𝟻𝟶 раз, что дает строку длиной 𝟸𝟶𝟶 символов 🔘 В условии `𝚒𝚏 𝚍𝚒𝚏𝚏 := 𝚝𝚠𝚎𝚎𝚝_𝚕𝚒𝚖𝚒𝚝 − 𝚕𝚎𝚗(𝚝𝚠𝚎𝚎𝚝_𝚜𝚝𝚛𝚒𝚗𝚐) >= 𝟶:` происходит следующее: 🔘 Вычисляется `𝚝𝚠𝚎𝚎𝚝_𝚕𝚒𝚖𝚒𝚝 − 𝚕𝚎𝚗(𝚝𝚠𝚎𝚎𝚝_𝚜𝚝𝚛𝚒𝚗𝚐)` = 𝟸𝟾𝟶 − 𝟸𝟶𝟶 = 𝟾𝟶 🔘 Проверяется условие `𝟾𝟶 >= 𝟶`, которое возвращает `𝚃𝚛𝚞𝚎` 🔘 Оператор `:=` присваивает результат этого выражения (𝚃𝚛𝚞𝚎) переменной `𝚍𝚒𝚏𝚏` 🔘 Поскольку условие истинно, выполняется блок `𝚒𝚏`

🧩 Что выведет код?
Anonymous voting

В Python можно использовать множественные операторы сравнения в одной цепочке. Выражение «𝟻 < 𝚡 < 𝟷𝟶 < 𝟿𝟿𝟿» эквивалентно «(𝟻 < 𝚡) 𝚊𝚗𝚍 (𝚡 < 𝟷𝟶) 𝚊𝚗𝚍 (𝟷𝟶 < 𝟿𝟿𝟿)». Поскольку 𝚡 = 𝟽: — 𝟻 < 𝟽 = 𝚃𝚛𝚞𝚎; − 𝟽 < 𝟷𝟶 = 𝚃𝚛𝚞𝚎; − 𝟷𝟶 < 𝟿𝟿𝟿 = 𝚃𝚛𝚞𝚎. Все условия выполняются, поэтому результат выражения 𝚃𝚛𝚞𝚎. В Python цепочки сравнений выполняются слева направо и объединяются оператором «𝚊𝚗𝚍». Если любое из сравнений возвращает 𝙵𝚊𝚕𝚜𝚎, то и вся цепочка возвращает 𝙵𝚊𝚕𝚜𝚎.

🧩 Что выведет код?
Anonymous voting

Из документации Python:
'𝙰𝚗 𝚎𝚡𝚙𝚛𝚎𝚜𝚜𝚒𝚘𝚗 𝚒𝚗 𝚙𝚊𝚛𝚎𝚗𝚝𝚑𝚎𝚜𝚎𝚜, 𝚜𝚚𝚞𝚊𝚛𝚎 𝚋𝚛𝚊𝚌𝚔𝚎𝚝𝚜 𝚘𝚛 𝚌𝚞𝚛𝚕𝚢 𝚋𝚛𝚊𝚌𝚎𝚜 𝚌𝚊𝚗 𝚋𝚎 𝚜𝚙𝚕𝚒𝚝 𝚘𝚟𝚎𝚛 𝚖𝚘𝚛𝚎 𝚝𝚑𝚊𝚗 𝚘𝚗𝚎 𝚙𝚑𝚢𝚜𝚒𝚌𝚊𝚕 𝚕𝚒𝚗𝚎 𝚠𝚒𝚝𝚑𝚘𝚞𝚝 𝚞𝚜𝚒𝚗𝚐 𝚋𝚊𝚌𝚔𝚜𝚕𝚊𝚜𝚑𝚎𝚜'.
«Выражение в скобках может быть разделено на несколько строк без использования символа обратного слеша» В данном коде Python автоматически интерпретирует переносы строк внутри скобок как продолжение выражения. В итоге вычисляется арифметическое выражение: 𝟷 + 𝟸 + 𝟹 + 𝟺 = 𝟷𝟶.

🧩 Исполнится ли код без ошибок?
Anonymous voting

Булевы значения могут автоматически преобразовываться в числовые типы при выполнении арифметических операций. Любанович Б., «Простой Python», глава 3: «Булево значение 𝙵𝚊𝚕𝚜𝚎 рассматривается как 𝟶 или 𝟶.𝟶, когда смешивается с целыми числами или числами с плавающей точкой, а 𝚃𝚛𝚞𝚎 — как 𝟷 или 𝟷.𝟶» В данном случае: 🔘 𝚃𝚛𝚞𝚎 автоматически преобразуется в 𝟷 🔘 Выполняется операция: 𝟷 + 𝟸 = 𝟹

🧩 Что выведет код?
Anonymous voting

Пасхавер Б., «Pandas в действии», глава 𝟹: «Метод 𝚟𝚊𝚕𝚞𝚎_𝚌𝚘𝚞𝚗𝚝𝚜 по умолчанию возвращает полуоткрытые интервалы, включающие одну из граничных точек и не включающие другую. Круглая скобка означает, что значение не включается в интервал. Квадратная скобка означает, что значение включается». В данном случае: 🔘 𝚋𝚒𝚗𝚜=[𝟷, 𝟹, 𝟻] создает два интервала: (𝟶.𝟿𝟿𝟿, 𝟹.𝟶] и (𝟹.𝟶, 𝟻.𝟶]; 🔘 В первый интервал попадают значения 𝟷, 𝟸 и 𝟹 (𝟹 элемента); 🔘 Во второй интервал попадают значения 𝟺 и 𝟻 (𝟸 элемента). При размещении значений объекта 𝚂𝚎𝚛𝚒𝚎𝚜 по корзинам 𝚙𝚊𝚗𝚍𝚊𝚜 может расширить любой из диапазонов до 𝟶,𝟷% в любом направлении, поэтому левая граница первого интервала становится 𝟶.𝟿𝟿𝟿 вместо 𝟷.𝟶.

🪤 Что выведет код?
Anonymous voting

Любанович Б., «Простой Python», глава 𝟹: «Функция 𝚒𝚗𝚝() будет преобразовывать в целые числа строки, состоящие из цифр и чисел с плавающей точкой, но не будет обрабатывать строки, содержащие десятичные точки или экспоненты». В данном случае строка "𝟿𝟾.𝟼" содержит десятичную точку, что делает её непригодной для прямого преобразования. Интерпретатор вызовет исключение 𝚅𝚊𝚕𝚞𝚎𝙴𝚛𝚛𝚘𝚛 с сообщением '𝚒𝚗𝚟𝚊𝚕𝚒𝚍 𝚕𝚒𝚝𝚎𝚛𝚊𝚕 𝚏𝚘𝚛 𝚒𝚗𝚝() 𝚠𝚒𝚝𝚑 𝚋𝚊𝚜𝚎 𝟷𝟶: '𝟿𝟾.𝟼'. Для преобразования строки с десятичной точкой в целое число необходимо сначала использовать функцию 𝚏𝚕𝚘𝚊𝚝(), а затем 𝚒𝚗𝚝(): − 𝚏𝚕𝚘𝚊𝚝("𝟿𝟾.𝟼") → 𝟿𝟾.𝟼 − 𝚒𝚗𝚝(𝟿𝟾.𝟼) → 𝟿𝟾 Можно одной строкой: 𝚒𝚗𝚝(𝚏𝚕𝚘𝚊𝚝(«𝟿𝟾.𝟼»)) → 𝟿𝟾

🪤 Что выведет код?
Anonymous voting