
点击上方 蓝字 关注我们
前情提要 :刚上二年级的小红正 在学习九九乘法表,老师说明天上课时要抽查,但她总是记不熟,你能写个程序帮帮她吗?
是不是想到了我们上一期学的For循环遍历,刚好可以用上。但好像又有点不太对劲,九九乘法表好像不止一层循环,这要怎么写呀?往下看看吧!
01俄罗斯套娃
解决这个问题之前,我们先来和小红一起玩一下她书桌上的俄罗斯套娃吧!
俄罗斯套娃是俄罗斯特产的木制玩具,一般由多个一样图案的空心木娃娃一个套一个组成,最多可达十多个。
02多重循环
对了,我们是不是也可以像俄罗斯套娃一样,在一层循环里面再嵌套一个循环呢?



for i in range(1,3): print(i,'*',2,'=',i*2)
运行结果:
end=' '
表示在print后,结尾以空格隔开。即上面的代码改写成:
for i in range(1,3): print(i,'*',2,'=',i*2,end=' ')
输出结果:
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=' ')
输出结果:
for i in range(1,10): print(i,'*',9,'=',i*9,end=' ') print("")
错误打印结果:
for i in range(1,10): for j in range(1,i+1): print(i,'*',j,'=',i*j,end=' ') print("")
这样看起来是不是简单清爽多了!
输出结果:
小红开心地拿着乘法表走了,谢谢各位小哥哥、小姐姐们呀!
循环控制保留字
说了这么多,很自然地我们会想到一个问题,如何跳出循环呢?和其他编程语言一样,python提供了两个循环控制保留字,分别是break和continue。很多人经常会把它们搞混,大家可要注意了。continue:结束当次循环,继续执行后续次数循环
break:跳出并结束当前整个循环,执行循环后的语句
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详解字符串 “我就退出家长群怎么了?”成年人的崩溃往往只在一瞬间,今天也谈家长群

长按关注
精彩不断