c语言99乘法表代码_代码里的俄罗斯套娃 | 07 多重循环

7625e0438d722da7973d139ea51592ca.png

点击上方 蓝字 关注我们

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

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

01

俄罗斯套娃

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

b85fd9fc848aad23705b08bdf676fc18.png

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

02

多重循环

对了,我们是不是也可以像俄罗斯套娃一样,在一层循环里面再嵌套一个循环呢? 53cbeedc3c7745b2a90695b06f6b94f6.png 当然可以啦!67626de0252c1eebcd111da1f15e0069.png这也是今天我们要学习的主要内容,它有一个很形象的名字——多重循环。 在一个循环体内 又包含了 循环结构, 这种结构 称为 多重循环,也称 循环嵌套 。 a3d3499097e4a8ee958c87e8fdab3c7c.png 了解了它的用法,我们赶快开始帮小红打印九九乘法表吧!小红在旁边等得都要睡着了。 717e4cc2b0c1a4e3a813eb0236e89ee2.png 我们先来看看上面的乘法表,乘法表一共九行,第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)
运行结果:

b17728815b96b98efa61cb646ac9ec4e.png

打印的式子虽然对了,但是格式似乎不太对。print默认打印后自动换行。想让两个式子在同一行,以空格分隔开,怎么办呢?可以在print函数中加上:
end=' '
表示在print后,结尾以空格隔开。即上面的代码改写成:
for i in range(1,3):    print(i,'*',2,'=',i*2,end=' ')
输出结果:

e9e32dc5a3a6015763a05132cca2ae52.png

类似的,可以用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=' ')

输出结果:

76a993491680ff207ad79cafde124295.png

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

怎么办?

我们可以利用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=' ')

输出结果:

07e41e5e82afb9f57a4724c9c901f1ef.png

【注意】换行的print不能缩进,否则就包含在for循环中了。以下是错误示例:
for i in range(1,10):    print(i,'*',9,'=',i*9,end=' ')    print("")
错误打印结果:

571d490a69f7402bef0aeb8ce77b0382.png

用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("")

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

输出结果:

c148c1ffc58eab1cb83aa546e6ce4e4a.png

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

03

循环控制保留字

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

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

具体如何在For循环中使用它们呢?我们一起来看两个例子吧 !
for i in range(1,6):    if i%2 == 0:        continue    print(i)
输出结果为:

d16699261e7d3c60340e1423eda3d0e4.png

上述代码表示,如果当前的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)

输出结果为:

5b786e390961698d40207f117f9ca825.png

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

再看看下面这段代码:

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

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

输出结果:

23352469bd2235add000bc92fbcc7ffd.png

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

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

输出结果会变成什么呢?你知道吗?098e768942c245aae81a2af59a7e34b8.png

(点击空白处查看内容)

20090e00122e50850157a735a9f64853.png

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

- THE END -

?

往期精彩回顾

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

长按关注

精彩不断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值