Напишите код программы на языке Python, используя оператор цикл for для вывода на экран всех чисел кратных 3 в диапазоне [-48; 6]. Условный оператор if не использовать.
Ответы
Ответ:
Решение для произвольно заданных границ.
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, то есть тем самым мы не потеряем нужное нам число!