Thon Условные



бет33/38
Дата23.02.2020
өлшемі2,05 Mb.
#58878
1   ...   30   31   32   33   34   35   36   37   38
Байланысты:
8-3 python


Подсчёт элементов массива, удовлетворяющих условию

Во многих задачах нужно найти в массиве все элементы, удовлетворяющие заданному условию, и как-то их обработать, например, подсчитать их количество.



Для подсчёта элементов используется переменная-счётчик,

назовём её count. Перед началом цикла в счётчик записывает-



ся ноль (ни одного нужного элемента не найдено). Если на оче-редном шаге цикла найден новый подходящий элемент, значе-ние счётчика увеличивается на единицу.

Подсчитаем количество элементов массива с чётными зна-чениями.



Запишите условие, которое означает, что значение переменной x чётное. Предложите два равносильных вари-анта такого условия.

Условие «элемент A[i] чётный» можно сформулировать иначе: «остаток от деления A[i] на 2 равен нулю»:

if A[i] % 2 == 0:

... # увеличить счётчик

91 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин



Теперь можно написать полный цикл:

count = 0

for i in range(N):

if A[i] % 2 == 0:

count += 1 # увеличить счётчик print( count )

Для массива на Рис. 3.9 выполните ручную прокрутку этой программы и определите, какое значение будет выведено.

Другой вариант цикла позволяет избавиться от переменной i:



count = 0 for x in A:

if x % 2 == 0:

count += 1 print( count )

Кроме того, можно сначала построить новый массив, выде-лив в него все нужные (чётные) элементы, а потом подсчитать его длину с помощью стандартной функции len:

B = [ x for x in A

if x % 2 == 0 ] print( len(B) )

Массив B строится с помощью генератора, в него включаются все элементы x из исходного массива A, для которых выполняет-ся условие чётности x % 2 == 0.

Теперь усложним задачу. В массиве записан рост каждого члена баскетбольной команды в сантиметрах. Требуется найти средний рост игроков, которые выше 180 см (предполагаем, что хотя бы один такой игрок есть). Средний рост это среднее арифметическое, то есть «суммарный рост» интересующих нас игроков (тех, которые выше 180 см), поделённый на их количе-ство.

Найдите ошибку в программе:

summa = 0

for x in A:

92 http://kpolyakov.spb.ru

05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин



if x > 180:

summa += x print( summa/N )

К какому типу ошибок относится эта ошибка?

Для решения задачи нам нужно считать и сумму, и коли-чество элементов массива, которые больше 180:

count = 0 summa = 0 for x in A:

if x > 180:

count += 1 summa += x

print( summa/count )

Обратите внимание, что в теле условного оператора находятся две команды (увеличение счётчика и увеличение суммы).



Решение «в стиле Python» предполагает построение нового массива из нужных элементов массива A и использование двух встроенных функций:

B = [ x for x in A if x > 180 ]


Достарыңызбен бөлісу:
1   ...   30   31   32   33   34   35   36   37   38




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет