python循环——九九乘法表(更加轻松的理解循环结构)
感受
首先,得明确意识到这个问题,就是我的循环结构学的一塌糊涂,完全不能很好的使用这个循环来实现各种九九乘法表达输出,这样的循环结构太差了,还需要我自己找时间来补充一下循环的使用,来拓宽自己的思考方向,这是个不错的机会,让我更加充分的体会循环的嵌套。
重点在写博客中对可迭代对象的求知欲不断的加深,让我对于对象以及可迭代的认识更深了,不得不说,有时候还是得写出来才可以给予自己更加强大的欲望,从而推动自己去不断认识更多,这大概就是授之以欲。最神奇的就是我在思考python中索引的最大值的问题时,我通过一系列的查询操作,我更深入的理解了一遍数据结构,python中数据类型的不同,相应的内存也是不一样的,列表在内存中以动态的数组形式存储数据,它会去预留一定的内存空间出来,这时候我就想到了sql的查询,因为之前的学习如何优化MySQL性能,我就想到了sql的查询,在pymysql使用查询操作,返回的值是元组的,相应的元组在内存中的存储方式就是紧凑连续的,这样才可以优化了系统的性能,在这个过程中,我又产生了一些问题:就是数组是什么,数组的存储方式是什么,数组和什么有关系;所以,不得不说,自己才是最好的老师;
目录
感受
第一种九九乘法表
for循环嵌套实现
可迭代对象
while循环嵌套实现
while与for互相嵌套
第二种九九乘法表
for循环嵌套实现
while循环嵌套实现
while和for循环互相嵌套
第三种九九乘法表
for循环嵌套实现
while循环嵌套实现
for和while循环互相嵌套
第四种九九乘法表
for循环嵌套实现
while循环嵌套实现
for和while循环互相嵌套
总结
第一种九九乘法表
第一种循环结构是最常见的一种
首先根据图片要实现的效果,去分析行与列之间的变化
for循环嵌套实现
for循环要求遍历对象为可迭代对象
可迭代对象
说到可迭代对象就不得不好奇(秉持着不将就的原则,老师耳提面命的话,最终我想起来了,好奇是真的,从学习for循环到现在这段时间常常的听到,最终还是克服了懒惰,结果就是看了一堆c语言代码,还完全看不懂,我的水平还是太低了)的去了解一下——可迭代对象。
嗯,我去查了CPython关于可迭代对象的相关文档,不出意外的就是完全看不懂,最后交给ai,看了一阵,最后大概只知道了一点关于序列迭代器(针对列表,元组等序列类型)的相关知识,就是他这个迭代器,有着相应的底层源码去实现它对序列的遍历,以及记录相关的索引,所以可以实现索引的相关的操作。
for i in range(1, 10):for j in range(1, i+1):print(f'{j}*{i}={i*j}', end='\t') # 打印出来i*j的值,每列之间存在四个空格print() # 每次结束第二个for循环就实现换行
while循环嵌套实现
i = 1 # 设定计数器初始值为1(行)
while i <= 9: # 选定循环并确定循环条件j = 1 # 设置计数器初始值为1(列)while j <= i: # 设置循环条件print(f'{j}*{i}={i * j}', end='\t') # 输出列乘行,并使用制表符将他制成表格j += 1 # 设置列的自增i += 1 # 设置行的自增print() # 输出空实现换行
while与for互相嵌套
i = 1
while i <= 9:for j in range(1, i + 1):print(f"{j}*{i}={i * j}", end="\t")print() # 换行i += 1
for i in range(1, 10):j = 1while j <= i:print(f"{j}*{i}={i * j}", end="\t")j += 1print() # 换行
这两种循环一起使用,确实是有些不至于了。
甚至再去考虑其他的循环嵌套的形式,比如多次的循环嵌套,但是那么写明显不合理,因为每次处理十个数字的话那要遍历的次数就是10*10*10=1000次,对性能等的消耗绝对不低,如果只是要实现九九乘法表的话,这绝对就是传说中的史山代码了,再去考虑它也就没有什么意义了。
第二种九九乘法表
for循环嵌套实现
for i in range(1, 10):print((' '*8)*(9-i), end='\t')for j in range(1, i + 1):print(f'{i}*{j}={j * i:2d}', end='\t')print()
因为要实现从第一行开始的8个间距,且每次减少一个间距,所以需要使用第二行的代码,让它用制表符以实现空格间距之后的打印值,最后使用print()让他在进行完行运算之后,进行换行。
while循环嵌套实现
i = 1
while i <= 9:j = 1print((' '*8)*(9-i), end='\t')# print(' ' * (9 - i), end='')while j <= i:print(f'{i}*{j}={i*j:2d}', end='\t')j += 1i += 1print()
真是要把自己笑死了,大脑疯狂运转,想着为什么它没有实现控制台的后移,想着我进行了*8和*(9-i)了,结构那个字符串里面压根没有空格。
while和for循环互相嵌套
i = 1
while i <= 9:print((' ' * 8) * (9 - i), end='\t')for j in range(1, i + 1):print(f'{i}*{j}={i * j:2d}', end='\t')print()i += 1
for i in range(1, 10):j = 1print((' '*8)*(9-i), end='\t')while j <= i:print(f'{i}*{j}={i * j:2d}', end='\t')j += 1print()
发现就是他们两个互相嵌套的时候for和while的交换实质是同一种。
第三种九九乘法表
for循环嵌套实现
for i in range(9, 0, -1):for j in range(1, i+1):print(f'{j}*{i}={j*i}', end='\t')print()
根据控制台输出的第一个式子,观察列和行的情况,确定谁不变,从而设置循环条件。
while循环嵌套实现
i = 9
while i >= 1:j = 1while j <= i:print(f'{j}*{i}={j * i:2d}', end='\t')j += 1i -= 1print()
一开始我还设置的第二个循环是j<=9,但是根据调试发现它在第二行会去8*9,然后我就思考,如果它要实现三角形的话,那它的第二行的最后一个就必须不打印,然后我就观察我的这两个计数器,我就看出来了。
for和while循环互相嵌套
for i in range(9, 0, -1):j = 1while j <= i:print(f'{j}*{i}={j * i}', end='\t')j += 1print()
不得不说,分别写了while和for之后,他们两个结合起来使用可以说是游刃有余了
i = 9
while i >= 1:for j in range(1, i + 1):print(f'{j}*{i}={j * i}', end='\t')i -= 1print()
第四种九九乘法表
for循环嵌套实现
for i in range(9, 0, -1):print((' '*8)*(9-i), end='\t')for j in range(1, i+1):print(f'{i}*{j}={i*j:2d}', end='\t')print()
不得不说,练多了就是有感觉,现在做不出来的话,就是调试的少 了,多debug一下,多看一下运行的过程,就可以更轻松的获得解决思路。
while循环嵌套实现
i = 9
while i >= 1:j = 1print((' '*8)*(9-i), end='\t')while j <= i:print(f'{i}*{j}={i * j}', end='\t')j += 1i -= 1print()
非常轻松的就完成了修改,出现问题,1.计数器忘记控制,使它始终变化 2.意外把计数器自增放到了打印的上方,导致先执行了输出。3.忘记了要实现的九九乘法表是什么样的
for和while循环互相嵌套
for i in range(9, 0, -1):j = 1print((' '*8)*(9-i), end='\t')while j <= i:print(f'{i}*{j}={i*j:2d}', end='\t')j += 1print()
i = 9
while i >= 1:print((' '*8)*(9-i), end='\t')for j in range(1, i+1):print(f'{i}*{j}={i*j:2d}', end='\t')i -= 1print()
总结
循环还有其他的什么函数、类、对象这些,压根就不是听会的,都得自己敲才能体会出来深处的知识,总之,循环以及条件语句,这种需要控制的东西,还是比较需要逻辑比较清晰的。
如有问题,随时评论/私信,感谢。
相关文章:

