【问题标题】:Why does this code not produce a square 2d-array? What makes it become triangular?为什么这段代码不产生方形二维数组?是什么让它变成三角形?
【发布时间】:2019-08-27 07:58:29
【问题描述】:

我正在尝试打印一个由 0 组成的方形二维数组。我不明白为什么我一直用这段代码得到一个三角形。为什么每打印一行,我就少打印一列?

def ar(i):
    j = i
    for i in range(i):
        for j in range(j):
            print('0', end=" ")
        print()

【问题讨论】:

  • 因为你覆盖了你自己的jfor j in range( j ):
  • 哦,我明白了。谢谢你。有道理。

标签: python arrays dimensional


【解决方案1】:

range(5) 将产生从 0 到 4 的值 - 比输入的数字小一。

i = 5
j = i   # this is overwritten by the loop-j
for _ in range(i):       # on the first i
    for j in range(j):       # j will get 4 at max, so for the next i your j 
        print('0', end=" ")  # only produce a range(4), then (3) ... hence: triangular
    print()

您的内部循环j 会覆盖您的本地j,并且由于range() 的性质,每个外部循环都会减少1。

修复:

你不需要命名循环变量,用_代替:

def ar(i):
    for _ in range(i):
        for _ in range(i): # no j needed at all
            print('0', end=" ")
        print()

ar(5)

输出:

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 2019-12-27
    • 2016-07-23
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2023-03-30
    • 2016-02-08
    相关资源
    最近更新 更多