如何在Python中将帕斯卡三角(Pascal's Triangle)居中打印为金字塔形
帕斯卡三角金字塔形打印解决方案
核心思路就是用最后一行的总长度作为整个金字塔的基准宽度,让每一行都按这个宽度居中对齐,就能从直角三角转成金字塔形。
修改后的完整代码
def comb(k,n): ans = 1 if (k > n//2): k = n-k for i in range(k): ans *= (n-i) ans //= (i+1) return ans def printPascal(n): x = [] for row in range(n): arr = [] for i in range (row + 1): arr.append(comb(i, row)) x.append(arr) return x n = eval(input("How many rows should there be [3-8]? ")) x = printPascal(n) # 计算最大宽度:取最后一行转成空格分隔字符串后的长度 last_row_str = ' '.join(map(str, x[-1])) max_width = len(last_row_str) # 逐行居中打印 for row in x: row_str = ' '.join(map(str, row)) print(row_str.center(max_width))
效果说明
比如输入n=5时,输出会是:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
逻辑解释
- 先把最后一行转成空格分隔的字符串,它的长度就是整个金字塔的最大宽度——因为最后一行是元素最多的行,自然也是最宽的。
- 遍历每一行时,同样把当前行转成空格分隔的字符串,调用
center(max_width)方法让它在最大宽度范围内居中,再打印即可。
内容的提问来源于stack exchange,提问作者user23482112
相关产品推荐
相关产品推荐

