2019年11月5日 星期二

夠Python,九九乘法表

上網查一下坊間的九九乘法表已經很多,如下所示。

我們試著延續上一篇文章"夠Python,一行指令輸出大心",以一個簡單的例子,來說明List comprehension觀念 (可參考:List Comprehensions in Python)

List comprehension其語法如下:


[ expression for item in list if conditional ]

利用串列把expression, for, list, if等元素組合起來,意即串列經由for迴圈以及if的判斷,用表示式運算成新的串列。若不包括左右中括號表示的串列,其程式語法如下:

for item in list: 
    if conditional: 
        expression

以下是搭配join()函式的小範例。

1.先撰寫列出1到9。

print(''.join([x for x in range(1, 10)]))

輸出結果:發生錯誤。

2.上例未使用字串str而產生錯誤,我們補上str函式。

print(''.join([ str(x) for x in range(1, 10)]))

輸出結果:

3.利用兩個迴圈來實現99乘法表。

print('\n'.join([''.join([ str(x*y) for x in range(1, 10)])for y in range(1, 10)]))

輸出結果:

4.將空字串''改成空白,讓輸出結果更好看。

print('\n'.join([' '.join([ str(x * y) for x in range(1, 10)])for y in range(1, 10)]))

輸出結果:

5.完整的九九乘法表

print('\n'.join([' '.join([ str(x * y)if x * y > 9 else ' '+str(x * y) for x in range(1, 10)]) for y in range(1, 10)]))

輸出結果:


感謝Python Taiwan社群成員,對本篇文章的討論,留下許多寶貴的建議。
https://www.facebook.com/groups/pythontw/permalink/10159324726148438/

一位熱心Python Taiwan社群成員提供九九乘法表的程式。
print('\n'.join(' '.join("%2d" % (i * j) for j in range(1, 10)) for i in range(1, 10)))


沒有留言:

張貼留言