python循环——九九乘法表(更加轻松的理解循环结构)

news2024/11/24 3:29:46

感受

        首先,得明确意识到这个问题,就是我的循环结构学的一塌糊涂,完全不能很好的使用这个循环来实现各种九九乘法表达输出,这样的循环结构太差了,还需要我自己找时间来补充一下循环的使用,来拓宽自己的思考方向,这是个不错的机会,让我更加充分的体会循环的嵌套。

        重点在写博客中对可迭代对象的求知欲不断的加深,让我对于对象以及可迭代的认识更深了,不得不说,有时候还是得写出来才可以给予自己更加强大的欲望,从而推动自己去不断认识更多,这大概就是授之以欲。最神奇的就是我在思考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 = 1
    while j <= i:
        print(f"{j}*{i}={i * j}", end="\t")
        j += 1
    print()  # 换行

这两种循环一起使用,确实是有些不至于了。 

甚至再去考虑其他的循环嵌套的形式,比如多次的循环嵌套,但是那么写明显不合理,因为每次处理十个数字的话那要遍历的次数就是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 = 1
    print((' '*8)*(9-i), end='\t')
    # print('        ' * (9 - i), end='')
    while j <= i:
        print(f'{i}*{j}={i*j:2d}', end='\t')
        j += 1
    i += 1
    print()

真是要把自己笑死了,大脑疯狂运转,想着为什么它没有实现控制台的后移,想着我进行了*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 = 1
    print((' '*8)*(9-i), end='\t')
    while j <= i:
        print(f'{i}*{j}={i * j:2d}', end='\t')
        j += 1
    print()

发现就是他们两个互相嵌套的时候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 = 1
    while j <= i:
        print(f'{j}*{i}={j * i:2d}', end='\t')
        j += 1
    i -= 1
    print()

一开始我还设置的第二个循环是j<=9,但是根据调试发现它在第二行会去8*9,然后我就思考,如果它要实现三角形的话,那它的第二行的最后一个就必须不打印,然后我就观察我的这两个计数器,我就看出来了。

for和while循环互相嵌套

for i in range(9, 0, -1):
    j = 1
    while j <= i:
        print(f'{j}*{i}={j * i}', end='\t')
        j += 1
    print()

不得不说,分别写了while和for之后,他们两个结合起来使用可以说是游刃有余了

i = 9
while i >= 1:
    for j in range(1, i + 1):
        print(f'{j}*{i}={j * i}', end='\t')
    i -= 1
    print()

 第四种九九乘法表

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 = 1
    print((' '*8)*(9-i), end='\t')
    while j <= i:
        print(f'{i}*{j}={i * j}', end='\t')
        j += 1
    i -= 1
    print()

非常轻松的就完成了修改,出现问题,1.计数器忘记控制,使它始终变化        2.意外把计数器自增放到了打印的上方,导致先执行了输出。3.忘记了要实现的九九乘法表是什么样的

for和while循环互相嵌套

for i in range(9, 0, -1):
    j = 1
    print((' '*8)*(9-i), end='\t')
    while j <= i:
        print(f'{i}*{j}={i*j:2d}', end='\t')
        j += 1
    print()
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 -= 1
    print()

总结

        循环还有其他的什么函数、类、对象这些,压根就不是听会的,都得自己敲才能体会出来深处的知识,总之,循环以及条件语句,这种需要控制的东西,还是比较需要逻辑比较清晰的。

如有问题,随时评论/私信,感谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开端】Java 分页工具类运用

一、绪论 Java系统中&#xff0c;分页查询的场景随处可见&#xff0c;本节介com.baomidou.mybatisplus.core.metadata.IPage;来分页的工具类 二、分页工具类 public class PageUtils implements Serializable { private static final long serialVersionUID 1L; /**…

服务器安装哪吒面板详细教程

本文长期更新地址&#xff1a; 服务器安装哪吒面板详细教程-星零岁的博客https://blog.0xwl.com/13568.html 注&#xff1a;本文中部分内容源自网络&#xff0c;第四步中部分来自本人曾经文章&#xff1a;云服务器安装配置宝塔面板并安装基础运行环境教程-星零岁的博客 今天来讲…

Dubbo 快速掌握 这篇就够了

1. Dubbo概述 Dubbo 是一款高性能、轻量级的开源Java RPC框架&#xff0c;由阿里巴巴公司开发并在2011年开源。它主要用于解决分布式系统中服务之间的通信问题&#xff0c;支持多种协议&#xff0c;如Dubbo、HTTP、Hessian等&#xff0c;具有服务注册、服务发现、负载均衡、故…

基于大语言模型抽取文本中的实体和关系

在基于大语言模型图数据库存储中&#xff0c;要从文本中提取实体&#xff0c;实体属性和关系。 实体关系抽取是从文本中的句子里抽取出一对实体并给出实体间关系的任务。 该任务的输入是一句话&#xff0c;输出是一个spo三元组&#xff08;subject-predicate-object&#xff…

【数据结构】TreeMap和TreeSet

目录 前言TreeMap实现的接口内部类常用方法 TreeSet实现的接口常用方法 前言 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。 一般把搜索的数据称为关键字&#xff08;Key&#xff09;&#xff0c; 和关键字对应的称为…

