Курс языка программирования Raku / Основы / Проверка условий / Сравнение строк

Тест 2: Условие в if

Исправьте программу и ответьте на вопросы.

. my $password = prompt 'Enter your password: ';
.  
eq = if $password ␣␣ '*&(#&$#Y' {
.     say 'Correct';
. }
. else {
.     say 'Incorrect';
. }

Что программа делает со знаком = в тесте?

Всегда выводит ‘Correct’ Ваш ответ:  (: Всегда выводит ‘Correct’, Всегда выводит ’Incorrect’, Выводит ’Correct’ для правильных паролей и ‘Incorrect’ для неправильных, Выводит ’Incorrect’ для правильных паролей ’Correct’ для неправильных :)
Программа всегда выводит ’Correct’, потому что $password = '*&(#&$#Y' — это присвоение, устанавливающее новое значение в переменную $password. Так как значение не является нулем или пустой строкой, оно считается как True. Пароль, введенный пользователем, в этом случае никогда не проверяется.

Если вы напишите ==, то программа не будет работать, так как она попытается привести строки (пароль пользователя и правильный пароль) к числам и потерпит неудачу.

Навигация по курсу

Проверка условий / Сравнение чисел   |   Проверка условий / Тернарный оператор


💪 Or jump directly to the exercises to this section.

Эта страница переведена с английского человеком. Оригинальный текст на английском языке. О переводе.

Переводы этой страницы: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська