a = [1]*10
for i in range(len(a)):
a[i] = [1]*(i+1)
for x in range(len(a)):
print(a[x])
for y in range(len(a)):
if ya[x+1][y+1] = a[x][y]+a[x][y+1
最后的语句为什么会超出索引范围啊
Traceback (most recent call last):
File "D:/python/p25杨辉三角形.py", line 24, in
a[x+1][y+1] = a[x][y]+a[x][y+1]
IndexError: list index out of range
y取值最大值为长度减去1,那么y+1就等于a的长度,作为下标就越界了。因为下标范围是0-长度减去1
找到原因了,因为a的索引值就到9,所以到最后一次循环a[x+1][y+1] = a[x][y]+a[x][y+1],这个语句就已经超出范围了,我在外层的循环检测X=9就跳出循环,就不会报错了
a = [1]*10
for i in range(len(a)):#生成一个递增的二维列表
a[i] = [1]*(i+1)
for x in range(len(a)):
print()
for z in a[x]: #目的是去掉列表的中括号
print(z,end=' ')
if x ==9:# x=9的时候跳出循环,不在执行内层循环,防止a[x+1][y+1]超出索引范围
break
for y in range(len(a)):
if y<x:
a[x+1][y+1] = a[x][y]+a[x][y+1] #计算下一层的值