Курс по Raku / Основи / Основи на управлението на потока / Условни проверки / Сравняване на стрингове
Тест 2 — условието в
if*
Коригирайте програмата и отговорете на въпроса.
| . | my $password = prompt 'Въведете вашата парола: '; |
| . | |
| eq = | if $password ␣␣ '*&(#&$#Y' { |
| . | say 'Вярно'; |
| . | } |
| . | else { |
| . | say 'Невярно'; |
| . | } |
С = в теста, какво прави тази програма?
| Винаги отпечатва ‘Вярно’ | Вашият отговор: (: Винаги отпечатва ‘Вярно’, Винаги отпечатва ‘Невярно’, Отпечатва ‘Вярно’ за правилни пароли и ‘Невярно’ за неправилни, Отпечатва ‘Невярно’ за правилни пароли и ‘Вярно’ за неправилни :) |
Програмата винаги отпечатва ‘Вярно’, защото
Ако въведете
$password =
’*&(#&$#Y’ е присвояване, което задава новата стойност на
променливата $password. Тъй като стойността не е нула или
празен низ, тя се счита за True. Паролата, която
потребителят въвежда, никога не се проверява в този случай.Ако въведете
==, тогава програмата ще се провали, тъй като ще
се опита да конвертира низовете (потребителската парола и правилната
парола) в числа и ще се провали.