当前位置: 首页 > 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还是任一的公共状态管理变…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...