Raku-Kurs / Grundlagen / Grundlagen des Kontrollflusses / Bedingte Überprüfungen / Vergleichen von Zeichenketten
Quiz 2 — die Bedingung in
if*
Korrigieren Sie das Programm und beantworten Sie die Frage.
| . | my $password = prompt 'Geben Sie Ihr Passwort ein: '; |
| . | |
| eq = | if $password ␣␣ '*&(#&$#Y' { |
| . | say 'Richtig'; |
| . | } |
| . | else { |
| . | say 'Falsch'; |
| . | } |
Was macht dieses Programm mit dem = im Test?
| Druckt immer „Richtig“ | Ihre Antwort: (: Druckt immer „Richtig“, Druckt immer „Falsch“, Druckt „Richtig“ für richtige Passwörter und „Falsch“ für falsche, Druckt „Falsch“ für richtige Passwörter und „Richtig“ für falsche :) |
Das Programm druckt immer „Richtig“, weil
Wenn Sie
$password =
’*&(#&$#Y’ eine Zuweisung ist, die den neuen Wert der
$password-Variablen festlegt. Da der Wert weder null noch
eine leere Zeichenkette ist, wird er als True betrachtet.
Das vom Benutzer eingegebene Passwort wird in diesem Fall nie
überprüft.Wenn Sie
== eingeben, wird das Programm
fehlschlagen, da es versucht, die Zeichenketten (das Benutzerpasswort
und das richtige Passwort) in Zahlen umzuwandeln und dabei scheitert.