while (!["весна", "лето", "осень", "зима"].includes(prompt()));
Объяснение:
["весна", "лето", "осень", "зима"] — список из строк, которые содержат указанные слова.
.includes — метод списка, принимающий некоторое значение и возвращающий true (истина) либо false (ложь) в зависимости от того, есть ли указанное значение в списке. К примеру, результат вычисления выражения ["весна", "лето", "осень", "зима"].includes(123) — false, поскольку значения 123 нет в данном списке. И наоборот, ["весна", "лето", "осень", "зима"].includes("весна") вернет true, так как значение "весна" в списке есть.
prompt — функция, запрашивающая у пользователя текст и возвращающая его.
Полное выражение ["весна", "лето", "осень", "зима"].includes(prompt()) при вычислении запросит текст у пользователя и вернет true или false в зависимости от наличия введённого пользователем текста в списке ["весна", "лето", "осень", "зима"]
Знак ! обозначает оператор логического отрицания: !true будет вычислено как false, а !false — как true.
Конструкция while( <expression> ){ <code> }; — цикл с условием: код <code> будет выполнятся всё время, пока условие <expression>истино. В данном случае фигурные скобки можно опустить, ибо никакого дополнительного кода цикл выполнять не должен.
В результате мы получаем цикл, который будет вычислять выражение !["весна", "лето", "осень", "зима"].includes(prompt()) раз за разом всё время, пока условие ["весна", "лето", "осень", "зима"].includes(prompt()) (пользователь ввёл что‐то из списка) ложно. Как только он введёт что‐то из списка, цикл прекратит работу, ибо условие !["весна", "лето", "осень", "зима"].includes(prompt()) больше не будет выполняться.
Решение второе (без списка):
let text = prompt();
while (text !== "весна" && text !== "лето" && text !== "осень" && text !== "зима") {
text = prompt();
}
В первой строке объявлена переменная text, значением которой является введённый пользователем текст.
Далее идёт цикл, который при помощи кода text = prompt() запрашивает у пользователя текст снова и снова, пока условие text !== "весна" && text !== "лето" && text !== "осень" && text !== "зима" истино.
Символ && обозначает оператор «логическое И». Выражение A && B истино только в случае, когда выражения A и B истинны одновременно.
Символ !== обозначает оператор неравенства. Выражение A !== B истинно только в случае, когда A не равняется B.
Выражение text !== "весна" читается как «переменная text не равняется значению "весна"».
Выражение text !== "весна" && text !== "лето" && text !== "осень" && text !== "зима" читается как «text не равняется "весна" И при этом не равняется "лето" И не является…».
В результате получаем цикл, который будет работать до тех пор, пока введённый пользователем текст не будет равнятся ни одному из этих значений. Как только он будет равняться одному из них — программа завершит работу.
Весь код и выражения можно протестировать в любом браузере. Для этого нужно нажать Ctrl+Shift+I или F12 (зависит от браузера), вставить нужный код или выражение в консоль и нажать Enter.
Answers & Comments
Решение первое (с использованием списка):
while (!["весна", "лето", "осень", "зима"].includes(prompt()));
Объяснение:
["весна", "лето", "осень", "зима"] — список из строк, которые содержат указанные слова.
.includes — метод списка, принимающий некоторое значение и возвращающий true (истина) либо false (ложь) в зависимости от того, есть ли указанное значение в списке. К примеру, результат вычисления выражения ["весна", "лето", "осень", "зима"].includes(123) — false, поскольку значения 123 нет в данном списке. И наоборот, ["весна", "лето", "осень", "зима"].includes("весна") вернет true, так как значение "весна" в списке есть.
prompt — функция, запрашивающая у пользователя текст и возвращающая его.
Полное выражение ["весна", "лето", "осень", "зима"].includes(prompt()) при вычислении запросит текст у пользователя и вернет true или false в зависимости от наличия введённого пользователем текста в списке ["весна", "лето", "осень", "зима"]
Знак ! обозначает оператор логического отрицания: !true будет вычислено как false, а !false — как true.
Конструкция while( <expression> ){ <code> }; — цикл с условием: код <code> будет выполнятся всё время, пока условие <expression> истино. В данном случае фигурные скобки можно опустить, ибо никакого дополнительного кода цикл выполнять не должен.
В результате мы получаем цикл, который будет вычислять выражение !["весна", "лето", "осень", "зима"].includes(prompt()) раз за разом всё время, пока условие ["весна", "лето", "осень", "зима"].includes(prompt()) (пользователь ввёл что‐то из списка) ложно. Как только он введёт что‐то из списка, цикл прекратит работу, ибо условие !["весна", "лето", "осень", "зима"].includes(prompt()) больше не будет выполняться.
Решение второе (без списка):
let text = prompt();
while (text !== "весна" && text !== "лето" && text !== "осень" && text !== "зима") {
text = prompt();
}
В первой строке объявлена переменная text, значением которой является введённый пользователем текст.
Далее идёт цикл, который при помощи кода text = prompt() запрашивает у пользователя текст снова и снова, пока условие text !== "весна" && text !== "лето" && text !== "осень" && text !== "зима" истино.
Символ && обозначает оператор «логическое И». Выражение A && B истино только в случае, когда выражения A и B истинны одновременно.
Символ !== обозначает оператор неравенства. Выражение A !== B истинно только в случае, когда A не равняется B.
Выражение text !== "весна" читается как «переменная text не равняется значению "весна"».
Выражение text !== "весна" && text !== "лето" && text !== "осень" && text !== "зима" читается как «text не равняется "весна" И при этом не равняется "лето" И не является…».
В результате получаем цикл, который будет работать до тех пор, пока введённый пользователем текст не будет равнятся ни одному из этих значений. Как только он будет равняться одному из них — программа завершит работу.
Весь код и выражения можно протестировать в любом браузере. Для этого нужно нажать Ctrl+Shift+I или F12 (зависит от браузера), вставить нужный код или выражение в консоль и нажать Enter.