8-3py_Массивы (Python)_2

Содержание

Слайд 2

Что такое массив?

Массив – это группа переменных одного типа, расположенных в памяти

Что такое массив? Массив – это группа переменных одного типа, расположенных в
рядом (в соседних ячейках) и имеющих общее имя.

Надо:

выделять память
записывать данные в нужную ячейку
читать данные из ячейки

Слайд 3

Обращение к элементу массива

A

массив

2

15

НОМЕР элемента массива
(ИНДЕКС)

A[0]

A[1]

A[2]

A[3]

A[4]

ЗНАЧЕНИЕ элемента массива

Индекс элемента — это значение,

Обращение к элементу массива A массив 2 15 НОМЕР элемента массива (ИНДЕКС)
которое указывает на конкретный элемент массива.

Слайд 4

Создание массива

A = [11, 22, 35, 41, 53]

A = [11, 22] +

Создание массива A = [11, 22, 35, 41, 53] A = [11,
[35, 41] + [53]

A = [11]*5

A = [11] + [11] + [11] + [11] +[11]

Слайд 5

Обращение к элементу массива

i = 1
A[2] = A[i] + 2*A[i-1] + A[2*i+1]
print(

Обращение к элементу массива i = 1 A[2] = A[i] + 2*A[i-1]
A[2]+A[4] )

A[2] = A[1] + 2*A[0] + A[3]
print( A[2]+A[4] )

101

152

A[2]

ИНДЕКС элемента массива: 2

ЗНАЧЕНИЕ элемента массива

Слайд 6

Что неверно?

A = [1, 2, 3, 4, 5]
x = 1
print( A[x-8] )
A[x+4]

Что неверно? A = [1, 2, 3, 4, 5] x = 1
= A[x-1] + A[2*x]

print( A[-7] )
A[5] = A[0] + A[2]

Выход за границы массива — это обращение к элементу с индексом, который не существует в массиве.

Слайд 7

Перебор элементов массива

Перебор элементов: просматриваем все элементы массива и, если нужно, выполняем

Перебор элементов массива Перебор элементов: просматриваем все элементы массива и, если нужно,
с каждым из них некоторую операцию.

N = 10
A = [0]*N # память уже выделена

for i in range(N):
# здесь работаем с A[i]

0, 1, 2, 3, …, N-1

Слайд 8

Заполнение массива

for i in range(N):
A[i] = i

В развёрнутом виде

A[0] = 0
A[1]

Заполнение массива for i in range(N): A[i] = i В развёрнутом виде
= 1
A[2] = 2
...
A[N-1] = N-1

0

1

2

N-1

[0, 1, 2, 3, …, N-1]

В стиле Python:

A = [ i for i in range(N) ]

i

i

Слайд 9

X = N

Заполнение массива в обратном порядке

A[0] = N
A[1] = N-1
A[2] =

X = N Заполнение массива в обратном порядке A[0] = N A[1]
N-2
...
A[N-1] = 1

for i in range(N):
A[i] = X

X = X - 1

X = N, N-1, …, 2, 1

начальное значение

уменьшение на 1

Слайд 10

Заполнение массива в обратном порядке

A[i] = X

–1

+1

i + X =

Заполнение массива в обратном порядке A[i] = X –1 +1 i +
N

X = N - i

for i in range(N):
A[i] = N – i

В стиле Python:

A = [ N-i
for i in range(N) ]

Слайд 11

Вывод массива на экран

for i in range(N):
print( A[i] )

или так:

в столбик

Весь

Вывод массива на экран for i in range(N): print( A[i] ) или
массив сразу:

print( A )

[1,2,3,4,5]

По одному элементу:

for x in A:
print( x )

для всех элементов в массиве A

for x in A:
print( x, end=" " )

пробел между элементами

Слайд 12

Вывод массива на экран (Python)

print ( *A )

разбить список на элементы

print (1,

Вывод массива на экран (Python) print ( *A ) разбить список на
2, 3, 4, 5)

[1,2,3,4,5]

1 2 3 4 5

Слайд 13

Ввод с клавиатуры

for i in range(N):
print("A[{}]=".format(i), end="")
A[i] = int(input())

A[0] =

Ввод с клавиатуры for i in range(N): print("A[{}]=".format(i), end="") A[i] = int(input())

A[1] =
A[2] =
A[3] =
A[4] =

5
12
34
56
13

for i in range(N):
A[i] = int(input())

С подсказкой для ввода:

или так:

A = [int(input()) 
for i in range(N)]

Слайд 14

Ввод с клавиатуры (Python)

Ввод всех чисел в одной строке:

data = input() #

Ввод с клавиатуры (Python) Ввод всех чисел в одной строке: data =
"1 2 3 4 5"
s = data.split() #["1","2","3","4","5"]
A = [ int(x) for x in s ]
# [1,2,3,4,5]

int(x)

или так:

A = [int(x) for x in input().split()]

Слайд 15

В других языках программирования

const N = 10;
var A: array[0..N-1] of integer;
...
for i:=0

В других языках программирования const N = 10; var A: array[0..N-1] of
to N-1 do
A[i] = i;
for i:=0 to N-1 do
write(A[i], ' ');

Паскаль:

объявление массива

Слайд 16

В других языках программирования

С++:

int A[N], i;
for (i = 0; i < N;

В других языках программирования С++: int A[N], i; for (i = 0;
i++)
A[i] = i;
for (i = 0; i < N; i++)
cout << A[i] << " ";

Слайд 17

Заполнение случайными числами

from random import randint
N = 10 # размер массива
A =

Заполнение случайными числами from random import randint N = 10 # размер
[0]*N # выделить память
for i in range(N):
A[i] = randint(20,100)

В краткой форме:

from random import randint
N = 10
A = [ randint(20,100)
for i in range(N) ]

из библиотеки (модуля) random

взять функцию randint

Слайд 18

Обработка элементов массива

N = 10
A = [0]*N # память уже выделена

for i

Обработка элементов массива N = 10 A = [0]*N # память уже
in range(N):
# здесь работаем с A[i]

Вывести на экран в столбик:

for i in range(N):
???

print( A[i] )

Вывести на экран в строчку:

for i in range(N):
???

print( A[i], end = " " )

print( *A )

Слайд 19

for i in range(N):
???

for i in range(N):
???

Обработка элементов

for i in range(N): ??? for i in range(N): ??? Обработка элементов
массива

Вывести числа, на 1 большие, чем A[i]:

print( A[i]%10 )

Вывести последние цифры:

print( A[i]+1 )

Слайд 20

Обработка элементов массива

Увеличить на 1:

for i in range(N):
???

A[i] += 1

Обработка элементов массива Увеличить на 1: for i in range(N): ??? A[i]

Умножить на 2:

for i in range(N):
???

A[i] *= 2

Заполнить нулями:

for i in range(N):
???

A[i] = 0

Слайд 21

Программирование (Python)

§ 21. Алгоритмы обработки массивов

Программирование (Python) § 21. Алгоритмы обработки массивов

Слайд 22

Сумма элементов массива

Sum = 0
for i in range(N):
Sum = Sum +

Сумма элементов массива Sum = 0 for i in range(N): Sum =
A[i]
print( Sum )

Задача. Найти сумму элементов массива из N элементов.

0

5

1

7

2

15

3

18

4

19

Sum += A[i]

В стиле Python:

print( sum(A) )

Слайд 23

Сумма элементов массива (Python)

Sum = 0
for x in A:
Sum += x
print(

Сумма элементов массива (Python) Sum = 0 for x in A: Sum
Sum )

Задача. Найти сумму элементов массива A.

или так:

print( sum(A) )

for x in A:

для всех элементов из A

встроенная функция

Слайд 24

Сумма не всех элементов массива

Sum = 0
for i in range(N):
Sum +=

Сумма не всех элементов массива Sum = 0 for i in range(N):
A[i]
print( Sum )

Задача. Найти сумму чётных элементов массива.

if A[i] % 2 == 0:
Sum += A[i]
print( Sum )

if A[i] % 2 == 0:

Слайд 25

Сумма не всех элементов массива

Sum = 0
for x in A:
Sum +=

Сумма не всех элементов массива Sum = 0 for x in A:
x
print( Sum )

Задача. Найти сумму чётных элементов массива.

if x % 2 == 0:
Sum += x
print( Sum )

A

x

Sum

4

3

6

8

1

0

4

10

18

В стиле Python:

B = [x for x in A
if x % 2 == 0]
print ( sum(B) )

отбираем в новый массив все нужные значения

Слайд 26

Подсчёт элементов по условию

Задача. Найти количество чётных элементов массива.

count = 0
for i

Подсчёт элементов по условию Задача. Найти количество чётных элементов массива. count =
in range(N):
if A[i] % 2 == 0:
count += 1
print( count )

переменная-счётчик

Слайд 27

Подсчёт элементов по условию (Python)

Задача. Найти количество чётных элементов массива.

count = 0
for

Подсчёт элементов по условию (Python) Задача. Найти количество чётных элементов массива. count
x in A:
if x % 2 == 0:
count += 1
print( count )

В стиле Python:

B = [x for x in A
if x % 2 == 0]
print ( len(B) )

размер массива

Слайд 28

Среднее арифметическое

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост в

Среднее арифметическое Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост
см).

Sum = 0
for x in A:
if x > 180:
Sum += x
print( Sum/N )

Слайд 29

Среднее арифметическое

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост в

Среднее арифметическое Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост
см).

