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 回答