怎麼用Python把這樣的乘法口訣表打出來?

只能用While 或者 for 結構

我自己做了做但是卡到了一點 不知道怎麼把他們用一行來表示出來。 求解。。

number1 = 1
number2 = 1
print("x" + " " + "1" + " " + "2" +" " + "3" +" " + "4" +" " + "5" +" " + "6" +" " + "7" +" " + "8" +" " + "9" +" " + "10" +" " + "11" +" " + "12")
while number1 &<= 12: while number2 &<= 12: print(str(number2) + " " + str(number2 * number1) + " ") number2 = number2 + 1 number1 = number1 + 1


print(
.join([ .join([%s*%s=%-2s % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))

這是網上到處可以搜索到的「一行代碼列印乘法表」,執行結果如下:

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

你看看,然後改成你需要的:

print(
.join([ .join([%-4s % (x*y) for y in range(1,13)]) for x in range(1,13)]))

執行結果:

1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
4 8 12 16 20 24 28 32 36 40 44 48
5 10 15 20 25 30 35 40 45 50 55 60
6 12 18 24 30 36 42 48 54 60 66 72
7 14 21 28 35 42 49 56 63 70 77 84
8 16 24 32 40 48 56 64 72 80 88 96
9 18 27 36 45 54 63 72 81 90 99 108
10 20 30 40 50 60 70 80 90 100 110 120
11 22 33 44 55 66 77 88 99 110 121 132
12 24 36 48 60 72 84 96 108 120 132 144


邏輯上黃哥幫你實現了,怎麼輸出樣式好看,自己再整一個。

提問者,基本的循環沒有完全搞清楚。

請看圖片python 3 代碼。

加油!

python初學者,如果你連這樣的習題寫不出代碼,該怎麼辦? - 通過python學會編程 - 知乎專欄


貌似用 generator簡單點:

def table(x):
print ("x "," ".join([str(i) for i in range(1,x+1)]))
for j in range(1,x+1):
print(str(j)+" "," ".join([str(j*k) for k in range(1,x+1)]))


li = [x] + [i for i in range(1,10)]
for l in li:
print({:&<2}.format(l), end= ) print() for i in range(1, 10): print({:&<2}.format(i), end= ) for j in range(1, 10): print({:&<2}.format(i * j), end= ) print()


手機碼字 為了效果沒有加 結果。

注意 下 這裡的變數count實際上有三個作用。

1. while count &< n: 配和下面的 count += ,

是為了正確的退出函數

2.字元串格式化{0}*{1}.format(x,count+1),

因為count默認值為0 乘法表是從1開始的

3.range循環 range(1,count+2)

這個是因為range默認 從0開始循環 ,且後面的

循環數到n-1,這樣就會少兩次循環。所以必須加2。

update:

為了更加符合 題目 還是把完整代碼貼出來吧。

更新 String.format不支持格式化於是改用%格式化。

-------------------

Update 2017.8.9

時隔一年 再來個遞歸版本


推薦閱讀:

TAG:Python | Python入門 |