46.for循环嵌套之九九乘法表

news2024/11/26 12:27:57

46.for循环嵌套之九九乘法表

文章目录

  • 46.for循环嵌套之九九乘法表
    • 1. 目标任务
    • 2. 完成第1行输出
    • 2. 分析前3行规律
    • 3. 编写第1行代码
    • 4. 编写前2行代码
    • 5. 调整输出格式
    • 6. 完成总代码

1. 目标任务

本节的任务是利用for循环嵌套编写九九乘法表。

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

怎样才能输出上面的九九乘法表呢?

在我们没有思路的时候,我们先把任务拆分,然后试着找到编写规律。

2. 完成第1行输出

【目标任务】

原样输出1*1=1

x = 1
y = 1 
print("%d*%d=%d" % (x, y , x*y))

【终端输出】

1*1=1

不理解%d作用的需要先回看上一节《45.%占位符格式化处理》的内容。

【语法】

(要输出的内容 % 要格式化的变量或数值)

"%d*%d=%d"是最后要输出的内容的模板。

%是格式化占位符。

x, y , x*y是3个要格式化的变量,分别替换输出模板中的%d.

2. 分析前3行规律

【输出内容】

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9

【分析规律】

第1行:x=1,y=1

第2行:x=1、2,y=2

第3行:x=1、2、3,y=3

我们发现y的值在每一行都是固定的,第1行y=1,第y=2,第3行y=3。

x的值是不固定的,它和y有一定的关联。

y=1时,x=1

y=2时,x=1,2

y=3时,x=1,2,3

x的值总是从1开始到y结束,且两个数之间差1。

我们可以很快速的想到range函数可以实现这个输出。

x和y是要联系在一起的,因此这里用y+1来控制x的值。

range函数含前不含后,因此,当x要取1的时候,range函数要以y+1结束(不含)。

【y = 1】

y = 1
print(list(range(1,y+1)))

【终端输出】

[1]

【y = 2】

y = 2
print(list(range(1,y+1)))

【终端输出】

[1, 2]

【y = 3】

y = 3
print(list(range(1,y+1)))

【终端输出】

[1, 2, 3]

3. 编写第1行代码

值是变动的,且每次取出的数值是不一样的,我们考虑用range函数来生成值,用for循环来取值。

y在每一行都是固定的,因此我们可以把y写成for循环的外循环。

x每次都是从1开始,到等于y值结束,因此x要写成for循环的内循环。

同样先完成第一行代码的编写。

for y in range(1,2):
    for x in range(1,y+1):
        print("%d*%d=%d" % (x, y , x*y))

【终端输出】

1*1=1

4. 编写前2行代码

1*1=1
1*2=2 2*2=4

第2行,y=2,外循环的range的范围为1到3(不含3)。

for y in range(1,3):
    for x in range(1,y+1):
        print("%d*%d=%d" % (x, y , x*y))

【终端输出】

1*1=1
1*2=2
2*2=4

5. 调整输出格式

观察输出结果,发现输出的格式和我们要的不一样。

再观察九九乘法表,我们发现每一行输出以后都有一个换行。

因此在每一次内循环执行完毕后我们都添加一个换行print( )

因为每1行的2个表达式之间都有一个空格,因此我们在内循环中添加一个空格end = " "

end表示打印完最后一个值需要添加的字符串,用来设定输出语句以什么结尾。

end = " ":end引号中有1个空格,意思是输出完表达式后在输出一个空格。

for y in range(1,3):
    for x in range(1,y+1):
        print("%d*%d=%d" % (x, y , x*y),end = " ")
    # 内循环结束,输出一个换行
    print()

【终端输出】

1*1=1 
1*2=2 2*2=4 

6. 完成总代码

乘法口诀共有9行,外循环需要循环9次,y的取值范围为1到9。

for y in range(1,10):
    for x in range(1,y+1):
        print("%d*%d=%d" % (x, y, x*y),end = " ")
    # 内循环结束,输出一个换行
    print()

【终端输出】

1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

在这里插入图片描述

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

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

相关文章

语音识别之语音激活(VAD)检测(一)

导读 语音激活检测(Vioce Activation Detection)简称VAD,用来检测语音信号是否存在。VAD技术在语音领域中应用非常的广泛,在语音识别中我们可以对长语音通过VAD来检测出语音信号的空隙,通过这个空隙来分割语音,将长语音切分成短语…

正大国际期货:如何摆脱炒黄金期货被套单?

投资失败无非两点:一是自身原因,自己没有经验,盲目的操作肯定会造成亏损;二是指导老师的实力问题,指导老师对行情的方向把握不准,经常喊反弹,造成你的亏损。想要走得快,就独自上路&a…

Python每日一练 09——多文件操作

Python每日一练 09——多文件操作 文章目录Python每日一练 09——多文件操作一、单文件拆分为多个文件二、多文件合并为单文件1、获取数据文件名2、获取股票名列表3、读单支股票数据4、读多支股票数据5、多文件中数据合并到一个文件一、单文件拆分为多个文件 我们写一个txt文件…

数字图像处理(入门篇)九 图像数据预处理之滤波

目录 1 模板运算 (1)模板卷积 (2)模板排序 2 均值滤波 (1)代码 (2)结果图 3 高斯滤波 (1)代码 (2)结果图 4 中值滤波 &#…

IB数学HL/SL考试大纲简单介绍

IB数学难度怎么样?IB数学内部评估和外部评估是怎么评分的,IB数学HL和SL的考试大纲? 下面介绍IB数学框架体系IB数学SL考试大纲 SL数学为必修课 考试内容相对比较基础 代数(Algebra):涉及数列问题&#xff…

CentOS虚拟机搭建Hive环境

