星號金字塔
這篇文章會介紹使用 Python 的for 迴圈、文字格式化,產生由一層一層的星號「*」所組成的金字塔。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
基本原理
星號字塔的基本型會按照「1、3、5、7...」奇數排列的方式,將星號「*」堆疊出金字塔的形狀 ( 也可以是 1、5、9、13...之類的奇數組合 )。
編輯程式
因為金字塔為奇數組合,假設金字塔有 a 層,透過「ax2+1
」的公式就能計算出「金字塔底部有幾個星星」,接著使用 range 的方法,就能指定每一層之間的星星數,搭配 for 迴圈就能做出漂亮的星號金字塔。
a = 15 # 新增變數 a,設定金字塔有幾層
b = a*2+1 # 新增變數 b,計算底部有幾個星星
for i in range(1,b,2): # 使用 for 迴圈,從 1~b,每隔 2 個一數
move = round((b-i)/2)-1 # 計算星星的位移空白 ( 要將星星都置中 )
print(f' '*move, end='') # 印出星星前方的位移空白 ( 不換行 )
print('*'*i) # 加上「幾個星星」( 乘以 i )
了解原理後,也可以針對金字塔做變形的動作,下方程式碼將金字塔改成 1、5、9、13... 的方式呈現。
a = 15
b = a*2+1
for i in range(1,b,4): # 改成 4 個一數,金字塔每一層就會增加 2,高度也會減半
move = round((b-i)/2)-1
print(f' '*move, end='')
print('*'*i)
運用串接,簡化程式碼
由於 Python 有著方便好用的「串接」特性,當明白了金字塔原理後,就能將程式碼簡化成下面的樣子:
a = 15 # 新增變數 a,設定金字塔有幾層
for i in range(1,a+1): # 使用 for 迴圈,重複指定的層數
print(' ' * (a-i) + '*' * (2*i-1))
# ' ' * (a-i) 表示星星數越少,前面空白越多
# '*' * (2*i-1) 串接後方星星的數量
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~