Практическая работа №3
Циклические алгоритмы в Python
Section titled “Циклические алгоритмы в Python”Цель работы: научиться разрабатывать и реализовывать циклические алгоритмы на языке Python с использованием while, for, range(), счётчиков и накопителей.
Практическая работа рассчитана на 2 академических часа (90 минут).
Основные теоретические положения
Section titled “Основные теоретические положения”Цикл — алгоритмическая конструкция, позволяющая многократно выполнять один и тот же набор действий.
В Python используются два основных вида циклов:
while— выполняется, пока условие истинно;for— используется для перебора последовательности значений.
Цикл while
Section titled “Цикл while”count = 1
while count <= 5: print(count) count += 1Цикл while удобен, когда количество повторений заранее неизвестно.
value = int(input("Введите значение (-1 для завершения): "))
while value != -1: print("Получено:", value) value = int(input("Введите значение (-1 для завершения): "))Цикл for и функция range()
Section titled “Цикл for и функция range()”for number in range(1, 6): print(number)Функция range(start, stop, step) формирует последовательность целых чисел.
for number in range(10, 0, -2): print(number)Счётчик и накопитель
Section titled “Счётчик и накопитель”Счётчик используется для подсчёта количества событий.
high_load_count = 0
for _ in range(5): load = int(input("Загрузка CPU: "))
if load > 80: high_load_count += 1Накопитель используется для вычисления суммы значений.
total = 0
for _ in range(5): value = int(input("Введите число: ")) total += valueПорядок выполнения работы
Section titled “Порядок выполнения работы”Для каждого задания:
- Определите входные и выходные данные.
- Составьте словесный алгоритм.
- Определите подходящий вид цикла.
- Реализуйте программу на Python.
- Проверьте программу на нескольких наборах данных.
- Подготовьтесь объяснить работу цикла преподавателю.
Задание 1. Диапазон адресов узлов
Section titled “Задание 1. Диапазон адресов узлов”Пользователь вводит номер первого и последнего узла локальной сети 192.168.1.0/24.
Программа должна вывести адреса всех узлов от первого до последнего включительно и количество сформированных адресов.
Пример
Первый узел: 10Последний узел: 15
192.168.1.10192.168.1.11192.168.1.12192.168.1.13192.168.1.14192.168.1.15
Количество адресов: 6Номера узлов должны находиться в диапазоне от 1 до 254.
Если начальное значение больше конечного, программа должна вывести сообщение об ошибке.
Задание 2. Анализ загрузки процессора
Section titled “Задание 2. Анализ загрузки процессора”Администратор последовательно вводит значения загрузки процессора в процентах.
Ввод завершается значением -1.
Программа должна определить:
- количество введённых измерений;
- среднее значение загрузки;
- максимальную загрузку;
- количество измерений выше
80 %.
Пример
Загрузка CPU (-1 — завершить): 45Загрузка CPU (-1 — завершить): 76Загрузка CPU (-1 — завершить): 91Загрузка CPU (-1 — завершить): 88Загрузка CPU (-1 — завершить): -1
Количество измерений: 4Средняя загрузка: 75.0 %Максимальная загрузка: 91 %Измерений выше 80 %: 2Значения загрузки должны находиться в диапазоне от 0 до 100.
Программа должна корректно обработать ситуацию, когда пользователь сразу вводит -1.
Задание 3. Обработка цифр числа
Section titled “Задание 3. Обработка цифр числа”Пользователь вводит натуральное число.
Не преобразуя число в строку, определите:
- количество цифр;
- сумму цифр;
- максимальную цифру.
Для выделения цифр используйте операции % и //.
Пример
Введите число: 58342
Количество цифр: 5Сумма цифр: 22Максимальная цифра: 8Обязательно проверьте программу для:
- однозначного числа;
- числа, содержащего ноль;
- числа с одинаковыми цифрами.
Задание 4. Анализ сетевого трафика
Section titled “Задание 4. Анализ сетевого трафика”Пользователь вводит количество часов наблюдения N, затем объём трафика за каждый час в мегабайтах и пороговое значение.
Программа должна определить:
- общий объём трафика;
- средний объём за час;
- максимальное значение;
- количество часов, когда трафик превышал порог.
Тестирование
Section titled “Тестирование”Для одного из выполненных заданий заполните таблицу:
| № | Входные данные | Ожидаемый результат | Фактический результат |
|---|---|---|---|
| 1 | Обычный случай | … | … |
| 2 | Граничный случай | … | … |
| 3 | Особый случай | … | … |
Контрольные вопросы
Section titled “Контрольные вопросы”- Чем
whileотличается отfor? - Для чего используется
range()? - Что называется итерацией цикла?
- Для чего применяются счётчики?
- Для чего применяются накопители?
- Что произойдёт, если условие
whileвсегда остаётся истинным? - Как вычислить среднее значение, не сохраняя все введённые числа?
- В каком случае лучше использовать
while, а в каком —for?