九九乘法表基本是初學者練手的一道程式設計題目,面試時遇到這種題目簡直就是送分題,但這種送分題往往也是初入職場面試時的一道送命題,因為連這種題都不會,後面基本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()