Курс 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. Пароль, який вводить
користувач, у цьому разі не перевіряється взагалі.Якщо ж набрати
==, програма зламається, бо намагатиметься
перетворити рядки (пароль користувача та правильний пароль) на числа й
зазнає невдачі.