求助
a=[]b=[]
for i in range(1,11):
for j in range(1,i+1):
if j==1 or j==i:
print(1,end="")
a.append(1)
if j>1 and j==i:
for k in range(i-2):
n=a+a
b.append(n)
else:
c=b.pop()
print(c,end="")
a.append(c)
print()
a[:]=[]
一只提示b为空列表,实在找不出哪里错了{:10_266:} 应该是这一句吧c=b.pop()
b如果是空,那没法pop
因为你每次 for 循环都必须会执行if-else 其中一个,当执行 if 时,符合条件才会向 b 列表添加元素
而当执行 else 时,并不能保证 b 列表一定有元素,调用 pop 方法时就会抛出错误
Twilight6 发表于 2022-9-20 17:34
因为你每次 for 循环都必须会执行if-else 其中一个,当执行 if 时,符合条件才会向 b 列表添加元素
...
但我觉得在j为2的时候b一定会有元素存入的,所以后面的运算b就都有元素了{:10_266:} 芝士雪豹 发表于 2022-9-20 17:50
但我觉得在j为2的时候b一定会有元素存入的,所以后面的运算b就都有元素了
但是你是从1开始的啊,只要有一个不满足,程序直接就崩了 wp231957 发表于 2022-9-20 18:28
但是你是从1开始的啊,只要有一个不满足,程序直接就崩了
没听明白具体点可以吗大佬{:10_266:} 芝士雪豹 发表于 2022-9-20 18:41
没听明白具体点可以吗大佬
总之就是你的设计思路有问题
如果你一定要b.pop
那你就加一句if b: b.pop() 首先没看懂,你这个程序想实现什么,再有,报错的原因是i=2,y=1时,直接跳到c=b.pop(),而这时候b还是空的。而且,当i=2,y=2时,range(i-2)是个空的,所以不知道你这个程序想实现什么逻辑 lassiter 发表于 2022-9-20 22:36
首先没看懂,你这个程序想实现什么,再有,报错的原因是i=2,y=1时,直接跳到c=b.pop(),而这时候b还是空的 ...
是输出杨辉三角。i=2,j=1时不应该运行第一个if后面的语句吗 芝士雪豹 发表于 2022-9-20 22:44
是输出杨辉三角。i=2,j=1时不应该运行第一个if后面的语句吗
经过断点查询,发现你是在i=3,j=2之前,b一直是空的,没有数据存入,当i=3,j=2时,跳到else语句,c=b.pop()就会报错。 建议你不要用条件判断,既然知道杨辉三角下一行比上一行多一个数,正常使用循环,前后加个1就行
a=[,] #初始化前两行
num=int(input("请输入杨辉三角层数,不少于2:"))
for i in range(num-2):
temp=
last=a[-1]
for j in range(len(last)-1):
temp.append(last+last)
temp.append(1)
a.append(temp)
print(a) lassiter 发表于 2022-9-21 21:58
经过断点查询,发现你是在i=3,j=2之前,b一直是空的,没有数据存入,当i=3,j=2时,跳到else语句,c=b.p ...
谢谢了,我已经改正了,把i-2改为i-1就可以运行了
页:
[1]