Sum = 0
count = 0
for x in A:
if x > 180:
count += 1
Sum += x
print( Sum/count )

Слайд 30

Среднее арифметическое (Python)

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост

Среднее арифметическое (Python) Задача. Найти среднее арифметическое элементов массива, которые больше 180
в см).

B = [ x for x in A
if x > 180]
print ( sum(B)/len(B) )

отбираем нужные

Слайд 31

Обработка потока данных

Задача. С клавиатуры вводятся числа, ввод завершается числом 0. Определить,

Обработка потока данных Задача. С клавиатуры вводятся числа, ввод завершается числом 0.
сколько было введено положительных чисел.

счётчик = 0
пока не введён 0:
если введено число > 0 то
счётчик:= счётчик + 1

нужен счётчик
счётчик увеличивается если число > 0
нужен цикл
это цикл с условием (число шагов неизвестно)

Слайд 32

Обработка потока данных

count = 0
x = int(input())
while x != 0:
if

Обработка потока данных count = 0 x = int(input()) while x !=
x > 0:
count += 1
x = int(input())
print( count )

откуда взять x?

Слайд 33

Найди ошибку!

count = 0
x = int(input())
while x != 0:
if x

Найди ошибку! count = 0 x = int(input()) while x != 0:
> 0:
count += 1

