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

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

الذهاب إلى القناة على Telegram

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

إظهار المزيد
6 959
المشتركون
-124 ساعات
-47 أيام
-5630 أيام
أرشيف المشاركات
Код выводит "131211131211" и затем вызывает ошибку IndexError. rev_func() — рекурсивная функция, но она не имеет условия выхода (базового случая): 1. Начальный вызов: rev_func(x, 3) - x = [11, 12, 13] - length = 3 - Выводит x[2] = 13 2. Рекурсивный вызов: rev_func(x, 2) - Выводит x[1] = 12 3. Рекурсивный вызов: rev_func(x, 1) - Выводит x[0] = 11 4. Рекурсивный вызов: rev_func(x, 0) - Пытается вывести x[-1], что приводит к IndexError Функция продолжает вызывать сама себя, уменьшая length, пока не достигает отрицательного значения, что приводит к попытке доступа к несуществующему индексу списка (т. е. IndexError).

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

photo content

1. В классе P (родительский класс): - self.__x = 100 - создается приватный атрибут __x со значением 100 - self.y = 200 - создается публичный атрибут y со значением 200 2. В классе C (дочерний класс): - super().__init__() - вызывается конструктор родительского класса - self.__x = 300 - создается НОВЫЙ приватный атрибут __x со значением 300 - self.y = 400 - переопределяется значение публичного атрибута y Ключевой момент здесь в том, что в Python приватные атрибуты (с двойным подчеркиванием __) автоматически «манглируются» (переименовываются) интерпретатором. Когда мы создаем приватный атрибут __x в классе P, он фактически становится _P__x, а когда создаем __x в классе C, он становится _C__x. Поэтому: 1. Когда вызывается d.print(), метод print из класса P обращается к self.__x, что на самом деле означает self._P__x, поэтому выводится 100 2. Атрибут y является публичным, поэтому его значение успешно переопределяется в классе C на 400 Таким образом, в выводе мы видим: - 100 (значение _P__x из родительского класса) - 400 (значение y из дочернего класса) Это демонстрирует важное различие между приватными и публичными атрибутами в Python при наследовании.

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

photo content

У нас есть функция f с тремя параметрами: def f(a, b = 1, c = 2): ... И она вызывается дважды: 1. f(2, c = 2): - a = 2 (первый позиционный аргумент) - b = 1 (значение по умолчанию, так как не указано) - c = 2 (именованный аргумент) Поэтому выводится: a is: 2 b is: 1 c is: 2 2. f(c = 100, a = 110): - a = 110 (именованный аргумент) - b = 1 (значение по умолчанию, так как не указано) - c = 100 (именованный аргумент) Поэтому выводится: a is: 110 b is: 1 c is: 100 Python сначала обрабатывает позиционные аргументы, а затем именованные. Если какой-то параметр не указан, используется его значение по умолчанию. В нашем случае параметр b ни разу не был указан явно, поэтому всегда использовалось его значение по умолчанию - 1.

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

В коде создаётся серия: [1, 2, 3, np.nan, 4, 5] Метод cumsum() вычисляет накопительную сумму: 1: 1.0 (просто первое число) 2: 3.0 (1 + 2) 3: 6.0 (1 + 2 + 3) 4: NaN 5: 10.0 (1 + 2 + 3 + 4) 6: 15.0 (1 + 2 + 3 + 4 + 5) Когда встречается np.nan (Not a Number), pandas пропускает его при подсчёте. Все числа преобразуются в тип float64, потому что np.nan является числом с плавающей точкой Если бы мы хотели, чтобы np.nan не прерывал подсчёт, мы могли бы использовать параметр skipna=False: print(numbers.cumsum(skipna=False)) Тогда результат был бы другим, и все значения после np.nan тоже стали бы NaN.

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

photo content

В коде используется метод count() для подсчёта вхождений подстроки "abb" в строку "abbzxyzxzxabb", но с определёнными начальным и конечным индексами. 1. "abb" - подстрока, которую мы ищем 2. -10 - начальный индекс (отсчёт с конца строки) 3. -1 - конечный индекс (отсчёт с конца строки) Срез от -10 до -1 даёт нам "zxyzxzxab", и в нем нет вхождения "abb". Если бы мы хотели посчитать вхождения в последних 10 символах: print("abbzxyzxzxabb".count("abb", -10)) # 1

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

photo content

Что верно про кортежи и списки
Anonymous voting

В этом коде возникает TypeError потому что метод sort() в Python не может сравнивать числа разных типов — в данном случае целые числа (4, 5) и комплексное число 1j. Когда Python пытается отсортировать этот список, он должен сравнить элементы между собой, чтобы определить их порядок. Однако у нас нет встроенного способа сравнить целое число с комплексным числом, так как это математически не имеет смысла. Или если бы вы хотели сортировать по модулю комплексных чисел: y = [4, 5, 1j] y.sort(key=abs) # Сортировка по модулю числа

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

photo content

1. У вас есть список a = ['hat', 'mat', 'rat'] 2. Когда вы вызываете 'rhyme'.join(a), Python: - Берет первый элемент 'hat' - Добавляет РАЗДЕЛИТЕЛЬ 'rhyme' - Берет второй элемент 'mat' - Добавляет разделитель 'rhyme' - Берет третий элемент 'rat' Таким образом, получается: - 'hat' + 'rhyme' + 'mat' + 'rhyme' + 'rat' = 'hatrhymematrhymerat' Разделитель добавляется ТОЛЬКО между элементами списка, но не в начале и не в конце. Поэтому в результате мы видим 'rhyme' только между словами, но не в начале или конце строки.