Питон хард. 8-3py_Хард. 17. Введение 18. Линейные программы 19. Ветвления 20. Программирование циклических алгоритмов
Скачать 5.26 Mb.
|
Задачи«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-м и т. д.
for i in range(N): поменять местами A[i] и A[i+1] Что плохо? ?
? выход за границы массива 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): Реверс массива
Задача. Переставить элементы массива в обратном порядке (выполнить реверс). 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] Что плохо? ?
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] и находит в нём минимальный и максимальный элементы и их номера.
A = [ 10, 2, 3, 4, 10, 6, 7, 8, 9, 10] и и выводит количество элементов, имеющих максимальное значение. «C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 200] и находит в нём пару соседних элементов, сумма которых минимальна. Задачи
Конец фильмаПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163, г. Санкт-Петербург kpolyakov@mail.ru ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь eremin@pspu.ac.ru Источники иллюстрацийиллюстрации художников издательства «Бином» авторские материалы |