Консультация № 48272
05.07.2006, 20:04
0.00 руб.
0 2 2
Здравствуйте, вот написал типа программку... но что-то она не работает, не подскажите-ли вы мне где я допустил ошибку,
Заранее всех благодарю.

Приложение:
#!/usr/bin/perl -wprint qq[Привет, как вас зовут?\n];$name = <STDIN>; chomp $name;$answer="";while ($answer == "y") { print qq[$name, угадай число от 0 до 5.\n]; $rand_num = int(rand 5); $user_num = <STDIN>; chomp $user_num; if ($user_num != $rand_num) { print qq[Ответ не верный.\n] } else {print qq[Поздравляю $name, вы угадали!!!];}print "Хотите повторить? (y/n)\n";$answer = <STDIN>; chomp $answer; }

Обсуждение

Неизвестный
05.07.2006, 21:47
общий
это ответ
Здравствуйте, Lperw!

#!/usr/bin/perl -w
print qq[Привет, как вас зовут?\n];
$name = <STDIN>; chomp $name;
$answer="y";
while ($answer =~ "y") { # -->>> для сравнения строк == не используется!!!!
print qq[$name, угадай число от 0 до 5.\n];
$rand_num = int(rand 5);
$user_num = <STDIN>; chomp $user_num;
if ($user_num != $rand_num) {
print qq[Ответ не верный.\n]
}
else {print qq[Поздравляю $name, вы угадали!!!];}
print "Хотите повторить? (y/n)\n";
$answer = <STDIN>; chomp $answer;
}
Неизвестный
06.07.2006, 18:40
общий
это ответ
Здравствуйте, Lperw!
ошибка у вас здесь :
while ($answer == "y") {

для сравнения строк используется операторы (в скобках их эквиваленты для числовых переменных)

eq ( == )
ne (!= )
lt (<)
gt (>)
le (<=)
ge (>=)

возможен вариант использования поиска по шаблону , как была написано в предидущем ответе ( кстати не правильно и синтаксически и логически )
примерно так :

while ($answer =~ /^y$/) {
или
while ($answer =~ m/^y$/) {

синтаксическая ошибка - не указан опреатор поиска - //( m//)
логическая ошибка - совпадение будет в любом слове в котором будет содежаться буква "y". Т.е. если пользователь введет любое сочетание букв в котором окажется и "y", то это будет считаться как утвердительный ответ.(ну это в двух словах). В указаном мной примере будет осуществляться поиск только единственной буквы "y" и ничего больше, т.е. при вводе только одной буквы у ответ будет утвердительным.
Форма ответа