零基礎學程式設計011:複利資料表問題(總結)
問題描述:
用Python語言輸出365行的《複利資料表》:
(1+0.01) ^ 1 = 1.01 (1+0.01) ^ 2 = 1.02 (1+0.01) ^ 3 = 1.03 ... ... (1+0.01) ^ 364 = 37.41 (1+0.01) ^ 365 = 37.78
我總共寫了六篇才把該程式寫完:
實際上就寫了兩行原始碼:
for i in range(1,366) : print( "(1+0.01) ^", i, "=", round(1.01**i, 2) )
學會了這種程式設計思路,改用其它程式語言實現也會非常容易,比如用C#語言實現的版本:
for (int i = 1; i < 366; i++)
Console.Out.WriteLine("(1+0.01) ^ " + i + " = "
+ Math.Round(Math.Pow(1.01, i), 2));
這裡再把要點總結一下:
1)需要提醒的是我這裡的程式碼全部可以在Python 3.0以上版本通過,在2.7版本時語法有不一樣的地方,需要修改才行。
2)複雜的問題要採用分而治之的辦法,把一個大的問題拆解為一些小的問題,逐個擊破後,每次進步一點點,不斷迭代來逼近最終的結果。
3)你只要明白了《零基礎學程式設計002:Hello World》,就會知道引號內的內容稱為字串,print可以輸出字串,另外還可以輸出浮點數。
4)我們非常熟悉“加+、減-、乘*、除/”的運算子,Python中還支援**運算子,這裡是兩個乘號,表示乘方運算。1.01**3 表示1.01的3次方。
5)變數的運用,解決了第3行的輸出,只需要把變數的值換一下,就可以輸出其它行的內容,而print語句並不需要修改。這樣程式程式碼可以重用,還不容易出錯。
6)迴圈語句for的運用,可以讓變數在某個範圍內變化,重複執行N次。迴圈是計算機程式設計中的一種重要結構,實際上最容易理解的就是順序結構,即程式碼從上到下依次執行。
7)round函式,可以把數四捨五入。
8)range函式,可以產生一個從1變到365的列表。
還需要提醒程式設計師新手要非常注意的地方,就是嚴格區分全形、半形標點符號,只要不是出現在字串裡,其它的地方都是半形的標點符號,否則程式就會出錯。新手在切換輸入法時的疏忽,經常會輸入全形的標點,甚至是全形的空格!
以後的內容預告:
想試著把複利資料表的曲線圖畫出來,類似下面這張圖:
這張圖是我用Excel畫的,我準備挑戰一下,用Python來實現它。雖然我學過了N種語言,但如何用Python畫圖仍然是一無所知,準備使用Google搜尋和英語技能來逐步解決這個問題。
另外,我快速用C#寫了一個Windows上的笑來投資演小程式,也準備用Python示範一下。
--- END ---