0

わかりました、私はまだ Perl の初心者なので、この質問に対する答えはかなり明白に思えるかもしれませんが、私は Python でいくつかの作業を行っており、if、elsif、else ループの学習で問題に遭遇しました。具体的には、それらが適切に機能しないことです。これが私のコードです:

my $x = 0;
print "X has been set to ". $x .".\n";

while ($x<11)
{
  $x++;
  print "The value of x is now ". $x .".\n";
  if ($x>4, $x<7){
      print "Something\n";
      system ("Pause");
  }

  elsif ($x>7, $x>11){ #<--Here
  print "Something else\n";
  system ("Pause");
  }

  elsif ($x==11){
      print "Last line\n";
  }
} #<-- and Here
system "Pause";

おそらく私の問題は今では明らかですが、そうでない場合、問題は式を評価していないように見えることです。いずれにせよ、最初に見つけたループ (この場合は if ループ) を出力するだけです。削除するかコメントアウトすると、最初の elsif ループに直接進みます。つまり、x の値に関係なく、最初に見つかったループを評価せずに出力します。追加したところ

use strict;
use warnings;

「16行目のvoidコンテキストでの数値gt(>)の無用な使用」という警告が表示され、24行目でも同じことが発生しました。元のコードでそれらを矢印とここでマークしました。私は何かをしていますか/私がすべきことをしていませんか?

4

2 に答える 2

4

if (expr1, expr2)無視しexpr1ます。またはという意味でしたand&&?(また、そうであれば、あなたelsifはテストする必要がありますx<11。)

于 2011-04-06T04:56:14.930 に答える
4
use strict;
use warnings;

while ($x<11)
{
  $x++;
  print "The value of x is now ". $x .".\n";
  if ($x>4 and $x<7){
      print "Something\n";
      system ("Pause");

  }elsif ($x>7 and $x>11){ #<--Here
    print "Something else\n";
    system ("Pause");

  }elsif ($x==11){
      print "Last line\n";
  }
} #<-- and Here
system "Pause";
于 2011-04-06T04:56:24.060 に答える