星号金字塔
这篇文章会介绍使用 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) 串接後方星星的數量
微信扫码关注
抖音扫码关注