Python: задачки и вопросы
7.69K subscribers
1.21K photos
2 videos
1 file
98 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
🪤 Что выведет код?
Anonymous Quiz
69%
inner try
17%
outer try
11%
Пустой ответ
3%
Error
👍1👎1
Марк Лутц, «Изучаем Python», глава 34:

В данном коде присутствуют два активных оператора try — один в функции action1 и один на верхнем уровне модуля.

Функция action2() генерирует исключение TypeError при попытке сложить число 1 и пустой список [], поскольку складывать числа и последовательности нельзя.

«Когда action2 сгенерирует исключение `TypeError`, интерпретатор Python выберет и выполнит самый недавний try с совпадающей конструкцией except, которым в данном случае будет `try` внутри функции action1()».

Поэтому исключение `TypeError` будет перехвачено внутренним обработчиком except TypeError: print('inner try'), и на экран выведется 'inner try'.

Внешний `try` блок не выполнится, так как исключение уже было обработано на более глубоком уровне вложенности.
👍1👎1
Марк Лутц, «Изучаем Python», глава 34:

«В коде используется удобная функция print_exc из модуля traceback, которая по умолчанию потребляет данные sys.exc_info; после запуска сценарий выводит сообщение об ошибке в файл, что удобно в тестовых программах, которым необходимо перехватывать ошибки, но вдобавок полноценно их регистрировать».

В блоке обработки исключения вызывается traceback.print_exc(file=open('badly.exc','w')), который:
1️⃣ Открывает файл 'badly.exc' в режиме записи ('w')
2️⃣ Записывает в него полную информацию об исключении (traceback)
3️⃣ Закрывает файл

После успешной обработки исключения выполнение продолжается, и выводится "Bye". Таким образом, код не завершается с ошибкой, а успешно обрабатывает исключение и создает файл с информацией об ошибке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
Все три способа валидны:

cities.str.contains("Las Vegas", na=False).any()
Выполняет поэлементный поиск подстроки (regex или литерал) внутри строк.

"Las Vegas" in cities.values
В Pandas Series.values возвращает numpy.ndarray. Выполняет проверку наличия точного значения в массиве NumPy.

cities.isin(["Las Vegas"]).any()
Проверяет для каждого элемента Series, содержится ли он в списке значений. Возвращает True, если хотя бы один элемент Series строго равен "Las Vegas".
👍1👎1
🪤 Что выведет код?
Anonymous Quiz
13%
1
73%
2
6%
3
8%
Error
👍1👎1
Код выводит:

Поймано: RuntimeError
Причина: ValueError

D функции process_data() происходит попытка преобразовать строку "abc" в целое число, что вызывает ValueError. Затем это исключение перехватывается и перебрасывается как RuntimeError с помощью конструкции raise ... from e, которая сохраняет связь между исключениями. Внешний блок try-except ловит RuntimeError и выводит информацию о типе пойманного исключения и его причине через атрибут __cause__.
👍1👎1
Марк Лутц, «Изучаем Python», глава 36:

«Результат вызова sys. exc inf о, который применялся в предшествующих двух разделах, дает возможность обработчику исключений получать доступ к самому последнему cгенерированному исключению обобщенным образом. Это особенно полезно при использовании пустой конструкции except для слепого перехвата всех исключений,
чтобы выяснить, какое исключение было сгенерировано:

import sys

try:
...
except:
# sys.exc_info()[0:2] представляет класс и экземпляр исключения

Если никакие исключения не обрабатывались, тогда такой вызов возвращает кортеж с тремя значениями None. В противном случае значениями будут (type, value, traceback):

— type — класс обрабатываемого исключения;
— value — экземпляр класса исключения, который был сгенерирован;
— traceback — объект трассировки, который представляет стек вызовов в месте,

где первоначально возникло исключение, и применяется модулем traceback для генерации сообщений об ошибках».
👍21👎1