때까지 더 간단한 방법은 while
loop 될 것이다.
use strict;
use warnings;
print "Hello, I've thought of a number, do you know what number it is?\n";
sleep (1);
my $int = int(rand (10)) + 1;
print "Try and guess, type in a number between 1 and 10!\n";
while (my $div = <STDIN>) {
chomp $div;
if ($div < $int) {
print "The number I though of is higher than $div, try again?\n";
}
elsif ($div > $int) {
print "The number I though of is lower that $div, try again?\n";
}
else {
print "Amazing, you've guessed mt number\n";
last;
}
}
동안 (말장난 의도) (그것을 위해 야호, 당신은
strict
및
warnings
을 사용하고 구문 오류가 없습니다!) 코드가 이미 매우 좋은이 나는 변경 몇 가지가 있으며, 좀 더 어디 것 개선을 제안합니다.
하지만 먼저 루프를 살펴 보겠습니다. 조건이 참일 경우 프로그램은 루프 while
에 머무를 것입니다. 사용자가 입력 할 수있는 모든 것 (심지어 빈 줄)은 Perl에 의해 true로 간주되기 때문에 이것은 영원한 것이다. 루프를 빠져 나갈 조건이 있기 때문에 괜찮습니다. if
의 else
부분에 있습니다. last
문은 Perl에게 루프를 종료하도록 지시합니다. else
이 실행되지 않으면 다시 while
블록의 시작으로 돌아가고 사용자는 다시 시도해야합니다. 영원히. 당신이 그것을 을 사용하지 않은과 같이 $i
필요하지 않습니다 - - 세 가지 별도의 if
문을 사용 :
의 변화는 내가했다. print
제안을 필요가 없습니다 괄호 ()
에 - 세 가지 조건 중 하나만이 경우에는 사실 일 수 있기 때문에, 나는 1 로 병합 : - 당신은 그들이 무엇에 대한 귀하의 변수 이름을 지정해야하지 그들이 아르. $int
은 좋은 이름이 아닙니다. 나는 $random
또는 심지어 $random_number
으로 갈 것입니다. 나중에 코드로 돌아 가야하는 경우 자세한 내용이 중요합니다. - use feature 'say';
으로 활성화 할 수있는 function called say
이 있습니다. print "stuff\n"
에 해당하는 say "stuff"
을 추가합니다.
편집 :
당신이, 당신이 다른 if
을 추가 할 수 있습니다 직접하는 번호를 사용자가 입력 한 관련이없는 다른 조건을 추가하려면.
while (my $div = <STDIN>) {
chomp $div;
if ($div eq 'quit') {
print "You're a sissy... the number was $int. Goodbye.\n";
last;
}
if ($div < $int) {
print "The number I though of is higher than $div, try again?\n";
}
elsif ($div > $int) {
print "The number I though of is lower that $div, try again?\n";
}
else {
print "Amazing, you've guessed mt number\n";
last;
}
}
사용자가 전화 번호를 입력했는지 확인해도됩니다. 단어 나 문자를 입력하면 현재 코드에서 경고가 나타납니다. 그렇게하려면 정규식이 필요합니다.perlre에서 해당 내용을 읽어보십시오. m//
은 =~
과 함께 작동하는 match operator입니다. \D
은 숫자가 아닌 문자 (0-9)와 일치합니다. next
은 while
블록의 나머지 부분을 단계적으로 처리하고 while
조건 확인부터 시작합니다.
while (my $div = <STDIN>) {
chomp $div;
if ($div =~ m/\D/) {
print "You may only guess numbers. Please try again.\n";
next;
}
# ...
}
따라서, 전체 검사 수단 '물건의 모양은 사용자가 입력 한하고있는 수보다 다른 것을 전혀있을 경우, 불평 그를 다시 해보자'.
루프가 필요 없다는 것을 알고 있더라도 거기에는 루프가 없습니다. 정확히 당신이 알고 싶은 것은 무엇입니까? 루프 구문? – Ingo
until 루프를 시험해보고 내가 필요한 것이 있는지 살펴 보겠습니다. 나는 그렇다고 생각한다. – joesh
최근 [codereview] (http://codereview.stackexchange.com/a/23556/21609)에서 "내 번호 추측"기능이 풍부한 구현을 발표했습니다. 영감을 얻기 위해 그곳을 바라 볼 수도 있습니다. – amon