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

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循环——九九乘法表(更加轻松的理解循环结构)

感受 首先&#xff0c;得明确意识到这个问题&#xff0c;就是我的循环结构学的一塌糊涂&#xff0c;完全不能很好的使用这个循环来实现各种九九乘法表达输出&#xff0c;这样的循环结构太差了&#xff0c;还需要我自己找时间来补充一下循环的使用&#xff0c;来拓宽自己的思考方…...

UDS诊断系列之十八故障码的状态掩码

在谈19服务的子功能之前&#xff0c;先说一下故障码&#xff08;DTC&#xff09;的状态掩码是什么。 一、状态掩码 状态掩码由八个状态位构成&#xff0c;客户端利用它向服务器请求与其状态相匹配的DTC信息。当服务器接收到来自客户端的请求时&#xff0c;它会通过过滤匹配的…...

【jvm】直接引用

目录 1. 说明2. 形式3. 特点4. 生成过程5. 作用 1. 说明 1.在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;直接引用&#xff08;Direct Reference&#xff09;是相对于符号引用&#xff08;Symbolic Reference&#xff09;而言的&#xff0c;它是指向内存中实际存在的…...

PythonStudio 控件使用常用方式(二十七)TActionList

PythonStudio是一个极强的开发Python的IDE工具&#xff0c;官网地址是&#xff1a;https://glsite.com/ &#xff0c;在官网可以下载最新版的PythonStudio&#xff0c;同时&#xff0c;在使用PythonStudio时&#xff0c;它也能及时为用户升到最新版本。它使用的是Delphi的控件&…...

PDF 转Word 开源库

1. Apache PDFBox Apache PDFBox 是一个开源的 Java 库&#xff0c;用于创建和操作 PDF 文档。虽然 PDFBox 本身没有直接支持 PDF 转 Word 的功能&#xff0c;但它可以提取 PDF 内容&#xff0c;你可以结合其他方法将这些内容写入 Word。 添加依赖 <dependency><gr…...

Docker - 深入理解Dockerfile中的 RUN, CMD 和 ENTRYPOINT

RUN docker file 中的 RUN 命令相对来教容易理解 RUN 指令用于在构建镜像时执行命令&#xff0c;这些命令会在 Docker 镜像的构建过程中执行。常用于安装软件包、设置环境变量、创建目录等。RUN 指令会在镜像构建中创建新的镜像层&#xff0c;每个 RUN 指令都会创建一个新的镜…...

Python 函数式编程 内置高阶函数及周边【进阶篇 3】推荐

前面我们已经总结并实践了用python获取到了数据。也介绍了python中http网络请求的几种方式&#xff0c;正在学习python开发语言或者对python3知识点生疏需要回顾的请点这里 &#xff0c;本章主要总结了函数式编程及特点 和 python中内置的高阶函数及周边知识&#xff0c;方便自…...

【Rust光年纪】探秘Rust GUI库:从安装配置到API概览

Rust语言GUI库全方位比较&#xff1a;选择适合你的工具 前言 在现代软件开发中&#xff0c;图形用户界面&#xff08;GUI&#xff09;库扮演着至关重要的角色。随着Rust语言的不断发展&#xff0c;越来越多的优秀的GUI库也相继问世&#xff0c;为Rust开发者提供了更多选择。本…...

Element plus部分组件样式覆盖记录

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

重塑业务生态,Vatee万腾平台:引领行业变革的新引擎

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

标准术语和定义中的【架构】应该如何描述

一、参考国家标准和国际标准中对“架构”的描述 &#xff08;1&#xff09;GB/T 8566-2022 国家标准 架构的术语描述&#xff1a;(系统)在其环境中的一些基本概念或性质,体现在其元素关系,以及设计与演进原则中。 &#xff08;2&#xff09;ISO/IEC/IEEE 42010 国际标准 架构的…...

华为鸿蒙Core Vision Kit 骨骼检测技术

鸿蒙Core Vision Kit 是华为鸿蒙系统中的一个图像处理框架&#xff0c;旨在提供各种计算机视觉功能&#xff0c;包括物体检测、人脸识别、文本识别等。骨骼检测是其中的一项功能&#xff0c;主要用于检测和识别人类身体的骨骼结构。 骨骼检测的关键点 骨骼点检测&#xff1a;通…...

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舵机驱动控制 &#x1f516;测试对象&#xff1a;STM32F103SG90舵机 &#x1f33c;功能实现&#xff1a;通过串口指令&#xff0c;控制SG90舵机转动到指定角度。 ✨在实际硬件舵机驱动过程中&#xff0c;使用SG90普通舵机空载运转情况下&#xff0c;电流在180mA…...

【Kubernetes】k8s集群图形化管理工具之rancher

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

AI编程系列一1小时完成链家房价爬虫程序

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

【JavaEE初阶】文件内容的读写—数据流

目录 &#x1f4d5; 引言 &#x1f334; 数据流的概念 &#x1f6a9; 数据流分类 &#x1f333; 字节流的读写 &#x1f6a9; InputStream&#xff08;从文件中读取字节内容) &#x1f6a9; OutputStream&#xff08;向文件中写内容&#xff09; &#x1f384; 字符流的…...

