Лекция 6. Массивы. Параметрический цикл (1152909), страница 2
Текст из файла (страница 2)
«Информатика. Язык Питон»Доступ к элементам массива осуществляется по имени массива суказанием индекса элемента в массиве в квадратных скобках. Индексынумеруются, начиная с нуля (см. рис.5.2).Примеры:grad[14] = -75.5 # в последний элемент массива записали число -75.5Kr[1]= Kr[4]#ОШИБКА. Массив-константу изменить нельзяprint(Kr[1])# на экран выведется значение второго элемента < 10>Name[2] = ’Елена’ #ОШИБКА. Массив-константу изменить нельзяFamily[2] = ’Саша’ # слово ‘брат’ в массиве заменили на ‘Саша’Dat[0] = Dat[2] # теперь в первом и последнем элементах одинаковыечисла = 0.45Family[2] = Name[0] # изменяемый массив можно менять, теперьвместо имени ‘Саша’ записали имя ‘Николай’Простейшие операции над массивамиМы можем узнать число элементов в массиве с помощью функцииlen(), например:len(grad) вернет 15;len(Kr) вернет 5.Эту функцию удобно применять в параметрических циклах совместно суже известной нам функцией range():range(len(grad)) сформирует последовательность [0, 1, 2, …, 14];range(len(Kr)) сформирует последовательность [0, 1, 2, 3, 4].10Воробьева И.А.
«Информатика. Язык Питон»Тогда можно записать цикл вывода на экран содержимого массива так:for i in range(len(Name)):print(i, Name[i])на экране увидим:0 ‘Николай’1 ‘Мария’2 ‘Иосиф’И наконец, покажем примеры ввода элементов массивов с клавиатурыдля различных типов данных.Целые:for i in range(LEN):Namber[i] = int(input(‘Namber[i]=? ’))или c выводом индекса массива в приглашенииfor i in range(LEN):Namber[i] = int(input(‘Namber[{0:1d}]=? ’.format(i)))Вещественные:for i in range(15):grad[i] = float(input(‘grad[i]=? ’))или c выводом индекса массива в приглашенииfor i in range(15):grad[i] = float(input(‘grad[{0:1d}]=? ’.format(i)))11Воробьева И.А.
«Информатика. Язык Питон»Строковые:для них не нужны дополнительные преобразования после input()for i in range(NMAX):KodA[i] = input(‘KodA[i]=? ’)или c выводом индекса массива в приглашенииfor i in range(NMAX):KodA[i] = input(‘KodA[{0:1d}]=? ’.format(i))ВАЖНО. Отдельно укажем момент, который может привести кнеожиданностям при работе с изменяемыми массивами в Python. Типtuple относится к неизменяемым типам также как типы числа и строки,поэтому с ними все операции безопасны и интуитивно понятны.
Тип listотносится к изменяемым типам в Python и механизм работы с нимитакой, что для новичка операция копирования переменных можетдоставить неприятности. Рассмотрим на примерах.допустимое копирование массивов, но потенциально опасноекомандавыведем содержимое массивовна экранПусть мы хотим сделать копиюисходного массива A в массив B,чтобы после изменений в Aсравнить данные с исходными.Такчастоделаютприсортировках, например.A = [2, 5, -7]print(‘A: ’, A)B=Aprint(‘B: ’,B)A: [2, 5, -7]B: [2, 5, -7]12Воробьева И.А.
«Информатика. Язык Питон»# изменим первый элемент в A, амассив B трогать не будемA[0] = 75print(‘A: ’, A)print(‘B: ’,B)A: [75, 5, -7]B: [75, 5, -7] # изменились оба ивряд ли вы этого хотелибезопасное копирование массивовкомандаA = [2, 5, -7]print(‘A: ’, A)содержимое массивовA: [2, 5, -7]for i in range(len(A)):B[i]=A[i]# применим поэлементноекопирование массивов в цикле cновой функцией len()print(‘B: ’,B)B: [2, 5, -7]# изменим первый элемент в A, амассив B трогать не будемA[0] = 75print(‘A: ’, A)print(‘B: ’,B)A: [75, 5, -7]B: [2, 5, -7] # теперь A изменился, аB – нет, что и требовалось13Воробьева И.А. «Информатика.
Язык Питон»Типичные операции и задачи над массивамиввод массива;вывод массива;накопление сумм и произведений в массивах;поиск MAX (MIN) элемента в массиве;поиск элемента массива, удовлетворяющего условию;сортировка в массиве.Ввод и вывод массивов мы уже рассмотрели. Приведем алгоритмы решениязадач накопления сумм и произведений в массивах.Алгоритм накопления сумм и произведений SUMS_MULTМы приведем алгоритм, который одновременно находит и суммы() и произведения () всех элементов в заданном массивеиз элементов.
Положим начальное значениеи(так как верно, что:). Просматриваяпоследовательно все элементы массива в цикле, будем прибавлятьочередной элемент массива к значениюи умножать на этот жеэлемент значение. После завершения цикла вибудутсумма и произведение всех элементов массива, соответственно.началоБлок-схема(алгоритм)решения задачи.Ввод-вывод исх.данных n, DSums=0; Mult=1Fori=0; n-1; +1Sums = Sums + D[i]Mult = Mult * D[i]Sums, Multконец14Воробьева И.А. «Информатика.
Язык Питон»Фрагмент программного кода:# объявить переменные….# ввести массив с клавиатуры…# вывести массив на экран…#_______________Sums=0Mult=1for i in range(n):Sums +=D[i]Mult *=D[i]#_______________print(‘Сумма элементов равна ’, Sums)print(‘Произведение элементов равно ’, Mult).