Предмет: Информатика, автор: engene037

Напишите код программы на языке Python, используя оператор цикл for для вывода на экран всех чисел кратных 3 в диапазоне [-48; 6]. Условный оператор if не использовать. ​

Ответы

Автор ответа: mathgenius
0

Ответ:

Решение для произвольно заданных границ.

A = [int(input("Введите первую границу списка: ")), int(input("Введите вторую границу списка: "))]

for i in range(min(A) + (3- min(A)%3)%3, max(A)+1, 3):

   print(i)

Пошаговое объяснение:

C выражением (3-min(A)%3)%3 надо немного разобраться, простая математика, учитывающая все случаи.

Если нижняя граница дает при делении на 3 остаток 1, то это число нам не подходит, а ближайшее подходящее кратное 3 число это число  A + 2. Если же нижняя граница дает остаток 2 при делении на 3, то  ближайшее нужное число A+1. Для этих двух случаев будет работать выражение:  A +(3-min(A)%3). Но вот когда A делится на 3 этот способ работать не будет, ибо тогда мы к нужному в списке числу прибавляем 3 и теряем его. Как же тогда быть? Как учесть все случаи?

Для этого применим еще один хитрый ход, а именно, сделаем так:

A +(3-min(A)%3)%3.  Если внутри скобок получится 1 или 2, то результат: 1%3 = 1;  2%3 = 2, что нас устраивает. Но главная идея тут в том, что 3%3 = 0, то есть тем самым мы не потеряем нужное нам число!

Приложения:

mathgenius: c выражением (3-min(A)%3)%3 надо немного разобраться, простая математика, учитывающая все случаи...
Похожие вопросы