Python 为什么这段代码不生成一个二维正方形数组?是什么使它变成三角形的?
我想打印一个0的正方形二维数组。我不明白为什么我一直用这个代码得到一个三角形。为什么我每打印一行,就少打印一列Python 为什么这段代码不生成一个二维正方形数组?是什么使它变成三角形的?,python,arrays,dimensional,Python,Arrays,Dimensional,我想打印一个0的正方形二维数组。我不明白为什么我一直用这个代码得到一个三角形。为什么我每打印一行,就少打印一列 def ar(i): j = i for i in range(i): for j in range(j): print('0', end=" ") print() 范围(5)将产生从0到4的值-比输入的数字少一个 i = 5 j = i # this is overwritten by the loop-j
def ar(i):
j = i
for i in range(i):
for j in range(j):
print('0', end=" ")
print()
范围(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
修正:
您不需要命名的循环变量,用\ucode>替换:
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
因为你覆盖了你自己的j
<代码>在范围内(
j
):
哦,我明白了。非常感谢。有道理。