欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python学习之路8—while循环嵌套

程序员文章站 2022-07-14 23:36:04
...

Python学习之路8—while循环嵌套

本章节的内容有点多,我在前面列个提纲:

今天要学习的案例是:

案例一:正方形的星星

*****
*****
*****
*****
*****

案例二:三角形的星星

*
**
***
****
*****

案例三:九九乘法表
Python学习之路8—while循环嵌套
循环嵌套,就是当前的这个循环,里面再套一个循环。可以理解为“套娃”。

while 条件1:
    条件1执行的代码
    ......
    while 条件2:
        条件2执行的代码
        ......
print(结果)

先来上个案例来认识下。

案例一:打印星号(正方形)

需求是:实现这样一个正方形的星星出来

*****
*****
*****
*****
*****

一开始看到这样的题,有些不知所措。根据上面的学习,自己还是先着手写一下第一行。第一行要展示五个一样的星星。

定义下: i = 星星;

i = 0
while i <5:
    print("*")
    i +=1

最后输出的却是:

*
*
*
*
*

我这输出结果并不是一行五个星星,可见是哪里错了。

如果当真是简单的实现一行展示五个星星,我可以直接print("*****"),这样出来的效果就是五个星星。但是后面还要学习九九乘法表,星星代替变化的数字,就不合适了。

回归正传,print("")的时候,print是自带换行的,即print("",end="\n")。

那么我们取消换行即可,即print("*",end="")。

此刻输出的已是“*****”

第一行搞定了,把第一行重复,重复五行就行。

定义:j = 行数;

j = 0
while j < 5:
    i = 0
    while i < 5:
        print("*", end="")
        i += 1
    j +=1

输出的是:

************************************

我觉得这个代码书写没毛病啊,但是为啥又变成一行了。

前面讲过print自带换行,所以 i 这个循环,我们禁止换行了。这个时候 j 这个循环又需要换行了。我改 i 循环没用,因为那是 i 的循环。所以我要在 j 的循环里加上换行。

j = 0
while j < 5:
    i = 0
    while i < 5:
        # print("*",end="\n"),取消换行
        print("*", end="")
        i += 1
    #一行星星结束,换行展示下一行
    print("*", end="\n")
    j +=1

最终看下输出的结果:

*******
*******
*******
*******
*******

完美,perfect!

案例二:打印星号(三角形)

需求是:

*
**
***
****
*****

这是一个三角形,且每一行的星星数量跟行数是一样的。

我们回忆下正方形星星的代码:

j = 0
while j < 5:
    i = 0
    while i < 5:
        print("*", end="")
        i += 1
    print("*", end="\n")
    j +=1

当时定义的是 i = 星星;而 j = 行数。这样看起来就感觉简单了许多, i 就不用去小于5了,直接小于 j 就行了。运行看下,成功。

*
**
***
****
*****

案例三:九九乘法表

学习了上面的循环嵌套,再来看九九乘法表,思路是不是清晰多了。

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	

首先,还是分析需求:

  • 1、打印一个表达式:a * b = a*b
  • 2、一行打印多个表达式,不换行。一行表达式的个数和行号数相等。
  • 3、打印多行表达式,换行。

先来打印一个表达式,

i = 1
while i <= 9:
    print(f"a * b = a*b")
    i += 1

我们可见,最终的表达式重复了9次.

a * b = a*b
a * b = a*b
a * b = a*b
a * b = a*b
a * b = a*b
a * b = a*b
a * b = a*b
a * b = a*b
a * b = a*b

第二步,一行打印多个表达式,不换行。一行表达式的个数和行号数相等

j = 1
while j <= 9:
    i = 1
    while i <= 9:
        print(f"{i} * {j} = {i}*{j}",end="")
        i += 1
    j += 1

输出的是:

1 * 1 = 11 * 2 = 22 * 2 = 41 * 3 = 32 * 3 = 63 * 3 = 91 * 4 = 42 * 4 = 83 * 4 = 124 * 4 = 161 * 5 = 52 * 5 = 103 * 5 = 154 * 5 = 205 * 5 = 251 * 6 = 62 * 6 = 123 * 6 = 184 * 6 = 245 * 6 = 306 * 6 = 361 * 7 = 72 * 7 = 143 * 7 = 214 * 7 = 285 * 7 = 356 * 7 = 427 * 7 = 491 * 8 = 82 * 8 = 163 * 8 = 244 * 8 = 325 * 8 = 406 * 8 = 487 * 8 = 568 * 8 = 641 * 9 = 92 * 9 = 183 * 9 = 274 * 9 = 365 * 9 = 456 * 9 = 547 * 9 = 638 * 9 = 729 * 9 = 81

这样打印出来的表达式都在一行里面,那么要对每行的表达式进行换行,就在 j += 1的前面加一个 print为空,这样就会进行换行,实践下:

j = 1
while j <= 9:
    i = 1
    while i <= j:
        print(f"{i} * {j} = {i*j}",end="")
        i += 1
    print()
    j += 1
1 * 1 = 1
1 * 2 = 22 * 2 = 4
1 * 3 = 32 * 3 = 63 * 3 = 9
1 * 4 = 42 * 4 = 83 * 4 = 124 * 4 = 16
1 * 5 = 52 * 5 = 103 * 5 = 154 * 5 = 205 * 5 = 25
1 * 6 = 62 * 6 = 123 * 6 = 184 * 6 = 245 * 6 = 306 * 6 = 36
1 * 7 = 72 * 7 = 143 * 7 = 214 * 7 = 285 * 7 = 356 * 7 = 427 * 7 = 49
1 * 8 = 82 * 8 = 163 * 8 = 244 * 8 = 325 * 8 = 406 * 8 = 487 * 8 = 568 * 8 = 64
1 * 9 = 92 * 9 = 183 * 9 = 274 * 9 = 365 * 9 = 456 * 9 = 547 * 9 = 638 * 9 = 729 * 9 = 81

这里还是没有完全对齐,每一个竖行之间还是要有空格的。这个时候,就要新增个基础知识点,那就还是,当end="\t",代表制表符,就会按照表格进行展示。

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

完成完成!!!

从没想过,直接打印出来了,太棒了。

从没想过自己还能这么写出来,果然没有程序员实现不了的需求,这句话不假。

我是小贼猫,产品经理一枚。今年的Flag是拿下Python。平时自己学习的东西都会分享在公众号上,喜欢的人可关注公众号:爱偷懒的小贼猫(xiaodoubi_svip)

相关标签: Python