Курс по Raku / Основи / Основи на управлението на потока / Условни проверки / Сравняване на стрингове

Тест 2 — условието в if*

Коригирайте програмата и отговорете на въпроса.

.my $password = prompt 'Въведете вашата парола: ';
.
eq =if $password ␣␣ '*&(#&$#Y' {
.    say 'Вярно';
.}
.else {
.    say 'Невярно';
.}

С = в теста, какво прави тази програма?

Винаги отпечатва ‘Вярно’Вашият отговор:  (: Винаги отпечатва ‘Вярно’, Винаги отпечатва ‘Невярно’, Отпечатва ‘Вярно’ за правилни пароли и ‘Невярно’ за неправилни, Отпечатва ‘Невярно’ за правилни пароли и ‘Вярно’ за неправилни :)
Програмата винаги отпечатва ‘Вярно’, защото $password = ’*&(#&$#Y’ е присвояване, което задава новата стойност на променливата $password. Тъй като стойността не е нула или празен низ, тя се счита за True. Паролата, която потребителят въвежда, никога не се проверява в този случай.

Ако въведете ==, тогава програмата ще се провали, тъй като ще се опита да конвертира низовете (потребителската парола и правилната парола) в числа и ще се провали.

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

Тест 1 — Сравняване на стрингове   |   Теренарен оператор