注&#xff1a;本文是对 https://www.bilibili.com/video/BV1CU4y1N7Sh 的实践。 关于如何搭建Hadoop集群&#xff0c;请参考我另一篇文档。 环境 CentOS 7.7JDK 8Hadoop 3.3.0Hive 3.1.2 准备 确认Hadoop的 etc/hadoop/core-site.xml 文件包含如下配置&#xff1a; <…

3D建模师做多了女人会不会找不到老婆?次世代美少女战士建模流程讲解

什么是次世代&#xff1f; 次世代是个舶来语&#xff0c;“次世代游戏”指代和同类游戏相比下更加先进的游戏&#xff0c;即“下一代游戏”。 次世代是利用高模烘焙的法线贴图回帖到低模上&#xff0c;让低模在游戏引擎里可以及时显示高模的视觉效果。模型面数比较高&#xf…

Python实现PSO粒子群优化卷积神经网络CNN回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法&#xff08;Particle Swarm Optimization&#xff09;的英文缩写&#xff0c;是一…

学完这篇,再不怕防火墙NAT策略问题

Q&A 1、配置了nat server后Tracert防火墙上的global地址&#xff0c;显示信息是什么? 无论具有Inside地址的设备在防火墙内部有多少跳&#xff0c;Tracert时全部显示nat server的global的地址。如果有3跳&#xff0c;则显示3次global地址。 2、nat server和destination-n…

艾美捷CMRL-1066培养基背景和化学性质分析

艾美捷CMRL-1066培养基背景&#xff1a; CMRL-1066是20世纪60年代后期在康诺医学研究实验室开发的一种化学定义的培养基。CMRL-1066最初设计用于非补充培养物中的小鼠L细胞。虽然CMRL-1066是为无血清培养而开发的&#xff0c;但它可以补充血清并用于支持多种细胞类型的生长。适…

[激光原理与应用-50]:《激光焊接质量实时监测系统研究》-1-绪论 (模式识别)

目录 1.1 问题概述 1.2 激光焊接质量监测在国内外的研究现状 1.2.1 国内外研究概况、水平和发展趋势 1.2.2 信号检测与传感器 1.2.3 信号分析与缺陷诊断 &#xff08;DSP或FPGA&#xff09; 1.3 本课题研究内容及意义 后记&#xff1a; 1.1 问题概述 激光焊接是一种高效…

YOLO v3

参考 YOLO v3 - 云社区 - 腾讯云 摘要 我们对YOLO进行了一些更新&#xff01;我们做了一些小的设计改变使它更好。我们还训练了这个非常棒的新网络。比上次大一点&#xff0c;但更准确。不过还是很快的&#xff0c;别担心。在320 320的情况下&#xff0c;YOLOv3在28.2 mAP下…

跳板攻击中如何追踪定位攻击者主机(上)

前段时间西北工业大学遭受NAS攻击事件中&#xff0c;TAO在针对西北工业大学的网络攻击行动中先后使用了54台跳板机和代理服务器&#xff0c;主要分布在日本、韩国、瑞典、波兰、乌克兰等17个国家&#xff0c;其中70%位于中国周边国家&#xff0c;如日本、韩国等。 同时&#x…

芯片漫游指南(3)-- UVM通信

目录1.TLM通信1.1 概述1.2 基本概念1.3 分类1.4 端口的使用2. 单向通信2.1 概念2.2 方法2.3 示例3.双向通信3.1 概述3.2 分类3.3 transport4. 多向通信4.1 概述4.2 示例5.通信管道5.1 概述5.2 TLM FIFO5.3 Analysis Port5.4 analysis TLM FIFO5.5 request & response通信管…

[附源码]JAVA毕业设计疫情防控期间人员档案追演示录像下(系统+LW)

[附源码]JAVA毕业设计疫情防控期间人员档案追演示录像下&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#x…

Springboot内置的工具类之ObjectUtils

在实际业务开发中&#xff0c;有时候经常需要判断对象是否为空、数组是否为空、两个对象是否相等&#xff0c;数组中是否包含某个元素&#xff0c;往数组中追加元素等这些操作&#xff0c;每次都手写太麻烦&#xff0c;然后很多人的选择是封装成util工具类&#xff0c;实际上类…

Golang protobuf

文章目录protobuf 和 grpc 的区别下载工具 protoc为什么要使用 protocprotoc 基本语法基础用法结构体声明protoc生成结构体服务声明生成服务使用生成的服务端使用生成的客户端protobuf 和 grpc 的区别 grpc 是开源的rpc框架 protobuf是编码协议下载工具 protoc https://githu…

人工神经网络/ANN简介

目录 前言 1.什么是训练集、测试集和验证集&#xff1f; 2.人工神经网络和 生物神经元结构对应的理解 3.什么是梯度下降法&#xff0c;在神经网络上如何用于调节权重&#xff1f; 4.为什么神经网络要进行归一化处理&#xff1f; 5.激活函数的形式&#xff1a; 6.NN分类 …

序列模型(自回归模型,马尔可夫模型,因果关系)

李沐老师《动手学深度学习 PyTorch版》课程&#xff0c;小破站也有视频51 序列模型【动手学深度学习v2】_哔哩哔哩_bilibili 主要参考8.1. 序列模型 — 动手学深度学习 2.0.0 documentation 目录 1.基本原理 1.1自回归模型 1.2马尔可夫模型 1.3因果关系 2.训练 3.预测 4…

CMake中link_directories/target_link_directories的使用

CMake中的link_directories命令用于添加目录使链接器能在其查找库(add directories in which the linker will look for libraries)&#xff0c;其格式如下&#xff1a; link_directories([AFTER|BEFORE] directory1 [directory2 ...]) 添加路径使链接器应在其中搜索库。提供给…