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…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
