【python】九九乘法表你真的会了吗?

九九乘法表基本是初学者练手的一道编程题目,面试时遇到这种题目简直就是送分题,但这种送分题往往也是初入职场面试时的一道送命题,因为连这种题都不会,后面基本gg了.....尤其针对python语言往往和列表推导式联系一起,考察语言熟悉程度。

1.左下角乘法表(大家最熟悉的)

常规方法两个循环搞定

for i in range(1,10):
    for j in range(1,i+1):
        print("{0}*{1}={2}".format(j,i,j*i),end=" ")
    print()

但没什么技巧,但面试官往往更希望用列表推导式简化代码,因为python语言的一个特点就是简洁。于是有了第二个版本。

for i in range(1,10):
    print(" ".join(["{0}*{1}={2}".format(j,i,j*i) for j in range(1,i+1)]))

能不能用一行代码,让面试官眼前一亮呢。这就要用到双层列表推导式。于是有了第三个版本,这也是面试官最想要的版本。

print('\n'.join([' '.join(['%d*%d=%d'%(col,row,col*row) for col in range(1,row+1)]) for row in range(1,10)]))

2.左上角乘法表(简单变异品种)

这个也很简单,不多说。

for i in range(1,10):
    for j in range(i,10):
        print("{0}*{1}={2}".format(i,j,j*i),end=" ")
    print()
 

 3.右下角乘法表

 这个稍微加强了点,主要考察对占位和位置输出,和输出*号三角形原理一样。

 for i in range(1,10):
    for k in range(1,10-i):
        print(end ="       ")#这里是7个空格
    for j in range(1,i+1):
        print("%d*%d=%2d"%(j,i,j*i),end=" ")
    print()

 这里用了格式化占位符%d而不是format就是为了便于对齐,否则输出是歪的,上面的例子就可以看到中间有些地方没对齐。为什么第一次输出七个空格,还是为了对齐,因为%d*%d=%2d占6位,再加后面一个空格所以七位,可以根据自己输出样式来确定对齐策略。

4.右上角乘法表

for i in range(1,10):
    for k in range(1,i):
        print(end ="       ")#这里是7个空格
    for j in range(i,10):
        print("%d*%d=%2d"%(j,i,j*i),end=" ")
    print()

5.正金子塔乘法表

 这个猛一看很高端,但其实原理和上面一样,稍加改动就好了。

for i in range(1,10):
    for k in range(1,10-i):
        print(end="      ")#这里是7个空格
    for j in range(1,i+1):
        print("%d*%d=%2d"%(j,i,j*i),end="      ")
    print()

6. 倒金子塔乘法表

for i in range(1,10):
    for k in range(1,i):
        print(end="      ")
    for j in range(i,10):
        print("%d*%d=%2d"%(j,i,j*i),end="      ")
    print() 

发布了11 篇原创文章 · 获赞 6 · 访问量 2302

猜你喜欢

转载自blog.csdn.net/qq525003138/article/details/104153844