python循环——九九乘法表(更加轻松的理解循环结构)
感受 首先,得明确意识到这个问题,就是我的循环结构学的一塌糊涂,完全不能很好的使用这个循环来实现各种九九乘法表达输出,这样的循环结构太差了,还需要我自己找时间来补充一下循环的使用,来拓宽自己的思考方…...
UDS诊断系列之十八故障码的状态掩码
在谈19服务的子功能之前,先说一下故障码(DTC)的状态掩码是什么。 一、状态掩码 状态掩码由八个状态位构成,客户端利用它向服务器请求与其状态相匹配的DTC信息。当服务器接收到来自客户端的请求时,它会通过过滤匹配的…...
【jvm】直接引用
目录 1. 说明2. 形式3. 特点4. 生成过程5. 作用 1. 说明 1.在Java虚拟机(JVM)中,直接引用(Direct Reference)是相对于符号引用(Symbolic Reference)而言的,它是指向内存中实际存在的…...

PythonStudio 控件使用常用方式(二十七)TActionList
PythonStudio是一个极强的开发Python的IDE工具,官网地址是:https://glsite.com/ ,在官网可以下载最新版的PythonStudio,同时,在使用PythonStudio时,它也能及时为用户升到最新版本。它使用的是Delphi的控件&…...
PDF 转Word 开源库
1. Apache PDFBox Apache PDFBox 是一个开源的 Java 库,用于创建和操作 PDF 文档。虽然 PDFBox 本身没有直接支持 PDF 转 Word 的功能,但它可以提取 PDF 内容,你可以结合其他方法将这些内容写入 Word。 添加依赖 <dependency><gr…...
Docker - 深入理解Dockerfile中的 RUN, CMD 和 ENTRYPOINT
RUN docker file 中的 RUN 命令相对来教容易理解 RUN 指令用于在构建镜像时执行命令,这些命令会在 Docker 镜像的构建过程中执行。常用于安装软件包、设置环境变量、创建目录等。RUN 指令会在镜像构建中创建新的镜像层,每个 RUN 指令都会创建一个新的镜…...

