Loop给出了其他结果

时间:2015-04-25 22:22:51

标签: python delphi

我在这里有这个python代码:

spalte=5
for x in range(spalte):
    print x 
    print spalte 
    for i in range(spalte-1):
        print i 
        print spalte-1

这里的pascal / delphi循环:

spalte=5
for x := 0 to spalte do
begin
  writeln(x);
  writeln(spalte);
  for i := 0 to (spalte-1) do
    writeln(i);
    writeln(spalte-1);
end;

我从python循环中获取正确的值,但在pascal循环中,值是不同的。 这与嵌套循环有什么关系吗?

2 个答案:

答案 0 :(得分:3)

你必须注意到

for i in range(spalte):

不是

的python等价物
for i := 0 to spalte do

实际上python range(n)遍历从0到n-1(不包括n)的每个值,而pascal循环从0到n(包括n)

这是对pascal程序最嵌套循环中缺少的begin / end的补充

答案 1 :(得分:1)

基于@Amxx观察的

[更新]

for x := 0 to spalte-1 do
begin
  writeln(x);
  writeln(spalte);
  for i := 0 to (spalte-1-1) do
    begin
      writeln(i);
      writeln(spalte-1);
    end;
end;

您的pascal代码等同于:

for x in range(spalte+1):
    print x 
    print spalte
    for i in range(spalte):
        print i 
    print spalte-1