帕斯卡三角构建问题:输出不符合预期,寻求解决方案
修正帕斯卡三角代码的问题
问题分析
你的代码存在两个核心问题:
- 生成帕斯卡三角的逻辑未封装到
generate_pascals_triangle函数中,调用该函数时会触发NameError。 - 打印逻辑仅做了简单的空格分隔,未实现居中对齐,无法输出金字塔样式的预期效果。
修正后的完整代码
def generate_pascals_triangle(num_rows): triangle = [] for i in range(num_rows): row = [1] * (i + 1) for j in range(1, i): row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j] triangle.append(row) return triangle def print_pascals_triangle(triangle): # 计算最长行的长度,用于居中对齐 max_width = len(" ".join(map(str, triangle[-1]))) if triangle else 0 for row in triangle: row_str = " ".join(map(str, row)) # 居中打印每行,生成金字塔样式 print(row_str.center(max_width)) try: num_rows = int(input("Enter the number of rows for Pascal's Triangle: ")) if num_rows <= 0: print("Please enter a positive integer.") else: pascals_triangle = generate_pascals_triangle(num_rows) print_pascals_triangle(pascals_triangle) except ValueError: print("Invalid input. Please enter a valid integer.")
修正说明
- 封装生成函数:将原有的三角生成逻辑完整放入
generate_pascals_triangle函数内,确保函数调用时能正常执行。 - 添加居中对齐:在打印函数中先计算最后一行(最长行)的字符串长度,再用
str.center()方法将每行居中显示,实现金字塔样式的输出效果。
内容的提问来源于stack exchange,提问作者Harsh Raj
相关产品推荐
相关产品推荐

