Главная страница

Питон хард. 8-3py_Хард. 17. Введение 18. Линейные программы 19. Ветвления 20. Программирование циклических алгоритмов


Скачать 5.26 Mb.
Название 17. Введение 18. Линейные программы 19. Ветвления 20. Программирование циклических алгоритмов
АнкорПитон хард
Дата15.04.2023
Размер5.26 Mb.
Формат файлаppt
Имя файла8-3py_Хард.ppt
ТипДокументы
#1063848
страница18 из 18
1   ...   10   11   12   13   14   15   16   17   18

Задачи





«A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–5; 5] и находит сумму положительных элементов.


«B»: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–2; 2] и находит произведение ненулевых элементов.


«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 1000] и находит отдельно сумму элементов в первой и во второй половинах массива.

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





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


Какие переменные нужны?


?


count = 0
for i in range(N):
if A[i] % 2 == 0:
count += 1
print( count )


Что тут делаем?


?


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

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





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


count = 0
for 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) )


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

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





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


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


Что плохо?


?

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





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


Какие переменные нужны?


?


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


Что тут делаем?


?

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





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


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


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

Задачи





«A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число элементов, которые делятся на 10.


«B»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число двузначных чисел в массиве.


«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [10; 100] и считает число пар соседних элементов, сумма которых делится на 3.

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





Как поменять местами значения двух переменных a и b?


?


с = a
a = b
b = c


вспомогательная переменная


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


с = A[i]
A[i] = A[k]
A[k] = c





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


0


1


2


3


N-2


N-1


7


12


38


5





40


23


0


1


2


3


N-2


N-1


12


7


5


38





23


40





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


Что плохо?


?


0


1


2


3


4


5


7


12


38


5


40


23


12


7


38


5


40


23


12


38


7


5


40


23


12


38


5


7


40


23


12


38


5


40


7


23


12


38


5


40


23


7


?


выход за границы массива





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


A[0]A[1]
A[2]A[3]
...
A[N-2]A[N-1]


range(0,N-1,2):

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





0


1


2


N-3


N-2


N-1


7


12


5





38


40


23


0


1


2


N-3


N-2


N-1


23


40


38





5


12


7


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


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


0+N-1 = N-1
1+N-2 = N-1
i+??? = N-1
N-1+0 = N-1

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





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


Что плохо?


?


0


1


2


3


7


12


40


23


23


12


40


7


23


40


12


7


23


12


40


7


7


12


40


23


i=0


i=1


i=2


i=3


Как исправить?


?


(N // 2):

Задачи





«A»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100], поменять местами пары соседних элементов, не трогая первый и последний элементы.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 53 88 66 26 39 35 88 38 24 50
«B»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100] и выполнить циклический сдвиг влево: каждый элемент перемещается на место предыдущего, а первый – на место последнего.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 66 88 39 26 88 35 24 38 50 53

Задачи





«C»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100], сделать реверс отдельно в первой и во второй половине массива.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 26 39 88 66 53 50 38 24 35 88








Какие переменные нужны?


?


for i in range(N):
if A[i] > M:
M = A[i]
print( M )


Чего не хватает?


?


Какое начальное значение взять для M?


?


M – значение, которое заведомо меньше всех элементов массива или
M = A[0] (или любой другой элемент)


максимальный не меньше, чем A[0]





M = A[0]
for i in range(1,N):
if A[i] > M:
M = A[i]
print( M )


начинаем с A[1], так как A[0] мы уже посмотрели


Как найти минимальный?


?

Поиск максимального элемента (Python)





M = A[0]
for x in A:
if x > M:
M = x
print( M )


перебрать все элементы в массиве A


for x in A:


Не нужно знать размер!


!


print( max(A) )


print( min(A) )





Задача. Найти в массиве максимальный элемент и его номер.


Какие переменные нужны?


?


M = A[0]; nMax = 0
for i in range(1,N):
if A[i] > M:
M = A[i]
nMax = i
print( "A[", nMax, "]=", M )


nMax = 0


nMax = i


Можно ли убрать одну переменную?


?





M = A[0]; nMax = 0
for i in range(1,N):
if A[i]> M :
M = A[i]
nMax = i
print( "A[", nMax, "]=", M )


Если знаем nMax, то M=A[nMax]!


!


:


A[nMax]


)


A[nMax]

Задачи (без min и max)





«A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [50; 150] и находит в нём минимальный и максимальный элементы и их номера.
      «B»: Напишите программу, которая заполняет массив из 10 элементов в виде
      A = [ 10, 2, 3, 4, 10, 6, 7, 8, 9, 10]
      и и выводит количество элементов, имеющих максимальное значение.
      «C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 200] и находит в нём пару соседних элементов, сумма которых минимальна.

Задачи





Конец фильма





ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru

Источники иллюстраций





иллюстрации художников издательства «Бином»
авторские материалы

1   ...   10   11   12   13   14   15   16   17   18


написать администратору сайта