Что делает этот фрагмент с array в Python

Что делает этот фрагмент с array в Python

@python_quiz

Разберем этот квиз

Короткий заголовок: Работа с модулем array — индексация, длина и сложение

Исходный код:

python

Коротко: программа выводит целое число 4. Ниже подробно объясню почему и разберу возможные заблуждения.

Разбор по шагам

  1. from array import array

- подключает тип из стандартного модуля array, который хранит однородные C-подобные массивы (здесь тип элементов 'i' — целые).

  1. nums = array('i', [1, 2, 3])

- создаёт массив целых чисел с тремя элементами: 1, 2, 3.

  1. nums[0]

- обращение по индексу возвращает элемент типа int со значением 1.

  1. len(nums)

- возвращает длину последовательности, то есть целое число 3.

  1. nums[0] + len(nums)

- складываются два int: 1 + 3 = 4.

  1. print(...) выводит 4.

Демонстрация промежуточных значений

Чтобы понять поведение, полезно вывести промежуточные значения:

python

Ожидаемый вывод в интерактивной сессии:

Обратите внимание: print(nums) не выводит просто [1, 2, 3], а формирует строку вида array('i', [1, 2, 3]) — это отличает array от списков.

Анализ возможных вариантов мышления

  • "Выведет [1, 2, 3]": путаница с list. Если бы код был print(nums), вы увидели бы строковое представление array, но не ровно [1, 2, 3]. Здесь же печатается результат выражения nums[0] + len(nums), то есть число.
  • "Выведет 4": соответствует анализу — nums[0] это 1, len(nums) это 3, их сумма 4.
  • "Выведет 3": могло бы показаться, если перепутать выражение (например, думать, что печатается len или что индекс начинается с 1). Но фактически nums[0] даёт 1, не 0.
  • "Ошибка типов при сложении": возможное заблуждение если считать, что элементы array не являются int или что len возвращает что-то иное. В Python элементы array возвращаются как int и суммируются с int без ошибок.

Заключение

Модуль array предоставляет компактные, одномерные массивы однородных данных. Индексация возвращает обычные Python-типовые значения (для 'i' — int), len возвращает int, поэтому арифметические операции между ними выполняются нормально. В данном фрагменте программа выводит число 4.

Report Page