Perl 循环增量值增加超过其限制的三部分

Perl 循环增量值增加超过其限制的三部分,perl,for-loop,increment,nested-loops,Perl,For Loop,Increment,Nested Loops,我正在用Perl编写一些代码来测试数字,并确定它们的所有数字是完全偶数还是完全奇数。我用$ARGV[0]=3和$ARGV[1]=1运行程序。我遇到了一些问题,添加了一行代码,以便在每次外部循环运行时检查$n的值。$n的值分别为1、2和2。我想知道为什么n美元超过1美元 这是我的密码: #!/usr/bin/perl use warnings; my $even = 0; my $odd = 0; my $limit = $ARGV[0]; #highest number considered

我正在用Perl编写一些代码来测试数字,并确定它们的所有数字是完全偶数还是完全奇数。我用$ARGV[0]=3和$ARGV[1]=1运行程序。我遇到了一些问题,添加了一行代码,以便在每次外部循环运行时检查$n的值。$n的值分别为1、2和2。我想知道为什么n美元超过1美元

这是我的密码:

#!/usr/bin/perl
use warnings;

my $even = 0;
my $odd = 0;
my $limit = $ARGV[0]; #highest number considered
my $places = $ARGV[1]; #number of places in said number

for($x = 1; $x <= $limit; $x++){

my @z;

my $tot = 0;

my $c = $x;

for($n = 1; $n <= $places; $n++){
    $z[$n] = $c % 2;
    $tot = $tot + $z[$n];
    $c = $c - $z[$n];
    if($c == 0){
        last;
    }
    $c = $c / 10;
}

print $n;

if ($tot == 0) {
    $even++;
}elsif($tot == 1) {
    $odd++;
}

}

print $even . "\n";
print $odd; 

我以前没有用Perl编写代码,如果有点不雅观的话,很抱歉。

您正在循环后打印$n的值。循环$n的第一次迭代设置为1,在循环$n递增$n++之后,然后是$n1,因此for循环终止,因此打印2。

您正在循环后打印$n的值。循环$n的第一次迭代被设置为1,在循环$n被递增$n++之后,然后是$n1,因此for循环终止,因此2被打印。

我正在用Perl编写一些代码来测试数字,并确定它们的所有数字是完全偶数还是完全奇数

以下内容无法回答您的问题,但可能会有所帮助:

use strict;
use warnings;

my $n = 2468;
my $c;

$c += $_ % 2 for split '', $n;

if ( !$c) {
    print "$n has all even digits.\n";
}
elsif ( $c  == length $n ) {
    print "$n has all odd digits.\n";
}
else {
    print "$n has a mixture of even and odd digits.\n";
}
拆分将数字拆分为数字,并对每个数字执行$c+=$\u2。偶数mod 2返回0,因此如果$c为零,则该数字只有偶数位数。Odd mod 2返回1,所以如果$c与字符串$n的长度相同,则数字只有奇数。否则,数字由偶数和奇数混合而成。

我正在用Perl编写一些代码来测试数字,并确定它们的所有数字是完全偶数还是完全奇数

以下内容无法回答您的问题,但可能会有所帮助:

use strict;
use warnings;

my $n = 2468;
my $c;

$c += $_ % 2 for split '', $n;

if ( !$c) {
    print "$n has all even digits.\n";
}
elsif ( $c  == length $n ) {
    print "$n has all odd digits.\n";
}
else {
    print "$n has a mixture of even and odd digits.\n";
}

拆分将数字拆分为数字,并对每个数字执行$c+=$\u2。偶数mod 2返回0,因此如果$c为零,则该数字只有偶数位数。Odd mod 2返回1,所以如果$c与字符串$n的长度相同,则数字只有奇数。否则,该数字由偶数和奇数混合而成。

当我按照Kevin的建议更改代码时,会收到错误消息$places is undefined$0保存正在运行的程序的字符串。最初您的代码是正确的,应该使用$ARGV[0]和$ARGV[1]谢谢,但是$nw的值仍然存在问题。当我按照Kevin的建议更改代码时,我收到错误消息$places is undefined$0保留正在运行的程序的字符串。您一开始是正确的,应该使用$ARGV[0]和$ARGV[1]谢谢,但是$nIt的值仍然存在问题。看起来逻辑仍然需要一些工作,如果需要,我可以帮助您。我的另一个评论是,强烈建议在程序开始时使用警告和严格使用。没有这些,很容易犯一些Perl很乐意忽略的简单逻辑错误。@i5a1ah下次使用formy$n=0$n@terdon-或者我的$n 0$地点{……代替C风格循环。Ya,C++是我的第一语言,所以我倾向于使用它的样式……我知道一些东西,看起来逻辑仍然需要一些工作,如果需要的话,我可以帮助你。另外一个我的评论是,强烈建议在你的程序开始时使用警告和使用严格。没有这些,很容易犯一些简单的逻辑错误,Perl会很乐意忽略。@ I5A1AH下一次使用FYY $N=0;$N@ Terdo-或者也许是我的$N 0个……{…代替C型循环。Ya,C++是我的第一语言,所以我倾向于使用它的样式……我想知道一些东西。