我一直在试着试着用这个,但它似乎没有点击。如果我有一个包含6个数字的数组:
@a = (1,2,3,4,5,6)1 1(因为2-1 =1,4-3 =1,等等)
发布于 2014-07-25 11:18:00
注意:永远不要使用$a或$b,它们很特殊(sort使用它们).通常情况下,最好给变量一个描述性的名称,命名它是什么,而不是它是什么类型的变量。
for ( my $index = 0; $index < scalar( @pairs ); $index += 2 ) {
my $first = $pairs[ $index + 0 ];
my $second = $pairs[ $index + 1 ];
my $pair = $index / 2;
my $difference = $second - $first;
print "the difference of pair $pair is $difference\n";
}发布于 2014-07-25 11:19:20
试试这个:
use strict;
use warnings;
my $index = 1;
my @a = (1,2,3,4,5,6);
for (@a) {
if ($index % 2 == 0) {
my $diff = $_ - $a[$index-2];
print $diff;
}
$index++;
}发布于 2014-07-25 11:36:06
我觉得你应该把你早些时候的尝试贴出来。在我看来,最好的学习方法是从你的错误中吸取教训,而不是得到一个正确的解决方案。
对于这个问题,我想我会在第一部分中使用C风格的For -循环,因为它很简单,而且如果出现新的需求,可以很容易地进行调整。
使用常规Perl样式的for-循环可以轻松地解决第二个问题。
use strict;
use warnings; # always use these two pragmas
my @nums = 1..6;
my @idx;
for (my $n = 0; $n <= $#nums; $n += 2) { # loop from 0 to max index, step 2
push @idx, $n; # store number in @idx
}
print "Indexes: @idx\n";
my @diff;
for my $n (0 .. $#nums - 1) { # loop from 0 to max index minus 1
push @diff, $nums[$n + 1] - $nums[$n]; # store diff in @diff
}
print "Diff: @diff\n";输出:
Indexes: 0 2 4
Diff: 1 1 1 1 1https://stackoverflow.com/questions/24954380
复制相似问题