print( count )

x = int(input())

Слайд 34

Найди ошибку!

count = 0

x = int(input())
while x == 0:
if x

Найди ошибку! count = 0 x = int(input()) while x == 0:
> 0:
count += 1
x = int(input())
print( count )

count = 0

!=

Слайд 35

Обработка потока данных

Задача. С клавиатуры вводятся числа, ввод завершается числом 0. Найти

Обработка потока данных Задача. С клавиатуры вводятся числа, ввод завершается числом 0.
сумму введённых чисел, оканчивающихся на цифру "5".

сумма = 0
пока не введён 0:
если число оканчивается на "5" то
сумма:= сумма + число

нужна переменная для суммы
число добавляется к сумме, если оно заканчивается на "5"
нужен цикл с условием

if x % 10 == 5:

Слайд 36

Обработка потока данных

Задача. С клавиатуры вводятся числа, ввод завершается числом 0. Найти

Обработка потока данных Задача. С клавиатуры вводятся числа, ввод завершается числом 0.
сумму введённых чисел, оканчивающихся на цифру "5".

sum = 0
x = int(input())
while x != 0:
if x % 10 == 5:
sum += x
x = int(input())
print( sum )

Слайд 37

Найди ошибку!

sum = 0
x = int(input())

while x != 0:
if x %

Найди ошибку! sum = 0 x = int(input()) while x != 0:
10 == 5:
sum += x
x = int(input())
print( sum )

x = int(input())

Слайд 38

Перестановка элементов массива

с = a
a = b
b = c

элементы массива:

с = A[i]
A[i]

Перестановка элементов массива с = a a = b b = c
= A[k]
A[k] = c

Слайд 39

Перестановка пар соседних элементов

Задача. Массив A содержит чётное количество элементов N. Нужно

Перестановка пар соседних элементов Задача. Массив A содержит чётное количество элементов N.
поменять местами пары соседних элементов: 0-й с 1-м, 2-й — с 3-м и т. д.

Слайд 40

Перестановка пар соседних элементов

for i in range(N):
поменять местами A[i] и A[i+1]

?

выход

Перестановка пар соседних элементов for i in range(N): поменять местами A[i] и
за границы массива

Слайд 41

Перестановка пар соседних элементов

for i in range(0,N,2):
# переставляем A[i] и

Перестановка пар соседних элементов for i in range(0,N,2): # переставляем A[i] и
A[i+1]
с = A[i]
A[i] = A[i+1]
A[i+1] = c

A[1]↔A[2], A[3]↔A[4], …, A[N-1]↔A[N]

range(0,N,2):

Слайд 42

Реверс массива

Задача. Переставить элементы массива в обратном порядке (выполнить реверс).

A[0]↔A[N-1]
A[1]↔A[N-2]
A[i]↔A[N-1-i]
A[N-1]↔A[0]

0+N-1 =

Реверс массива Задача. Переставить элементы массива в обратном порядке (выполнить реверс). A[0]↔A[N-1]
N-1
1+N-2 = N-1
i+??? = N-1
N-1+0 = N-1

Слайд 43

Реверс массива

for i in range(N):
поменять местами A[i] и A[N+1-i]

i=0

i=1

i=2

i=3

(N%2):

range(N//2):

N-1-i

Реверс массива for i in range(N): поменять местами A[i] и A[N+1-i] i=0

Слайд 44

Конец фильма

ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
[email protected]
ЕРЕМИН

Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163,
Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
[email protected]
Имя файла: 8-3py_Массивы-(Python)_2.pptx
Количество просмотров: 252
Количество скачиваний: 8