Решение задачи на обработку массива
Скачать 56.92 Kb.
|
Что такое IDE Python? IDE в Python – это интегрированная среда разработки, которая определяется как инструмент кодирования, который помогает автоматизировать процесс редактирования, компиляции, тестирования в SDLC, и обеспечивает разработчику легкость запуска, написания и отладки кода. Она специально разработана для программного обеспечения, состоящего из нескольких инструментов, которые используются для разработки и тестирования. 2.3PyCharm PyCharm был разработан Jet Brains и представляет собой кроссплатформенную интегрированную среду (IDE), специально разработанную для python. Это наиболее широко используемая IDE, доступная как в платной, так и в бесплатной версии с открытым исходным кодом. Позволяет сэкономить время за счет выполнения рутинных задач. 2.4Хранение данных Предположим, что вы разработали компьютерную игру под названием "Враждебный пользователь", в которой игроки состязаются с замысловатым и недружественным компьютерным интерфейсом. Теперь вам необходимо написать программу, которая отслеживает ежемесячные объемы продаж этой игры в течение пятилетнего периода. Или, скажем, вам нужно провести инвентаризацию торговых карт героев-хакеров. Очень скоро вы придете к выводу, что для накопления и обработки информации вам требуется нечто большее, чем простые базовые типы данных. 2.5Списки (массивы) Для того чтобы было удобно работать с большим количеством данных, группе ячеек дают общее имя. Такую группу ячеек называют массивом. Массив – это группа ячеек памяти одинакового типа, расположенных рядом и имеющих общее имя. Каждая ячейка в группе имеет уникальный номер. При работе с массивами надо научиться решать три задачи: • выделять память нужного размера под массив; • записывать данные в нужную ячейку; • читать данные из ячейки. В языке Python как таковых массивов нет. Вместо этого для хранения группы однотипных (но и не только однотипных) объектов используют списки - объекты типа list. Отличие списков от массивов заключается в том, что список - это динамическая структура, размер которого можно изменять во время выполнения программы (удалять, добавлять элементы) не задумываясь над операциями по управлению памятью (это делает транслятор). В дальнейшем, разбирая работу со списками, будем использовать слово "массив", так как чаще всего списки используются именно в роли массива (хранят однотипные данные). 2.6Создание массива При создании массива в памяти выделяется место (определенное число ячеек). 1) Массивы можно создать простым перечислением элементов: A = [1, 4, 7, 12, 5] print (type(A)) Программа выведет То есть массив - это объект типа list (в переводе с англ. список). 2) Массивы можно составить из данных любых типов - целых или вещественных чисел, символьных строк A = ["Вася", "Петя", "Федя"] Некоторые способы работы с массивами 3) Массивы можно "складывать". A = [1, 5] + [25, 7] 4) Сложение одинаковых массивов можно заменить умножением. Таким образом, легко создать массив, заполненный одинаковыми значениями, например: A = [0]*10 # создали массив из 10 элементов и заполнили его нулями 5) Массив всегда "знает" свой размер. Для определения размера массива используется функция len(). Часто размер массива хранят в отдельной переменной, чтобы была возможность легко изменить программу для работы с другим размером массива. Пример N = 10 # в переменной N храним размер массива A = [0] * N # создаем массив размера N print(len(A)) # выводим размер массива Размер массива можно задавать с клавиатуры. Задача для тренировки: Массивы (списки). Введение 2.7Работа с элементами массива Большая часть пользы от массивов определяется тем фактом, что к его элементам можно обращаться индивидуально. Способ, который позволяет это делать, заключается в использовании индекса для нумерации элементов. Индекс - это значение, которое указывает на конкретный элемент массива. Для обращения к элементу массива необходимо указать имя массива и в квадратных скобках его индекс. Например, записать в элемент массива с индексом 1 значение 100 можно таким образом: A[1] = 100. Надо запомнить! НУМЕРАЦИЯ МАССИВОВ В PYTHON НАЧИНАЕТСЯ С НУЛЯ! (Это является обязательным условием - вы должны начинать с нуля. Это особенно важно запомнить.) Пример x = (A[3] + 5) * A[1] # прочитать значения A[3] и A[1] A[0] = x + 6 # записать новое значение в A[0] Разберем программу работы с элементами массива. i = 1 A = [0] * 5 # создаем массив из 5 элементов A[0] = 23 # в каждый из 5 элементов массива (индексы от 0 до 4) A[1] = 12 # записываем определенное значение A[2] = 7 A[3] = 43 A[4] = 51 A[2] = A[i] + 2*A[i-1] + A[2*i] # изменим значение элемента с индексом 2, на результат выражения # т.к i=1, то подставляя значение переменной i в выражение получим # следующее выражение A[2] = A[1] + 2*A[0] + A[2]; print(A[2] + A[4]) В результате выполнения данной программы на экране появится значение суммы элементов массива с индексом 2 и с индексом 4 равное 116. Как видно из примера, мы можем обращаться к любому элементу массива. А также вычислять необходимый номер элемента по различным формулам (например, как в программе A[i-1] или A[2*i]). В данных случаях индексы элементов будут вычислены и зависят от значения i. В Python для массивов можно использовать отрицательные значения индексов, при этом отсчет ведется с конца массива. Например: A[-1] - последний элемент массива A[-2] - предпоследний элемент и т.д. Разберем программу. N = 5 A = [0] * N x = 1 print(A[x - 3]) # обращение к элементу A[-2] print(A[x - 3 + len(A)]) # обращаемся к элементу A[3] # это тот же самый элемент, что и A[-2] A[x + 4] = A[x] + A[2 * (x + 1)] # после подстановки х в выражения и вычислений # получаем следующую строку A[5] = A[1] + A[4] # A[5] такого элемента не существует # ошибка - выход за границы массива Так как массив объявлен из 5 элементов, значит элементы будут иметь нумерацию от -5 до 4. Видим, что программа в 6-й строке обращается к несуществующему элементу: A[5]. Получается, что программа вышла за границы массива. Выход за границы массива - это обращение к элементу с индексом, который не существует в массиве. В таких случая программа обычно завершается аварийно с ошибкой run-time error. Задача для тренировки: Обращение к элементу массива Перебор элементов массива При работе с массивами обычно приходится работать сразу со всеми элементами массива. Перебор элементов: просматриваем все элементы массива и, если нужно, выполняем с каждым из них некоторую операцию. Для этого используется чаще всего цикл с переменной, которая изменяется от 0 до N-1, где N количество элементом массива. Под N будем считать текущий размер массива, то есть N = len(A). ... for i in range(N): # здесь работаем с A[i] ... В указанном цикле переменная i будет принимать значения 0, 1, 2, ..., N-1. Таким образом, на каждом шаге цикла мы обращаемся к конкретному элементу массива с номером i. Таким образом, достаточно описать, что нужно сделать с одним элементом массива A[i] и эти действия поместить внутрь такого цикла. Напишем программу, которая заполняет массив первыми N натуральными числами, то есть, по окончанию программы элементы массива должны стать равными A[0] = 1 A[1] = 2 A[2] = 3 ... A[N - 1] = N Нетрудно заметить закономерность: значение элемента массива должно быть больше на 1, чем индекс элемента. Цикл будет выглядеть следующим образом for i in range(N): A[i] = i + 1 Задача для тренировки: Перебор элементов массива 2.8Генераторы списков Язык Python позволяет решать многие задачи кратко и надёжно. Перечислим основные возможности по заполнению массива. 1) Создание и заполнение массива можно записать следующим образом: A = [i for i in range(N)] # При N = 5, массив A = [0,1,2,3,4] A = [i*i for i in range(N)] # При N = 5, массив A = [0,1,4,9,16] for i in range(N) - перебирает все значения i от 0 до N-1. В очередной элемент массива будет записано значение, которое стоит перед словом for, в первом случае i, во втором - i*i. Тот же результат получим при использовании следующей записи: A = list(range(N)) # при N = 5, массив A = [0,1,2,3,4] 2) Можно записывать в массив не все значения, а только те, что удовлетворяют определенному условию. Пример Заполнение массива всеми четными числами в диапазоне от 0 до 9. A = [i for i in range(10) if i % 2 == 0] print(*A) # массив A = [0,2,4,6,8] В данном случае нужно понимать, что длина массива будет меньше 10. 3) Заполнение массива с клавиатуры элементами, которые расположены по одному в строке, можно оформить двумя способами. N = 5 A = [0]*5 for i in range(N): A[i] = int(input()) A = [int(input()) for i in range(N)] # при каждом повторении цикла, # введенная строка преобразуется # в целое число (с помощью int) # и это число добавляется к массиву 4) Заполнение массива с клавиатуры элементами, которые все расположены в одной строке немного сложнее. Необходимо считать строку, разбить ее на элементы, а затем каждый элемент преобразовать в целое число s = input().split() A = [int(i) for i in s] или так A = list(map(int, input().split()) # встроенная функция list() # преобразует последовательность # в изменяемый список 2.9Вывод массива Выводить массив на экран можно также разными способами. Стандартный способ, используемый во многих языках программирования. Такой цикл можно записать короче. В значение х на каждом шаге цикла заносится очередной элемент массива. В языке Python можно написать и так. for i in range(len(A)): print(A[i], end=" ") for x in A: print(x, end=" ") print(*A) # знак * перед именем # массива означает, что # нужно преобразовать # массив в набор отдельных значений |