Python 函数式编程 内置高阶函数及周边【进阶篇 3】推荐
前面我们已经总结并实践了用python获取到了数据。也介绍了python中http网络请求的几种方式,正在学习python开发语言或者对python3知识点生疏需要回顾的请点这里 ,本章主要总结了函数式编程及特点 和 python中内置的高阶函数及周边知识,方便自…...
【Rust光年纪】探秘Rust GUI库:从安装配置到API概览
Rust语言GUI库全方位比较:选择适合你的工具 前言 在现代软件开发中,图形用户界面(GUI)库扮演着至关重要的角色。随着Rust语言的不断发展,越来越多的优秀的GUI库也相继问世,为Rust开发者提供了更多选择。本…...

Element plus部分组件样式覆盖记录
文章目录 一、el-button 样式二、Popconfirm 气泡确认框三、Popover 气泡卡片四、Checkbox 多选框五、Pagination 分页六、Form 表单七、Table 表格 一、el-button 样式 html: <el-button class"com_btn_style">button</el-button>样式覆盖…...

重塑业务生态,Vatee万腾平台:引领行业变革的新引擎
在数字经济浪潮汹涌的今天,传统行业的边界正被不断模糊与重塑,新兴技术如云计算、大数据、人工智能等正以前所未有的速度改变着商业世界的面貌。在这一背景下,Vatee万腾平台应运而生,以其独特的创新模式和强大的技术实力ÿ…...

标准术语和定义中的【架构】应该如何描述
一、参考国家标准和国际标准中对“架构”的描述 (1)GB/T 8566-2022 国家标准 架构的术语描述:(系统)在其环境中的一些基本概念或性质,体现在其元素关系,以及设计与演进原则中。 (2)ISO/IEC/IEEE 42010 国际标准 架构的…...
华为鸿蒙Core Vision Kit 骨骼检测技术
鸿蒙Core Vision Kit 是华为鸿蒙系统中的一个图像处理框架,旨在提供各种计算机视觉功能,包括物体检测、人脸识别、文本识别等。骨骼检测是其中的一项功能,主要用于检测和识别人类身体的骨骼结构。 骨骼检测的关键点 骨骼点检测:通…...
Table API SQL系统(内置)函数System (Built-in) Function详解
目录 函数类型 引用函数 函数精确引用 函数模糊引用 函数解析顺序 精确的函数引用 模糊的函数引用 系统函数 标量函数(Scalar Functions) 比较函数(Comparison Functions) 逻辑函数(Logical Functions) 算术函数(Arithmetic Functions) 字符串函数(Strin…...

一键运行RocketMQ5.3和Dashboard
一键运行RocketMQ5.3和Dashboard 目录 一键运行RocketMQ5.3和Dashboard通过Docker Compose 来一键启动运行的容器包括docker-compose.yml文件运行命令启动本地效果查看 参考信息 通过Docker Compose 来一键启动 运行的容器包括 NameServerBrokerProxyDashBoard docker-compo…...

HAL STM32 SG90舵机驱动控制
HAL STM32 SG90舵机驱动控制 🔖测试对象:STM32F103SG90舵机 🌼功能实现:通过串口指令,控制SG90舵机转动到指定角度。 ✨在实际硬件舵机驱动过程中,使用SG90普通舵机空载运转情况下,电流在180mA…...

【Kubernetes】k8s集群图形化管理工具之rancher
目录 一.Rancher概述 1.Rancher简介 2.Rancher与k8s的关系及区别 3.Rancher具有的优势 二.Rancher的安装部署 1.实验准备 2.安装 rancher 3.rancher的浏览器使用 一.Rancher概述 1.Rancher简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实…...

AI编程系列一1小时完成链家房价爬虫程序
背景 AI编程实在太火,写了很多年的Java,现在Python 和Go 简单好用,今天结合智谱清言快速完成一个程序爬虫程序,没有任何Python 编程经验,只需要会提问,熟悉简单HTML结构即可。未来一定是有业务能力者的福…...

【JavaEE初阶】文件内容的读写—数据流
目录 📕 引言 🌴 数据流的概念 🚩 数据流分类 🌳 字节流的读写 🚩 InputStream(从文件中读取字节内容) 🚩 OutputStream(向文件中写内容) 🎄 字符流的…...
Spring Boot项目中使用Sharding-JDBC实现读写分离
Sharding-JDBC是一个分布式数据库中间件,它不仅支持数据分片,还可以轻松实现数据库的读写分离。下面是如何在Spring Boot项目中集成Sharding-JDBC并实现读写分离的详细步骤: 目录 1. 引入依赖 2. 配置数据源 3. 配置Sharding-JDBC相关参数…...

【网络安全】SSO登录过程实现账户接管
未经许可,不得转载。 文章目录 正文正文 登录页面展示了“使用 SSO 登录”功能: 经分析,单点登录(SSO)系统的身份验证过程如下: 1、启动SSO流程:当用户点击按钮时,浏览器会发送一个GET请求到指定的URL: /idp/auth/mid-oidc?req=[UNIQUE_ID]&redirect_uri=[REDI…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...