Мне просто не понятно почему цикл while
не завершается, ведь условие
ИЛИ ТО, ИЛИ ТО срабатывает, и должно вывести из цикла
В том то и дело, что в while
пишется условие продолжения работы цикла. И условие s != x or s != y
всегда будет истинным (в случае, если x
не одинаковое с y
), потому что s
ведь не может быть одновременно равно двум разным вещам.
- если
s
будет равно x
, то не выполнится условие s != x
, но выполнится условие s != y
- если
s
будет равно y
, то наоборот не сработает s != y
, но сработает s != x
- а если
s
будет равно некоему z
(не равному ни x
ни y
), то сработают сразу оба условия и цикл опять же продолжит работу
Из-за того, что у вас два условия (из которых хотя бы одно будет истинным, как я показал выше) объединены через ИЛИ
, у вас суммарное условие всегда будет выполняться и цикл будет продолжать работать.
Так что ваше условие продолжения работы цикла явно должно быть написано через И
, а не через ИЛИ
.