Spring Boot项目中使用Sharding-JDBC实现读写分离

Sharding-JDBC是一个分布式数据库中间件&#xff0c;它不仅支持数据分片&#xff0c;还可以轻松实现数据库的读写分离。下面是如何在Spring Boot项目中集成Sharding-JDBC并实现读写分离的详细步骤&#xff1a; 目录 1. 引入依赖 2. 配置数据源 3. 配置Sharding-JDBC相关参数…...

【网络安全】SSO登录过程实现账户接管

未经许可,不得转载。 文章目录 正文正文 登录页面展示了“使用 SSO 登录”功能: 经分析,单点登录(SSO)系统的身份验证过程如下: 1、启动SSO流程:当用户点击按钮时,浏览器会发送一个GET请求到指定的URL: /idp/auth/mid-oidc?req=[UNIQUE_ID]&redirect_uri=[REDI…...

如何用LLVIP数据集提升夜间行人检测?YOLOv5实战教程(附避坑指南)

夜间行人检测实战&#xff1a;用LLVIP数据集优化YOLOv5模型的完整指南 当路灯成为城市夜晚唯一的光源&#xff0c;传统监控摄像头的视野开始变得模糊不清——这正是计算机视觉工程师在安防领域最常遇到的挑战之一。LLVIP数据集的出现为这一困境提供了突破性的解决方案&#xf…...

从DBC到CAPL全流程避坑指南:BusType设置对自动化测试的影响

从DBC到CAPL全流程避坑指南&#xff1a;BusType设置对自动化测试的影响 在汽车电子测试领域&#xff0c;DBC文件如同CAN网络的"基因图谱"&#xff0c;而CAPL脚本则是激活这些基因的"酶"。当两者配合出现问题时&#xff0c;往往不是基因突变&#xff0c;而是…...

[多控制器适配] 通过BetterJoy实现Switch手柄在PC游戏中的无缝集成 [创新协议转换技术]

[多控制器适配] 通过BetterJoy实现Switch手柄在PC游戏中的无缝集成 [创新协议转换技术] 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: …...

如何解决Bitcoin Core中createwallet命令仅支持legacy wallets的问题(code -4)

1. 遇到"Only legacy wallets are supported"错误怎么办&#xff1f; 最近在帮朋友调试比特币全节点时&#xff0c;遇到了一个典型问题&#xff1a;当尝试用createwallet命令创建新钱包时&#xff0c;控制台突然报错"Only legacy wallets are supported by this…...

2026 GitHub 高星项目全景指南

一、GitHub 全球 Star 最高项目(2026年3月 实时数据) GitHub 无官方总 Star 榜单,以下为综合第三方统计与实时检索的全球高星项目 Top10,数据动态更新,以仓库主页为准: 排名 项目名称 Star 数 核心定位 1 build-your-own-x ⭐47.4万+ 从零实现各类技术的教程合集 2 awes…...

JavaScript金融计算中的精度陷阱与高精度解决方案

1. 金融计算中的精度灾难&#xff1a;从0.10.2≠0.3说起 如果你在Chrome控制台输入0.1 0.2&#xff0c;得到的不是预期的0.3&#xff0c;而是0.30000000000000004这个诡异的数字。我第一次在支付系统对接时遇到这个问题&#xff0c;差点因为几分钱的差额导致整个对账流程崩溃。…...

LaTeX投稿Elsevier期刊必备:elsarticle.cls从安装到实战避坑指南

LaTeX投稿Elsevier期刊必备&#xff1a;elsarticle.cls从安装到实战避坑指南 科研工作者向Elsevier投稿时&#xff0c;elsarticle.cls文档类是最常用的工具之一。不同于基础教程&#xff0c;本文将聚焦实际投稿过程中的高频痛点&#xff0c;从环境配置到排版细节&#xff0c;提…...

Qwen3-ASR-1.7B实战教程:curl命令行调用API实现无人值守识别任务

Qwen3-ASR-1.7B实战教程&#xff1a;curl命令行调用API实现无人值守识别任务 1. 课程目标与价值 本教程将教你如何使用curl命令行工具调用Qwen3-ASR-1.7B语音识别模型的API接口&#xff0c;实现自动化、无人值守的语音转文字任务。学完本教程&#xff0c;你将能够&#xff1a…...

北斗网格位置码实战:从编码原理到Java实现(非极地)

1. 北斗网格位置码&#xff1a;为什么我们需要它&#xff1f; 当你打开手机地图查看自己的位置时&#xff0c;看到的通常是经纬度坐标。这种表示方式虽然精确&#xff0c;但在实际应用中却存在不少问题。比如在物流配送系统中&#xff0c;直接存储和查询经纬度数据效率很低&am…...

csvlens作为库使用教程:在Rust项目中集成CSV查看功能

csvlens作为库使用教程&#xff1a;在Rust项目中集成CSV查看功能 【免费下载链接】csvlens Command line csv viewer 项目地址: https://gitcode.com/gh_mirrors/cs/csvlens 想要在你的Rust应用中添加一个功能强大、交互式的CSV数据查看器吗&#xff1f;csvlens不仅是一…...