当前位置: 首页 > 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 层的杨辉三角。

相关文章:

Python小项目实战:杨辉三角

题目要求 编写python程序&#xff0c;实现输入正整数n&#xff0c;输出一个n层的杨辉三角&#xff0c;要求打印显示的时候左右对称 比如&#xff0c;输入7&#xff0c;返回结果如图所示 解决思路 generate_pascals_triangle(n) 函数: 生成一个包含 n 层的杨辉三角。 初始化第…...

java注解与反射(非常详细, 带有很多样例)

下面是详细地讲解 Java 中的注解与反射&#xff0c;并提供了很多的示例来帮助理解。 Java 注解&#xff08;Annotations&#xff09; 1. 注解的基本概念 注解&#xff08;Annotation&#xff09;是 Java 5 引入的一种用于为代码元素&#xff08;类、方法、字段、参数等&…...

模拟实现短信登录功能 (session 和 Redis 两种代码实例) 带前端演示

目录 整体流程 发送验证码 短信验证码登录、注册 校验登录状态 基于 session 实现登录 实现发送短信验证码功能 1. 前端发送请求 2. 后端处理请求 3. 演示 实现登录功能 1. 前端发送请求 2. 后端处理请求 校验登录状态 1. 登录拦截器 2. 注册拦截器 3. 登录完整…...

C# Parallel设置最大并发度

背景 以前用Parallel都是直接用&#xff0c;今天在处理pdf时发现不是很快&#xff0c;特别是有时居然卡死了&#xff0c;异常是有处理的&#xff0c;但没有爆出来&#xff0c;不知道问题在哪。 老老实实不用多线程&#xff0c;一个多小时觉得还是太累。 用的话&#xff0c;部…...

【java】力扣 反转字符串中的单词

目录 题目描述题目描述思路代码 题目描述 151.反转字符串中的单词 题目描述 思路 主要是利用快慢指针和字符串的截取 还要了解去掉首尾空格的函数是trim 那s"the sky is blue"举例 这个例子是没有首尾空格的&#xff0c;以防万一&#xff0c;我们不管有没有&#…...

科学设计程序员面试内容,破解“八股文”之弊

“八股文”在实际工作中是助力、阻力还是空谈&#xff1f; 作为现在各类大中小企业面试程序员时的必问内容&#xff0c;“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢&#xff1f;有IT人士不禁发出疑问&#xff1a;程序员面试考…...

蓝牙BlueZ验证使用记录

最近使用的一款AICSemi AIC8800D8芯片做的WiFiBT二合一模组&#xff0c;该模组WiFi使用SDIO通信&#xff0c;BT使用UART通信&#xff0c;供应商丢了一份驱动&#xff0c;包含了三个目录&#xff1a;aic8800_bsp、aic8800_fdrv和aic8800_btlpm&#xff0c;而蓝牙部分提供了lbh_s…...

【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 前言 上节课完成了里程计数据与坐标变换发布&#xff0c;但是还没有测试&#xff0c;本节进行测试&#xff0c;测试之前需要知道一件事&#xff0c;上位机也就是开发板一般不做可视化用&#xff0c;因…...

JumpServer关闭admin mfa验证

背景 因为上一次启动了mfa验证&#xff0c;但是没有验证就关机重启&#xff0c;导致再开机输入密码后需要mfa绑定&#xff0c;但是怎么也无法绑定成功&#xff0c;导致无法登录。 故希望通过后台取消mfa的验证 解决方法 1. 进入docker docker exec -it jms_core /bin/bash…...

Kafka知识总结(选举机制+控制器+幂等性)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 选举机制 控制器&#xff08;Broker&#xff09;选举 控制器就是…...

2024非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输!

一、前言 接口测试最近几年被炒的火热了&#xff0c;越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢&#xff1f; 主要是平常的功能点点点&#xff0c;大家水平都一样&#xff0c;是个人都能点&#xff0c;面试时候如果问你平常在公司怎么测试的&#…...

python 写一个年会抽奖的demo

使用while 进行循环&#xff0c;进行三轮之后&#xff0c;停止。random.sample() 抽样不重复查询数据 import random name_list [] for i in range(0,100): name_list .append(员工{i}) winnerNum [30,6,3] //每个中奖人数 count 0 while count < 3: choice i…...

C++ OpenCV 实现多张图片叠加 叠加文字

C OpenCV 实现多张图片叠加 叠加文字 在C中使用OpenCV叠加多张图片以及添加文字的基本步骤如下&#xff1a; 加载多张图片。 确定叠加位置。 使用cv::addWeighted叠加图片&#xff0c;可以为叠加的图片添加透明度。 使用cv::putText在图片上添加文字。 显示或保存结果图片…...

用 apifox cli 命令行运行本地接口出现TypeError:Invalid IP address: undefined

用 apifox cli 命令行运行本地接口出现TypeError:Invalid IP address: undefined&#xff0c;客户端运行是通过的但命令行运行会报错 修改端口也是一样报错&#xff0c;地址修改为127.0.0.1会报错connect ECONNREFUSED 127.0.0.1:8080 解决方法&#xff1a;不用localhost&…...

PyQt6简易案例代码GUI界面小工具——实现增、删、查、改(练手正合适)

目录 专栏导读1、库的介绍PyQt6的主要特点包括&#xff1a;使用PyQt6开发应用程序的一般步骤&#xff1a;库的安装 2、设计窗口设计列表视图设计输入框控件与按钮设计布局listView的简单样式增删查改函数 完整代码总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—P…...

JavaScript快速入门指南

JavaScript是一种广泛应用于网页开发的脚本语言&#xff0c;它可以让网页实现动态效果和交互性。无论是前端开发还是全栈开发&#xff0c;JavaScript都是不可或缺的一部分。本文将带你快速入门JavaScript&#xff0c;从基础语法到实际应用&#xff0c;让你快速上手这门强大的语…...

