题目
编写一个Python程序,要求用户输入一个正整数n,并输出一个大小为n的杨辉三角(Pascal’s Triangle)。
提示:
杨辉三角的性质:每行的第一个和最后一个元素都是1。第n行(从0开始)的第k个元素(从0开始)可以通过公式计算得出:triangle[n][k] = triangle[n-1][k-1] + triangle[n-1][k]
(k > 0 且 k < n)
示例
输入:
请输入一个正整数:5
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
答案
解题思路
这个程序包含三个部分:
- 输入处理:提示用户输入一个正整数n
- 生成杨辉三角:存储杨辉三角的数据元素
- 打印结果:需要调整字符串的格式,使得每行的数字在视觉上对齐
答案代码
def generate_pascals_triangle(n):
if n <= 0:
return [] # 如果n不大于0,则返回空列表
triangle = [[1]] # 初始化杨辉三角的第一行
for i in range(1, n):
row = [1] # 每行的第一个元素是1
for j in range(1, i):
# 每个元素是上一行的相邻两个元素之和
row.append(triangle[i-1][j-1] + triangle[i-1][j])
row.append(1) # 每行的最后一个元素是1
triangle.append(row) # 将生成的行添加到杨辉三角中
return triangle
def print_pascals_triangle(triangle):
n = len(triangle)
# 计算最后一行的宽度,用于对齐
width = len(" ".join(map(str, triangle[-1])))
for row in triangle:
row_str = " ".join(map(str, row))
# 将每行字符串居中打印
print(row_str.center(width))
def main():
# 提示用户输入一个正整数
n = int(input("请输入一个正整数:"))
if n <= 0:
print("请输入一个正整数。")
return
# 生成杨辉三角并打印
triangle = generate_pascals_triangle(n)
print_pascals_triangle(triangle)
if __name__ == "__main__":
main()
更多详细答案可见原文链接 或关注公众号查阅。