Python实现杨辉三角时输出含多余零,求去除方法
解决杨辉三角输出带零的问题
嘿,我明白你遇到的问题啦——你用n×n的全零数组来存储杨辉三角,但实际上杨辉三角的第i行(从0开始计数)只有i+1个有效元素,剩下的位置都是初始化的0,所以输出时会把这些零也打出来。咱们有两种简单的办法解决这个问题:
方案一:修改输出逻辑,只打印有效元素
不用改数组的创建方式,只需要调整输出的循环范围,让每一行只打印前i+1个元素就行:
n = int(input("range: ")) t = [([0] * n) for i in range(n)] t[0][0] = 1 for i in range(1, n): t[i][0] = 1 t[i][i] = 1 for j in range(1, i): t[i][j] = t[i - 1][j] + t[i - 1][j - 1] # 修改这里的输出循环 for i in range(n): for j in range(i + 1): # 只遍历到第i个元素,对应行的有效长度 print(t[i][j], end="") print("")
运行后输入5,输出就变成:
1
11
121
1331
14641
方案二:优化数组结构,只存储有效元素
如果不想浪费空间存那些零,咱们可以直接给每一行创建对应长度的列表,这样数组里根本不会有零:
n = int(input("range: ")) t = [] t.append([1]) # 初始化第0行 for i in range(1, n): current_row = [1] # 每行开头都是1 # 计算中间的元素 for j in range(1, i): current_row.append(t[i-1][j] + t[i-1][j-1]) current_row.append(1) # 每行结尾都是1 t.append(current_row) # 输出每一行 for row in t: print(''.join(map(str, row)))
这个方案更高效,也更贴合杨辉三角的结构,输出结果同样干净。
内容的提问来源于stack exchange,提问作者Isu
相关产品推荐
相关产品推荐

