Если вы, смотря 16 задание, закрываете сайт, на котором готовитесь к ОГЭ по информатике, вам стоит прочитать эту статью. Кстати, вам будет полезно, даже если вы хотите структурировать свои знания. Чтобы понять эту статью, вы должны знать: циклы while и for, условные операторы if, elif, else, базовые команды, базовая работа с переменными и типами данных на Python.
По сути, есть 2 типа 16-х заданий: На цикл for и на цикл while. Кстати, цикл for вполне заменяем циклом while, но это мы сегодня затрагивать не будем.
Задания на цикл for.
Нам удобнее использовать цикл for, когда наша программа получает кол-во ведённых данных. Чаще всего, используется такая фраза:
Программа получает на вход количество чисел в последовательности, а затем сами числа.
Наша задача получить кол-во чисел, именно столько раз будет повторяться наш цикл for. Разберём на примере:
Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, кратное 5. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 5. Количество чисел не превышает 1000. Введенные числа не превышают 30 000. Программа должна вывести одно число — максимальное число, кратное 5.
num_of_num = int(input()) # Мы получаем кол-во чисел comparison = 0 # Эта переменная нам понадобится для сравнения чисел for i in range(num_of_num): # Создаём цикл num = int(input()) # Получем наши числа if num % 5 == 0: # Проверяем делимость на 5, так как числа должны быть кратны comparison = max(comparison, num) # Выбор максимального числа из прошлого и нового print(comparison) # Вывод ответа
Переменная для сравнения равна нулю, чтобы первое же число, которое кратно 5, стало максимальным. Если бы было бы минимальное число, то наша переменная имела бы максимально возможное число + 1, чтобы первое же число, подходящие условием стало минимальным.
И похожую структуру будут иметь и все остальные задачи. может меняться начинка цикла, но основная идея остаётся неизменной. Получаем кол-во чисел и делаем цикл, который повторится именно столько раз, сколько у нас чисел.
Рассмотрим ещё одну задачу:
Напишите программу для решения следующей задачи. Камера наблюдения регистрирует в автоматическом режиме скорость проезжающих мимо нее автомобилей, округляя значения скорости до целых чисел. Необходимо определить максимальную зарегистрированную скорость автомобиля. Если скорость хотя бы одного автомобиля была меньше 30 км/ч, выведите «YES», иначе выведите «NO».
Программа получает на вход число проехавших автомобилей N (1 < N < 30), затем указываются их скорости. Значение скорости не может быть меньше 1 и больше 300. Программа должна сначала вывести максимальную скорость, затем YES или NO.
Выглядит гораздо страшнее, но структура абсолютно такая же:
num_of_auto = int(input()) # Мы получаем кол-во чисел comparison = 0 # Эта переменная нам понадобится для сравнения скоростей check = False # Для проверки, будет ли скорость меньше 30 for i in range(num_of_auto): # Создаём цикл speed = int(input()) # Получаем скорости if speed < 30: # Проверяем, будет YES или NO check = True comparison = max(comparison, speed) # Находим максимальную скорость if check == True: # Выводем ответ в зависимости от скоростей print(comparison) print("YES") else: print(comparison) print("NO")
Код не самый упрощённый и его можно упростить, но идея здесь такая же. Получаем кол-во чисел и делаем цикл.
Задания на цикл while.
Этот цикл нам удобно использовать, когда кол-во введённых данных неизвестно. Пример:
Напишите программу, которая в последовательности натуральных чисел определяет количество всех четных чисел, кратных 5. Программа получает на вход натуральные числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введенные числа не превышают 30 000. Программа должна вывести одно число: количество всех четных чисел, кратных 5.
num_of_num = 0 # Кол-во чисел, котоые делятся и на 2, и на 5 while True: # Создаём цикл num = int(input()) # Получаем числа if num == 0: # Если ноль, то последовательность заканичвается и мы прекращаем цикл break else: if num % 2 == 0 and num % 5 == 0: # Проверяем чётность и делимость на 5 num_of_num += 1 # Если подходит, то увеличиваем кол-во чисел на 1 print(num_of_num) # Выводим ответ
Код имеет лишние элементы, но я старался написать его максимально для понимания алгоритма. Последовательность в таких задачах кончается 0, так что если мы получаем 0, то прекращаем цикл. важно это написать до проверки на четность и делимость на 5, чтобы ответ был истинным. Структуру while True и прекращаем, если 0. Рассмотрим задачу посложнее:
Напишите программу, которая в последовательности целых чисел определяет количество нечетных чисел, кратных 3. Программа получает на вход целые числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введенные числа по модулю не превышают 30 000. Программа должна вывести два числа: длину последовательности (завершающий 0 не учитывается) и количество нечетных чисел, кратных 3.
sequence_length = 0 # Переменная для определения длины последовательност num_of_num = 0 # Перменная для определения кол-ва чисел кратных 3 и кратнхы 2 while True: # Создаём цикл num = int(input()) # Получаем числа if num == 0: # Проверяем на ноль break # Если 0, то завершаем else: # Если нет sequence_length += 1 # Плюс к кол-ву чисел в последовательности if num % 2 == 1 and num % 3 == 0: # Проверяем на четность и делимость на 3 num_of_num += 1 # Если да, то увеличиваем кол-во подходящих чисел print(sequence_length) # Выводим ответы print(num_of_num)
Код также для понимания, его можно упростить, но это не сделает его сильно короче, он и без этого получился не длинный. Можем заметить здесь такую же структуру, как и в прошлой задаче.
Надеюсь, что эта статья помогла разобраться вам в 16 задаче и вы получите ту оценку, которая вам нужна на ОГЭ. Советую порешать ещё 16-х заданий, чтобы вы привыкли. Я брал задачи с решу ОГЭ, но про этот сайт ходит не самая лучшая репутация, из-за не актуальных задач, но структура решения задач будет такой же. Удачи на экзаменах!