【C#】知识汇总

目录 1 概述1.1 GC&#xff08;Garbage Collection&#xff09;1.1.1 为什么需要GC&#xff1f;1.1.2 GC的工作原理工作原理什么是Root&#xff1f;GC算法&#xff1a;Mark-Compact 标记压缩算法GC优化&#xff1a;Generational 分代算法 1.1.3 GC的触发时间1.1.4 如何减少垃圾…

MFC核心技术探索

原文地址&#xff1a;李浩的博客 lihaohello.top 本文采用逐步调试的方法&#xff0c;带你一起探索MFC程序的执行流程、窗体创建、消息映射、运行时类型识别、对象动态创建这些核心机制。 相信读者在深入理解这些核心机制后&#xff0c;会由衷感叹于MFC框架实现的精妙&#xf…

Outh2四种授权模式详解

1.oauth 2.0 简介 2.各个角色介绍 3.四种模式 4.授权码模式 ①&#xff1a;获取授权码 ②&#xff1a;申请授权接口 ③&#xff1a;申请token ④&#xff1a;申请token接口 5.简单模式 6.密码模式 7.客户端模式

StarRocks 存算分离 Data Cache 二三事

前言 StarRocks 存算分离模式架构中&#xff0c;数据导入后&#xff0c;会被写入远端对象存储。而对象存储由于其访问延迟较高特性&#xff0c;如果没有任何优化&#xff0c;每次查询直接访问后端对象存储&#xff0c;那么性能就会变得非常差&#xff0c;也就失去了 StarRocks…

【C#】一个项目移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,解决方法

文章目录 1 问题分析2 本文解决方法 一个项目可以正常运行编译的项目&#xff0c;所有路径均为相对路径。 移动了位置&#xff0c;或者换到其他电脑上&#xff0c;编译报错 Files 的值“IGEF&#xff0c; 1 问题分析 这个错误信息表明在处理文件时&#xff0c;Files 的值出…

tiktok 搜索接口请求与翻页

这几天有小伙伴问tk的搜索接口的问题, 一个是搜索热门接口请求返回 {“status_code”: 0},这个使用curl_cffi的requests库改一下指纹请求就行了。 再一个就是翻页问题 细心一些比对一下翻页参数都能做到的(小伙伴以为只改个offset就完事了) 要不然你只能得到这样的结果:…

JavaWeb—XML_Tomcat10_HTTP

一、XML XML是EXtensible MarkupLanguage的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签。 可扩展:三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写; 在XML基…

极狐GitLab 如何设置访问令牌前缀?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

GSON转换将Long类型转换Double导致精度丢失的问题排查

问题描述 项目中同步订单时发现一个问题&#xff0c;同一条的数据&#xff0c;order_id和item_id为Long类型&#xff0c;在同步时&#xff0c;数值变了。比如原本是6930414387088791188变成了69304143870884512001。 问题排查 经过排查发现http请求的返回参数是正常的&#…

树形结构数据数据查询优化过程

树形结构数据统计查询优化过程 初始方案&#xff1a; 组织树数据结构如下&#xff1a; 数据请求参数&#xff1a; 原技术方案&#xff1a; public List<Map<String, List<Long>>> getSelectParam(List<DepartmentQueryDTO> departmentList, Stri…

图论(二):图的度分析——度数bar图度数等级图度数直方图根据度数渲染节点颜色

本期所用数据集&#xff0c;空手道俱乐部关系数据集&#xff1a; 数据集中共有34个节点&#xff0c;每个节点代表俱乐部中的一名成员数据集中共有78条边&#xff0c;每条边表示两名成员之间的友谊关系或社交联系常见数据集格式为GML和TXT格式&#xff0c;还可能包含其他格式的…

检索增强生成算法

检索增强生成算法&#xff08;Retrieval-Augmented Generation&#xff0c;RAG)是由Patrick Lewis等人于2020年提出的&#xff08;https://arxiv.org/pdf/2005.11401&#xff09;&#xff0c;主要用于辅助大规模语言模型&#xff08;Large Language Models, LLMs&#xff09;在…

【网络】代理服务器

目录 正向代理 反向代理 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 正向代理 正向代理&#xff08;Forward Proxy&#xff09;是一种常见的网络代理方式&#xff0c;它位于客户端和目标 服务器之间&#xff0c;代表客户端向目标服务器发送请求。正向代理服务器接收客户…

晓北斗 - 北斗七星、北斗导航系统

北斗导航 北斗卫星导航 芯片、模块、天线、板卡等基础产品,是北斗系统应用的基础。通过卫星导航专项的集智攻关,我国实现了卫星导航基础产品的自主可控,形成了完整的产业链。 北斗卫星导航系统&#xff08;Beidou Navigation Satellite System&#xff0c;简称&#xff1a;BD…

Effective-Java-Chapter5-泛型

https://github.com/clxering/Effective-Java-3rd-edition-Chinese-English-bilingual/blob/dev/Chapter-5/Chapter-5-Introduction.md 准则一 不要使用原始类型 首先来看一下什么是原始类型呢&#xff1f; List 对应的原始类型是 List&#xff0c;那其实就是说不带参数化类…