【问题标题】:Perl If and Elsif loop helpPerl If 和 Elsif 循环帮助
【发布时间】:2011-04-06 04:51:38
【问题描述】:

好吧,我还是 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 行也是如此。我在原始代码中用箭头和这里。我在做/不做我应该做的事吗?

【问题讨论】:

标签: perl if-statement control-flow


【解决方案1】:
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";

【讨论】:

  • 如果你使用 &&/||,Perl 会更好地工作在表达式中并保留和/或用于流量控制。
【解决方案2】:

if (expr1, expr2) 将忽略 expr1。您的意思是and 还是&amp;&amp;? (另外,如果是这样,您的 elsif 应该正在测试 x&lt;11。)

【讨论】:

  • 感谢您的帮助。对不起,是的,它应该已经测试过了。我没有正确输入。
  • 不完全是。它将执行expr1 并丢弃结果。然后它将执行expr2 并将其结果用于if 条件。
猜你喜欢
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 2014-08-14
  • 2022-11-23
  • 1970-01-01
相关资源
最近更新 更多