点击上方 蓝字 关注我们

前情提要:刚上二年级的小红正在学习九九乘法表,老师说明天上课时要抽查,但她总是记不熟,你能写个程序帮帮她吗?

是不是想到了我们上一期学的For循环遍历,刚好可以用上。但好像又有点不太对劲,九九乘法表好像不止一层循环,这要怎么写呀?往下看看吧!

01

俄罗斯套娃

解决这个问题之前,我们先来和小红一起玩一下她书桌上的俄罗斯套娃吧!

俄罗斯套娃是俄罗斯特产的木制玩具,一般由多个一样图案的空心木娃娃一个套一个组成,最多可达十多个。

02

多重循环

对了,我们是不是也可以像俄罗斯套娃一样,在一层循环里面再嵌套一个循环呢?当然可以啦!这也是今天我们要学习的主要内容,它有一个很形象的名字——多重循环。在一个循环体内又包含了循环结构,这种结构称为多重循环,也称循环嵌套。了解了它的用法,我们赶快开始帮小红打印九九乘法表吧!小红在旁边等得都要睡着了。我们先来看看上面的乘法表,乘法表一共九行,第i行有i列。回顾一下上期的for循环遍历,我们可以用9个循环分别输出每行来实现。比如,如果要打印99乘法表的第二行即:1*2=2  2*2=4这里的循环变量是乘号前面的数字,它的变化范围为[1,2],乘号后的数字固定为2,那么用range来表示循环变量范围为[1,2],就对应着range(1,3)(因为range(1,3)表示左闭右开区间[1,3),即闭区间[1,2])如果要打印多个变量,它们之间用逗号隔开。这样,第二行的代码就写出来啦!

for i in range(1,3):    print(i,'*',2,'=',i*2)

运行结果:

打印的式子虽然对了,但是格式似乎不太对。print默认打印后自动换行。想让两个式子在同一行,以空格分隔开,怎么办呢?可以在print函数中加上:

end=' '

表示在print后,结尾以空格隔开。即上面的代码改写成:

for i in range(1,3):    print(i,'*',2,'=',i*2,end=' ')

输出结果:

类似的,可以用9个这样的循环把9行打印出来:

for i in range(1,2):    print(i,'*',1,'=',i*1,end=' ')for i in range(1,3):    print(i,'*',2,'=',i*2,end=' ')for i in range(1,4):    print(i,'*',3,'=',i*3,end=' ')for i in range(1,5):    print(i,'*',4,'=',i*4,end=' ')for i in range(1,6):    print(i,'*',5,'=',i*5,end=' ')for i in range(1,7):    print(i,'*',6,'=',i*6,end=' ')for i in range(1,8):    print(i,'*',7,'=',i*7,end=' ')for i in range(1,9):    print(i,'*',8,'=',i*8,end=' ')for i in range(1,10):    print(i,'*',9,'=',i*9,end=' ')

输出结果:

我们发现,好像每一行之间没有换行呢!

怎么办?

我们可以利用print自动换行的性质,每行循环结束后,用print输出一个空语句,这样就能自动换行了。比如,输出一个空字符串,就能实现换行效果:

print("")

把上面这句话放在每个循环之间,就能在循环打印完一行后换行了。

for i in range(1,2):    print(i,'*',1,'=',i*1,end=' ')print("")for i in range(1,3):    print(i,'*',2,'=',i*2,end=' ')print("")for i in range(1,4):    print(i,'*',3,'=',i*3,end=' ')print("")for i in range(1,5):    print(i,'*',4,'=',i*4,end=' ')print("")for i in range(1,6):    print(i,'*',5,'=',i*5,end=' ')print("")for i in range(1,7):    print(i,'*',6,'=',i*6,end=' ')print("")for i in range(1,8):    print(i,'*',7,'=',i*7,end=' ')print("")for i in range(1,9):    print(i,'*',8,'=',i*8,end=' ')print("")for i in range(1,10):    print(i,'*',9,'=',i*9,end=' ')

输出结果:

【注意】换行的print不能缩进,否则就包含在for循环中了。以下是错误示例:

for i in range(1,10):    print(i,'*',9,'=',i*9,end=' ')    print("")

错误打印结果:

用9句循环虽然可以打印出九九乘法表,但代码看起来十分繁琐,而且很多内容是重复的。不妨观察一下,在上面9个循环中,乘号后面的数字也有循环规律,行数每增加1,数字就增加1,所以可以使用双重循环来表示这个循环规律。外层循环变量i表示行号,范围是[1,9],即[1,10),即range(1,10)。内层循环变量j表示列号,范围是[1,i],即[1,i+1),即range(1,i+1)。代码如下:

for i in range(1,10):    for j in range(1,i+1):        print(i,'*',j,'=',i*j,end=' ')    print("")

这样看起来是不是简单清爽多了!

输出结果:

小红开心地拿着乘法表走了,谢谢各位小哥哥、小姐姐们呀!

03

循环控制保留字

说了这么多,很自然地我们会想到一个问题,如何跳出循环呢?和其他编程语言一样,python提供了两个循环控制保留字,分别是break和continue。很多人经常会把它们搞混,大家可要注意了。

  • continue:结束当次循环,继续执行后续次数循环

  • break:跳出并结束当前整个循环,执行循环后的语句

具体如何在For循环中使用它们呢?我们一起来看两个例子吧!

for i in range(1,6):    if i%2 == 0:        continue    print(i)

输出结果为:

上述代码表示,如果当前的i除2余0,即i为偶数,则continue,继续执行后续循环,即不执行print。如果i除2不余0,即i为奇数,不符合条件,不会进入if语句中,则执行if后的print语句。

