Perl 如何使for循环每次增加1
我有一个Perl循环Perl 如何使for循环每次增加1,perl,for-loop,Perl,For Loop,我有一个Perl循环 my $i = 0; for ($i = 4, $i < 11, $i++) { print "$i\n"; } my$i=0; 对于($i=4,$i
my $i = 0;
for ($i = 4, $i < 11, $i++) {
print "$i\n";
}
my$i=0;
对于($i=4,$i<11,$i++){
打印“$i\n”;
}
我不知道为什么,但是我没有打印出来
4.
5.
6.
7.
8.
9
10
在我的控制台的单独行中,它只打印出5,然后终止Perl使用分号来分隔for循环的参数 试试这个:
my $i = 0;
for ($i = 4; $i < 11; $i++) {
print "$i\n";
}
my$i=0;
对于($i=4;$i<11;$i++){
打印“$i\n”;
}
Perl使用分号来分隔for循环的参数
试试这个:
my $i = 0;
for ($i = 4; $i < 11; $i++) {
print "$i\n";
}
my$i=0;
对于($i=4;$i<11;$i++){
打印“$i\n”;
}
Perl有两种类型的用于循环,即(用于(INIT;COND;STEP)
)和(用于VAR(LIST)
)
您试图使用第一个表单,但您的代码不包含代码>,因此Perl将其解析为第二种形式;i、 e.它试图迭代列表中的元素,$i=4,$i<11,$i++
,其计算结果为4,1,4
,并将$i
设置为5
详细说明:$i=4
计算为4
,并将$i
设置为4
,作为副作用$i<11
将$i
(当前为4
)的值与11
进行比较,后者的计算结果为1
(true)$i++
评估$i
(4
)的当前值,并作为副作用增加$i
,将其设置为5
您没有指定循环变量,因此Perl在默认情况下使用$\uuu
但是,您的循环体根本不使用$\ucode>,只在每次迭代中打印$i
的最终值,即5
。如果改用打印$\uu
,您可以更好地看到正在发生的事情:
for ($i = 4, $i < 11, $i++) {
print "$_\n";
}
要获得所需的结果,请为($i=4;$i<11;$i++)编写,
或完全转换为列表迭代变量:
for my $i (4 .. 10) {
print "$i\n";
}
Perl有两种类型的for
循环,(for(INIT;COND;STEP)
)和(for VAR(LIST)
)
您试图使用第一个表单,但您的代码不包含代码>,因此Perl将其解析为第二种形式;i、 e.它试图迭代列表中的元素,$i=4,$i<11,$i++
,其计算结果为4,1,4
,并将$i
设置为5
详细说明:$i=4
计算为4
,并将$i
设置为4
,作为副作用$i<11
将$i
(当前为4
)的值与11
进行比较,后者的计算结果为1
(true)$i++
评估$i
(4
)的当前值,并作为副作用增加$i
,将其设置为5
您没有指定循环变量,因此Perl在默认情况下使用$\uuu
但是,您的循环体根本不使用$\ucode>,只在每次迭代中打印$i
的最终值,即5
。如果改用打印$\uu
,您可以更好地看到正在发生的事情:
for ($i = 4, $i < 11, $i++) {
print "$_\n";
}
要获得所需的结果,请为($i=4;$i<11;$i++)编写,
或完全转换为列表迭代变量:
for my $i (4 .. 10) {
print "$i\n";
}
使用代码>而不是,
使用
而不是,
通常我们不回答打字错误问题。改为发表评论,并投票赞成因打字错误而结束。@ThomasWeller收到了,谢谢提醒。通常我们不会回答打字错误问题。改为发表评论并投票结束,因为有一个打字错误。@ThomasWeller得到了,谢谢你的提醒。这可能对OP来说太多细节了,这埋下了lede:对于我的$i(4..10){}
更简单更干净。对于OP来说,这可能太多细节了,它埋下了lede:对于我的$i(4..10){}
更简单、更干净。