当前位置: 首页 > news >正文

Python小项目实战:杨辉三角

题目要求

编写python程序,实现输入正整数n,输出一个n层的杨辉三角,要求打印显示的时候左右对称
比如,输入7,返回结果如图所示
在这里插入图片描述

解决思路

  1. generate_pascals_triangle(n) 函数:
    生成一个包含 n 层的杨辉三角。
    初始化第一层为 [1]。
    对于每一层,从第二层开始,计算每个元素为上一层的两个相邻元素之和。
  2. print_pascals_triangle(triangle) 函数:
    格式化并打印杨辉三角,每层的元素居中显示。
  3. 主程序:
    从用户输入获取正整数 n。
    调用生成和打印函数来生成并显示杨辉三角。

代码演示

下述代码可复制在vscode中运行

def generate_pascals_triangle(n):if n <= 0:return []triangle = [[1]]  # 第一层是单独的1for i in range(1, n):row = [1]  # 每一层的第一个元素是1for j in range(1, i):# 每个元素是上一层的两个相邻元素之和row.append(triangle[i-1][j-1] + triangle[i-1][j])row.append(1)  # 每一层的最后一个元素是1triangle.append(row)return triangledef print_pascals_triangle(triangle):for row in triangle:print(' '.join(map(str, row)).center(2*n))if __name__ == "__main__":n = int(input("请输入一个正整数n: "))if n <= 0:print("请输入一个正整数!")else:triangle = generate_pascals_triangle(n)print_pascals_triangle(triangle)

关键函数详解

row.append 是 Python 列表(list)对象的方法之一,用于在列表的末尾添加一个新的元素。
在 Python 中,列表是一种可变的序列类型,可以动态地增删元素。append 方法是列表对象的一个内置方法,用于在列表的末尾添加一个新的元素。

  1. 语法
list.append(element)
  • list 是你要操作的列表对象。
  • element 是你要添加到列表末尾的元素。
  1. 示例
# 创建一个空列表
my_list = []# 使用 append 方法在列表末尾添加元素
my_list.append(1)
print(my_list)  # 输出: [1]my_list.append(2)
print(my_list)  # 输出: [1, 2]my_list.append(3)
print(my_list)  # 输出: [1, 2, 3]

在生成杨辉三角的程序中,row.append 被用来在当前行(row)的末尾添加新的元素。

  1. 在杨辉三角中的使用
    在生成杨辉三角的过程中,每一行的第一个和最后一个元素都是 1,中间的元素是通过上一行的两个相邻元素之和计算出来的。row.append 用于将这些计算出来的元素添加到当前行的末尾。
for i in range(1, n):row = [1]  # 每一层的第一个元素是1for j in range(1, i):# 每个元素是上一层的两个相邻元素之和row.append(triangle[i-1][j-1] + triangle[i-1][j])row.append(1)  # 每一层的最后一个元素是1triangle.append(row)
  • row = [1]:初始化当前行,首元素为 1。
  • row.append(triangle[i-1][j-1] + triangle[i-1][j]):将当前行的中间元素添加到 row 中,这些元素是通过上一行的两个相邻元素之和计算出来的。
  • row.append(1):在当前行的末尾添加 1,因为杨辉三角的每一行的最后一个元素都是 1。
  • 通过这种方式,逐行构建杨辉三角,并将每一行添加到 triangle 列表中,最终生成一个包含 n 层的杨辉三角。
http://www.lryc.cn/news/409732.html

相关文章:

  • java注解与反射(非常详细, 带有很多样例)
  • 模拟实现短信登录功能 (session 和 Redis 两种代码实例) 带前端演示
  • C# Parallel设置最大并发度
  • 【java】力扣 反转字符串中的单词
  • 科学设计程序员面试内容,破解“八股文”之弊
  • 蓝牙BlueZ验证使用记录
  • 【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化
  • JumpServer关闭admin mfa验证
  • Kafka知识总结(选举机制+控制器+幂等性)
  • 2024非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输!
  • python 写一个年会抽奖的demo
  • C++ OpenCV 实现多张图片叠加 叠加文字
  • 用 apifox cli 命令行运行本地接口出现TypeError:Invalid IP address: undefined
  • PyQt6简易案例代码GUI界面小工具——实现增、删、查、改(练手正合适)
  • JavaScript快速入门指南
  • Esbuild介绍
  • UnityShaderUI编辑器扩展
  • 分布式事务——2PC 代码示例
  • vue实现简易的全局加载动画效果
  • Linux网络工具“瑞士军刀“集合
  • Sentinel隔离、降级、授权规则详解
  • C++11 列表初始化与类型声明
  • 缓存策略自定义:Laravel应用性能优化秘籍
  • python连接sqlserver,封装操作
  • 原生PHP/JS自主开发的交友内核框架婚恋交友系统V10
  • 如何在Java、Python、GO程序中使用AI人脸识别API接口
  • 在vue使用MQTT
  • DNS、网关、IP、DHCP
  • vue2 vue3 props 的处理机制
  • C++第十弹 ---- vector的介绍及使用