前言
今天天氣好來寫個經典的程式題,不管你在哪都會寫到的程式:「星星金字塔」牽涉到一點點的一元一次的數學觀念。
程式
倒立式三角形
for i in range(12):
print("_"*i + "*"*(12-i)+"*"*(12-i))
首先這種程式絕對會使用到以下幾點
- 迴圈
- 字串組合
首先前提是底線的用意是為了取代空格,再來重複十二次先把底線印出來,會像這樣子:
再來,就是把星星加上去,由字串和迴圈的方式來表示,不然星星會直接移至下一排又會者直接給你顯示不成立,那麼我們會分成兩邊來寫,首先先做其中一邊⋯⋯效果會像這:
再來以次類推再把字串和迴圈的方式把程式寫下來,就大功告成啦。
黃色:底線設定
藍色:左半部分三角形設定
紅色:右半部分三角形設定
正三角形
for i in range(12):
print(("_"*(12-i) + "*"*(i)+ "*"*(i)))
它的原理跟倒三角形是一樣的,差別就在於重複的順序,但字串這元素依舊保留著。情況就跟顛倒三角形類似,這裡就不多講了。
數列原理
這裡你們可能會想,他的運作方式是怎麼樣的,他的加減又是如何計算出來的,首先,一半以上是亂湊出⋯不是啦我是說!首先我們再以倒三角形當做例子
我們可以看出他每一排星星的規律是2, 4, 6, 8, 10,這些全部都是偶數,以等差級數(偶數排列)的方式排列,發現彼此的差距都是2,代表第n個數可用2+2+2….+ 2,總共是n個2。
再來我們就可以把它簡化使用乘法,這樣就會是 n個2 =2*n
n = 紅色匡起來的地方
EX:迴圈倒數(三聲)應用
我們的目標要做出,12 ,11 ,10 ,9 ,8……1,可運用12-i
#迴圈第一個i為0,則12-i=12–0=12
另一種方法就是直接讓你迴圈幫你倒數
for i in range(12, 0, -1)
#從12開始,到1節數,每步走-1。
菱形
for i in range(12+1):
print(("_"*(12-i) + "*"*(2*i+1)))
for i in range(12+1):
print("_"*i + "*"*(12-i+1)+"*"*(12-i))
延續剛剛講的,這裡的話其實只要把正的三角形和倒的三角形合併再一起,排列方式也跟剛剛不相同,都是1, 3, 5, 7,…….之類的排列,他的規律是這樣:2n + 1話是奇數 。
接下來這程式被匡起來的部分透過 i(迴圈)會變動的數字就是紅匡的數字,概念是2*n + 1的應用。
結語
這次運用到了數列概念,數學好難 。