所以上面的代码其实是输出了在区间[1,6)间的奇数,它们分别是1、3、5。

如果将continue换成break,输出结果会有什么变化呢?

for i in range(1,6):    if i%2 == 0:        break    print(i)

输出结果为:

表示当前i如果为偶数,就退出循环。所以,在[1,6)中,按顺序执行时,遇到的第一个偶数是2,循环就退出了。在退出前,可以输出的奇数是1。

再看看下面这段代码:

for i in range(6):    if i==3:        continue    print(i,end=' ')

经过之前的学习,我们知道这段代码的含义是从区间[0,6)逐一取出整数i,在循环体中用if来判断,如果某一整数是3的时候,continue,即不再执行下面的语句了。所以,除了3以外,其他数字都能被输出。

输出结果:

同样地,我们把这段代码稍作修改:

for i in range(6):    if i==3:        break    print(i,end=' ')

输出结果会变成什么呢?你知道吗?

(点击空白处查看内容)

如果练习遇到问题,可在文章后留言,管理员会帮你解决~

- THE END -

?

往期精彩回顾

在你的世界里来来回回 | 06 For循环遍历该走哪条路?| 05 if条件判断字符串的奇妙用法 | 04详解字符串“我就退出家长群怎么了?”成年人的崩溃往往只在一瞬间,今天也谈家长群

长按关注

精彩不断

跳出多重循环_代码里的俄罗斯套娃 | 07 多重循环相关推荐

  1. 的 while循环_十八、Python图解while循环

    人生苦短,要学Python Python中循环有while循环和for循环,接下来将介绍Python中的while循环和for循环. while循环 语法格式 # while语句用于循环执行程序,也就 ...

  2. shell脚本for循环_了解Shell脚本中的for循环

    shell脚本for循环 Continuing on from our previous tutorials, let's understand the for loop in shell scrip ...

  3. vba循环通过键盘某个按键按下退出循环_[VBA]For Next与Do Loop循环

    " 在黑夜中前行,行也寂寞,停也寂寞 " (更文的时候,正好最近发生许多事,算是做个自我安慰吧) 作为VBA的基本语句,For Next和Do Loop都是很早进入初学者学习的循环 ...

  4. django中的for循环_深入了解 JavaScript 中的 for 循环

    在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...

  5. map for循环_阿里面试问我hashMap的循环姿势有哪几种?

    hashMap 应该是java程序员工作中用得比较多的一个键值对处理的数据的类型了.这种数据类型一般都会有增删查的方法,今天我们就来看看它的循环方法以前写过一篇关于ArrayList的循环效率问题&l ...

  6. python并发循环_在Python中模拟一个并发循环?

    在Python中模拟一个并发循环? 我需要模拟Python程序中的并发循环.不幸的是,以下简单的代码不起作用:list_of_ints = [ 1, 2, 3 ]iterator = list_of_ ...

  7. java 暂停循环_在用于暂停线程时,循环Thread.Sleep()会不会对性能造成影响?...

    有(或者已经有)很多关于使用 Thread.Sleep() 方法的好坏的讨论 . 据我所知,它主要用于调试目的 . 现在我想知道:用于我的特定目的是不是很糟糕,也就是说,不断循环它以便能够暂停/恢复线 ...

  8. python读取二进制数据中的while循环_在Python中读取二进制文件并循环遍历每个字节...

    f = open("myfile", "rb") try: byte = f.read(1) while byte != "": # Do ...

  9. python种颜色循环_使用matplotlib颜色图进行颜色循环 - python

    如果我通过以下方式创建颜色: 将numpy导入为np 从matplotlib导入pyplot作为plt n = 6 color = plt.cm.coolwarm(np.linspace(0.1,0. ...

最新文章

  1. 让世界零距离 小鱼易连的大梦想
  2. 一文掌握异常检测的实用方法 | 技术实践
  3. 清华校友打造Python调试神器
  4. QUnit源码阅读(2):test基本执行流程
  5. DOM4J介绍与代码示例 (强大的xml处理工具)
  6. springMVC 与mybatis 整合 demo(maven 工程)
  7. Codeforces Testing Round #10 A. Forgotten Episode
  8. 学成在线--9.页面静态化
  9. js字符串(String)转多维数组(Array) - 代码篇
  10. Discuz x1.0 修改游客浏览图片、附件权限
  11. 软考,个人快速成长最好的投资
  12. 大学生眼中的对方,哈哈
  13. lamp怎么使用mysql_lamp(四)mysql操作
  14. LCP 19. 秋叶收藏集
  15. 数据结构-第二章(1)-线性结构
  16. win7系统64位下安装sql server2000时提示兼容性问题
  17. 这一次,彻底拿下操作系统!!!
  18. javascript event click/dblclick left/right区分左键、右键、双击事件,排除点击事件与拖拽事件冲突,做防抖优化
  19. 660 - 循环基础-利息计算
  20. ITIL4 术语词汇表(附下载)

热门文章

  1. 【LOJ2127】「HAOI2015」按位或
  2. 爬虫之Xpath的使用
  3. bzoj4144【AMPPZ2014】Petrol
  4. 改动Xmodem/Zmodem上传下载路径
  5. 写一个function,清除字符串前后的空格。(兼容所有浏览器)
  6. .NET性能优化方面的总结(转)
  7. Linux里常见术语的缩写
  8. 使用 vs 2008 宏制作自动注释工具
  9. Linux yum 安装
  10. 阿里云nginx站点http升级https