i = 1
n = 3
while i % n != i % n-1 != i % n-2 != 0:
if i % n == i % n-1 == i % n-2 == 0:
print(i)
else:
i += 1
В чём тут ошибка ? В синтаксисе ? Я новичок в Python, подскажите, пожалуйста.
Я рассуждал так: цикл будет выполняться пока i не будет делиться без остатка на 3, 2 и 1. Начинаем с i = 1 и каждый круг увеличиваем значение на единицу.
Когда i будет равен 6, то цикл закончится и будет напечатан i. Однако в результате при выполнении кода получаю 2.
Пробовал ещё такую запись:
i = 1
n = 3
while i % n != 0 and i % n-1 != 0 and i % n-2 != 0:
if i % n == i % n-1 == i % n-2 == 0:
print(i)
else:
i += 1
Получил результат 1.
Я пока что вообще не понимаю разницы в записи между первым и вторым вариантом (( И не понимаю, почему ни один не работает как я задумал. В чём моя ошибка ?
Во-первых, вы не совсем понимаете логику оператора !=.
Конструкция, например, 0 != 1 != 0 != 0 будет работать не так, как вы думаете, и она будет возвращать False, хотя по вашей логике — True.
Во-вторых, вы забываете про скобки. Выражение
i % n != i % n - 1
к примеру, интерпретируется как
((i % n) != (i % n)) - 1
а чтобы сделать так, как нужно, надо поставить скобки:
i % n != i % (n - 1)
Спасибо ! Кажется, понял про оператор !=. Ну а про скобки тем более )