Статья Автор: Деникина Н.В., Деникин А.В.

9.1 Электронные таблицы — наименьшее, наибольшее и сортировка строки

Как достать из строки «первое по величине»

Вторая половина условий задания 9 — про величину: «наибольшее», «наименьшее», «три наименьших», «сумма остальных». Всё это — сортировка внутри одной строки.

Главный приём: отсортировать строку по возрастанию и брать элементы по позициям. После сортировки первый элемент — наименьший, последний — наибольший, а всё между ними — «остальные».

Шаг 1. Наименьшее и наибольшее

Строка в A1:E1:  6  2  9  4  7

В электронной таблицеВ Python
=НАИМЕНЬШИЙ($A1:$E1; 1)   → 2
=НАИБОЛЬШИЙ($A1:$E1; 1)   → 9

Второй аргумент — какое по порядку значение нужно. Поэтому эти функции заменяют сортировку: меняешь номер и получаешь любое место.

=НАИМЕНЬШИЙ(...; 2) → 4 — второе с начала,
=НАИБОЛЬШИЙ(...; 2) → 7 — второе с конца.

(=МИН и =МАКС тоже работают, но только для крайних.)

row = [6, 2, 9, 4, 7]
s = sorted(row)
print(s)        # [2, 4, 6, 7, 9]

print(s[0])     # 2  наименьшее
print(s[-1])    # 9  наибольшее
print(s[1])     # 4  второе с начала
print(s[-2])    # 7  второе с конца

sorted(row) возвращает новый отсортированный список, а row остаётся как был.


Шаг 2. «Сумма остальных» — два одинаковых способа

В условиях часто просят сумму чисел кроме наименьшего и наибольшего. Считать можно двумя путями, и они дают одно и то же:

Срез отсортированногоВычитание из общей суммы
s = sorted(row)
print(sum(s[1:-1]))   # 17

s[1:-1] — «всё, кроме первого и последнего». Читается наглядно: отрезали края.

print(sum(row) - min(row) - max(row))   # 17

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

Полезно знать и «пачками»:

s = sorted([6, 2, 9, 4, 7])
print(sum(s[:3]))    # 12  сумма трёх наименьших: 2+4+6
print(sum(s[-3:]))   # 22  сумма трёх наибольших: 6+7+9
Проверь себя на дубликатах. Строка 3 3 5 8 8: наименьшее 3 встречается дважды. Оба способа снимают по одному крайнему: sum(s[1:-1]) = 3+5+8 = 16 и 27−3−8 = 16. Совпало — второй экземпляр 3 остался в «остальных».

▶ Попробуй: запусти блок — он печатает отсортированную строку и все нужные величины. Поменяй row на [3, 3, 5, 8, 8] и убедись, что оба способа «суммы остальных» дают одинаковый результат.



Строка 6 2 9 4 7. Что напечатает print(sorted(row))? Введите точно так, как печатает Python.


Та же строка 6 2 9 4 7. Чему равна сумма всех чисел, кроме наименьшего и наибольшего?


Какая формула даст второе по величине с конца (второе наибольшее) число строки A1:E1?


Сопоставьте формулу таблицы и выражение Python (строка отсортирована: s = sorted(row)).


Строка 3 3 5 8 8, s = sorted(row). Отметьте верные утверждения:

Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать