打印九九乘法表 | python从入门到精通:入门篇之十八-阿里云开发者社区

 知识中心     |      2019-12-26 00:00:00

第十七节:循环嵌套打印三角形星星阵

循环嵌套练习题

18.1 打印九九乘法表

拿到题目先别着急答题,先来分析一下这道题到底要运用哪些“知识点”!
观察一下,这个九九乘法表是不是和上节课的“三角形”阵是一样的框架呢,把每个公式当成一个整体,那就是一个九行的“三角形”阵,图形的高度确定了,那么外层的循环也就确定了。
现在来看内层的循环,也就是图形的宽度怎么写,先将其当作是三角形来打印一次:

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

执行结果为:
image.png
显然方向是对的,那么接下来将*换成公式:
image.png
第一行的内容是0开始的,是因为i和j的初始值为0,所以将i+=1j+=1放到循环体的前面来,先将i和j自增:
image.png
图形的宽度比之前多了一个1。在上一步骤里,先将i和j进行了自增,在内层循环里面的时候仍然是j<i+1,所以当外层循环执行一次,内层函数执行了一圈+1,才会导致这种情况发生,此时只需要将j<i+1改成j<i就好啦:
image.png
果然乘法表被大家找出来啦!可以自己多尝试几次,理解一下这个思考的过程。

18.2 找出100以内的所有质数

在之前的课程中咱们讲过如何判断一个数n为质数,首先引入了一个flag=True,然后用小于n的数去整除n,如果出现n%i==0,则证明可以整除,则不是质数。再返回来看这个问题,现在不是要求判断一个数字了,而是判断100以内的所有数字,那怎么能让程序判断完了一个数字之后再自动去执行下一个数字的判断呢,这就要用到循环了。首先搭建一个循环的框架,输出2~100的数字(从2开始是因为0不做判断,1既不是质数也不是合数):

i=2
while i<=100 :
    print(i,' ',end=' ')
    i+=1

执行结果为:
image.png
后面的数字就不展示了。
接下来就要去挨个判断这些数字是不是质数了,当判断是质数的时候再进行print输出。首先还是要引入一个flag,并且值为True,当用小于n的数去整除n,如果出现n%i==0,则不是质数,flag的值改为False,程序如下:

i=2
while i<=100 :
    flag = True
    j=2
    while j<i:
        if i%j==0:
            flag=False
        j+=1
    if flag :
        print(i)
    i+=1

执行结果为:
image.png
可以看到,所有的质数就被打印出来啦!