Esbuild介绍

Esbuild是一个由Evan Wallace基于Go语言开发的快速、可扩展的JavaScript和CSS打包器及压缩器。它以其极快的构建速度和高效的性能在众多构建工具中脱颖而出。 一、核心特性 超快的构建速度&#xff1a; Esbuild相比传统的构建工具&#xff08;如Webpack&#xff09;在构建速度…...

UnityShaderUI编辑器扩展

前言&#xff1a; 当我们在制作通用Shader的时候&#xff0c;避免不了许多参数混杂在一起&#xff0c;尽管在材质面板已经使用过Header标签来区分&#xff0c;但是较长的Shader参数就会导致冗余&#xff0c;功能块不够简约明了&#xff0c;如图&#xff1a; 对于Shader制作者来…...

分布式事务——2PC 代码示例

一 2PC代码示例 在Java中实现两阶段提交&#xff08;2PC, Two-Phase Commit&#xff09;协议通常涉及多个组件&#xff0c;包括事务协调者&#xff08;Transaction Coordinator&#xff09;和多个资源管理器&#xff08;Resource Managers&#xff0c;如数据库&#xff09;。在…...

vue实现简易的全局加载动画效果

效果展示 思路 封装一个组件&#xff0c;放Img&#xff0c;伪类样式&#xff0c;固定在屏幕fixed 然后App应用这个组件&#xff0c;Z index拉最大&#xff0c;防止用户在加载动画时乱点&#xff0c; v-show绑定loading&#xff0c;该数据可以放vuex还是任一的公共状态管理变…...

Linux网络工具“瑞士军刀“集合

一、背景 平常我们在进行Linux服务器相关运维的时候&#xff0c;总会遇到一些网络相关的问题。我们可以借助这些小巧、功能强悍的工具帮助我们排查问题、解决问题。 下面结合之前的一些使用经验为大家介绍一下一些经典应用场景下&#xff0c;这个网络命令工具如何使用的。例如怎…...

Sentinel隔离、降级、授权规则详解

文章目录 Feign整合Sentinel线程隔离熔断降级授权规则自定义异常结果 上一期教程讲解了 Sentinel 的限流规则&#xff1a; Sentinel限流规则&#xff0c;这一期主要讲述 Sentinel 的 隔离、降级和授权规则 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还…...

C++11 列表初始化与类型声明

目录 ​ 0.前言 1.C11介绍 2.统一的列表初始化 2.1{}初始化 2.2initializer_list 2.2.1initializer_list 的基本用法 2.2.2用于类的 initializer_list 构造函数 2.2.3与标准库容器的结合 2.2.4优势与注意事项 3.新声明 3.1auto 3.1.1基本用法 3.1.2优势 3.1.3注意事项 3.2declt…...

缓存策略自定义:Laravel应用性能优化秘籍

缓存策略自定义&#xff1a;Laravel应用性能优化秘籍 在现代Web应用中&#xff0c;缓存是一种提高应用性能和响应速度的有效手段。Laravel框架提供了强大的缓存机制&#xff0c;支持多种缓存驱动&#xff0c;如文件、数据库、Redis等。然而&#xff0c;在某些情况下&#xff0…...

python连接sqlserver,封装操作

1封装 # 导入Flask类 import pymssql import tracebackclass Mssql(object):# 连接库def base(database):connect pymssql.connect(usersa,password123456,databasef{database},charsetutf8,as_dictTrue)if connect:print("数据库连接成功&#xff01;")else:print…...

原生PHP/JS自主开发的交友内核框架婚恋交友系统V10

本文来自&#xff1a;婚恋交友系统V10 - 源码1688 应用介绍 原生PHP/JS自主开发的交友内核框架&#xff0c;极高性能、无捆绑、自主权、无流水扣点、独立全开源 01脱单盲盒&#xff1a;脱单盲盒类似于漂流瓶&#xff0c;先将自己《投放》到盲盒中&#xff0c;另一伴有缘将您取…...

如何在Java、Python、GO程序中使用AI人脸识别API接口

AI人脸识别是一种通过面部识别或确认一个人身份的软件。它通过识别和测量图像中的面部特征来工作。面部识别可以识别图像或视频中的人脸&#xff0c;确定两幅图像中的人脸是否属于同一个人&#xff0c;或者在大量现有图像中搜索人脸。 AI人脸识别的优势是什么&#xff1f; 高…...

在vue使用MQTT

在vue中使用MQTT 最近有个需求&#xff0c;需要前端直接链接mqtt&#xff0c;想到后面可能多出使用&#xff0c;就封装成了hooks 中间遇到了一个坑&#xff0c;就是浏览器默认不支持mqtt协议&#xff0c;其借助了webSocket实现的mqtt协议&#xff0c; 而mqtt默认未开启webSocke…...

DNS、网关、IP、DHCP

DNS、网关、IP、DHCP&#xff1a;深入剖析与理解 在计算机网络的世界中&#xff0c;DNS、网关、IP和DHCP是四个至关重要的概念&#xff0c;它们共同构建了互联网的基础架构&#xff0c;确保了数据的准确传输和设备的有效连接。本文将深入剖析这四个概念&#xff0c;帮助读者更…...

vue2 vue3 props 的处理机制

在 Vue 2 中&#xff0c;props 是单向数据流&#xff0c;父组件向子组件传递的 props 默认情况下是不具有响应式特性的。这意味着当父组件的数据发生变化时&#xff0c;如果传递给子组件的 props 发生变化&#xff0c;子组件不会自动更新视图。 具体来说&#xff0c;在 Vue 2 …...