Python100例8-九九乘法表

题目:输出 9*9 乘法口诀表。

程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

总结:for循环嵌套的内层和外层执行逻辑的理解

明白了!!!第一层for循环取一个元素出来,然后进入第二层循环,第二层循环 把所有的元素遍历一遍之后才跳出此层循环。

再进入外层循环,由此类推执行完毕所有的循环

所以,外层循环高于内层循环,内层循环执行完毕之后跳出内层循环才继续外层循环,然后又进入内层循环

举个例子:

外层循环要执行9个数,内层循环也有9个数,当外层循环每执行1个数时进入内层循环,内层执行9个。外层一共执行9遍,那么内层就要执行9x9=81遍。

方法1:end=""打印之后不换行

for i in range(1, 10):
    for j in range(1, 10):
        print ("%d*%d=%d" % (i,j, i*j),"\t",end="")
        if i == j:
            print()
            break

测试:

PS C:\Users\zms\work> python .\test.py
1*1=1
2*1=2   2*2=4
3*1=3   3*2=6   3*3=9
4*1=4   4*2=8   4*3=12  4*4=16
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81
PS C:\Users\zms\work>

方法2:

for i in range(1,10):
    l=[]
    for j in range(1,i+1):
        l.append(str(j)+"*"+str(i)+"="+str(i*j))
    print(" ".join(l))

方法3:

for i in range(1, 10):
    for j in range(1, i+1):
        print('%dx%d=%d' %(i,j,i*j),' ',end="")
        if i==j:
            print()
            break

输出结果:

PS C:\Users\zms\work> python .\test.py
1x1=1
2x1=2  2x2=4
3x1=3  3x2=6  3x3=9
4x1=4  4x2=8  4x3=12  4x4=16
5x1=5  5x2=10  5x3=15  5x4=20  5x5=25
6x1=6  6x2=12  6x3=18  6x4=24  6x5=30  6x6=36
7x1=7  7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49
8x1=8  8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64
9x1=9  9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81
PS C:\Users\zms\work>

方法4:print()函数放在内层循环之外执行,这样循环的逻辑就是:每结束一轮内层循环就换行。

如果把print()函数放在内层循环里面,逻辑就是:

#形式1:
for i in range(1, 10):
    print()
    for j in range(1, i+1):
        print('%dx%d=%d' %(i,j,i*j),' ',end="")
    
#结果:
PS C:\Users\zms\work> python .\test.py

1x1=1
2x1=2  2x2=4
3x1=3  3x2=6  3x3=9
4x1=4  4x2=8  4x3=12  4x4=16
5x1=5  5x2=10  5x3=15  5x4=20  5x5=25
6x1=6  6x2=12  6x3=18  6x4=24  6x5=30  6x6=36
7x1=7  7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49
8x1=8  8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64
9x1=9  9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81
PS C:\Users\zms\work>



#形式2
for i in range(1, 10):
    for j in range(1, i+1):
        print('%dx%d=%d' %(i,j,i*j),' ',end="")
    print()
    
#结果:
PS C:\Users\zms\work> python .\test.py
1x1=1
2x1=2  2x2=4
3x1=3  3x2=6  3x3=9
4x1=4  4x2=8  4x3=12  4x4=16
5x1=5  5x2=10  5x3=15  5x4=20  5x5=25
6x1=6  6x2=12  6x3=18  6x4=24  6x5=30  6x6=36
7x1=7  7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49
8x1=8  8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64
9x1=9  9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81
PS C:\Users\zms\work>

可以看出来,两种形式的区别在于,由于形式一先执行了print()函数,所以形式一的输出结果在第一行多了一行空行。

方法5:一行搞定

[[print(f"{i} x {j} = {i * j}", end=' ') if (i + 1) > j else print('\n') for j in range(1, i + 2)] for i in range(1, 10)]

猜你喜欢

转载自blog.csdn.net/qq_41580631/article/details/83788697