官术网_书友最值得收藏!

第2章 認識變量與基本數學運算

本章摘要

2-1 用Python做計算

2-2 認識變量

2-3 認識程序的意義

2-4 認識注釋的意義

2-5 Python變量與其他程序語言的差異

2-6 變量的命名原則

2-7 基本數學運算

2-8 指派運算符

2-9 Python等號的多重指定使用

2-10 刪除變量

2-11 Python的斷行

2-12 專題——復利計算/計算圓面積與圓周長

本章將從基本數學運算開始,一步一步講解變量的使用與命名,接著介紹Python的算術運算。

2-1 用Python做計算

假設讀者到麥當勞打工,一小時可以獲得120元,如果想計算一天工作8小時,可以獲得多少工資,可以用計算器執行120×8,然后得到執行結果。在Python Shell中,可以使用下列方式計算。

如果一年實際工作天數是300天,可以用下列方式計算一年所得。

如果讀者一個月的花費是9000元,可以用下列方式計算一年可以存儲多少錢。

上述先計算一年的花費,再用一年的收入減去一年的花費,可以得到所存儲的金額。本章將一步一步推導應如何以程序思想,處理一般的運算問題。

2-2 認識變量

2-2-1 基本概念

變量是一個暫時存儲數據的地方,對于2-1節的內容而言,如果時薪從120元調整到125元,想要重新計算一年可以存儲多少錢,將發現所有的計算需要重新開始。為了解決這個問題,可以考慮將時薪設為一個變量,未來如果調整薪資,直接更改變量內容即可。

在Python中可以用“=”設置變量的內容,在這個實例中,建立了一個變量x,然后用下列方式設置時薪。

如果想要用Python列出時薪,可以使用print( )函數。

如果時薪從120元調整到125元,那么可以用下列方式表達。

  在Python Shell環境,也可以直接輸入變量名稱,即可獲得執行結果。

一個程序中是可以使用多個變量的,如果想計算一天工作8小時,一年工作300天,可以賺多少錢,假設用變量y表示一年工作所賺的錢,可以用下列方式計算。

如果每個月花費是9000元,使用變量z表示每個月的花費,可以用下列方式計算每年的花費,使用a表示每年的花費。

如果想計算每年可以存儲多少錢,使用b表示每年所存儲的錢,可以使用下列方式計算。

上述語句順利地使用Python Shell計算了每年可以存儲多少錢,可是上述使用Python Shell做運算潛藏的最大問題是,只要過了一段時間,我們可能忘記當初所有設置的變量是代表什么意義。因此在設計程序時,如果可以為變量取個有意義的名稱,未來看到程序時,可以比較容易記得。下列是筆者重新設計的變量名稱。

時薪hourly_salary,用此變量代替x,即每小時的薪資。

年薪annual_salary,用此變量代替y,即一年工作所賺的錢。

月支出monthly_fee,用此變量代替z,即每個月的花費。

年支出annual_fee,用此變量代替a,即每年的花費。

年存儲annual_savings,用此變量代替b,即每年所存儲的錢。

如果現在使用上述變量重新設計程序,可以得到下列結果。

相信經過上述說明,讀者應該了解變量的基本意義了。

2-2-2 認識變量的地址

Python是一種動態語言,它處理變量的過程與一般靜態語言不同。對于靜態語言而言,例如C、C++,當聲明變量時內存就會預留空間存儲此變量的內容,例如,若聲明與定義x=10, y=10時,內存內容如下方左圖所示。

對于Python而言,變量所使用的是參照(reference)地址的觀念,設置一個變量x等于10時,Python會在內存某個地址存儲10,此時我們建立的變量x好像是一個標志(tags),標志內容是存儲10的內存地址。如果有另一個變量y也是10,則變量y的標志內容也是存儲10的內存地址,如上方右圖所示。

使用Python可以使用id( )函數獲得變量的地址,可參考下列語法。

實例:列出變量的地址,相同內容的變量會有相同的地址。

2-3 認識程序的意義

延續上一節的實例,如果時薪改變、工作天數改變或每個月的花費改變,所有輸入與運算都要重新開始,而且每次都要重新輸入程序代碼,這是一件很費勁的事,同時很可能會輸入錯誤,為了解決這個問題,可以使用Python Shell打開一個文件,將上述運算存儲在文件內,這個文件就是所謂的程序。未來有需要時,再打開重新運算即可。

程序實例ch2_1.py:使用程序計算每年可以存儲多少錢,下面是整個程序設計。

執行結果

未來時薪改變、工作天數改變或每個月的花費改變時,只要適度修改變量內容,就可以獲得正確的執行結果。

2-4 認識注釋的意義

程序ch2_1.py中盡管已經為變量設置了有意義的名稱,但時間一久,常常還是會忘記各個指令的內涵。所以筆者建議,設計程序時,應適度地為程序代碼加上注釋。在1-10節已經講解了注釋的方法,下面將直接以實例說明。

程序實例ch2_2.py:重新設計程序ch2_1.py,為程序代碼加上注釋。

執行結果 與ch2_1.py相同。

相信經過上述注釋后,即使再過10年,只要一看到程序也可輕松了解整個程序的意義。

2-5 Python變量與其他程序語言的差異

許多程序語言變量在使用前需要先聲明,Python對于變量的使用則是可以在需要時,再直接設置使用。有些程序語言在聲明變量時,需要設置變量的數據類型,Python則不需要設置,它會針對變量值的內容自行設置數據類型。

2-6 變量的命名原則

Python對于變量的命名,在使用時有一些規則要遵守,否則會造成程序錯誤。

(1)必須由英文字母、_(下畫線)或中文開頭,建議使用英文字母。

(2)變量名稱只能由英文字母、數字、_(下畫線)或中文組成。

(3)英文字母大小寫是敏感的,例如,Name與name被視為不同變量名稱。

(4)Python系統保留字(或稱關鍵詞)不可當作變量名稱,會讓程序產生錯誤,Python內建函數名稱不建議當作變量名稱。

雖然變量名稱可以用中文,不過筆者不建議使用中文,將來可能會有兼容性的問題。

下列是不可當作變量名稱的Python系統保留字

下列是不建議當作變量名稱的Python系統內建函數,若是不小心將系統內建函數名稱當作變量,程序本身不會錯誤,但是原函數功能會喪失。

實例1:下列是一些不合法的變量名稱。

實例2:下列是一些合法的變量名稱。

    SUM
    _fg
    x5
    總和

實例3:下列3個代表不同的變量。

    SUM
    Sum
    sum

2-7 基本數學運算

2-7-1 四則運算

Python的四則運算是指加( + ) 、減( - ) 、乘( * )和除( / )。

實例1:下列是加法與減法運算實例。

實例2:乘法與除法運算實例。

2-7-2 余數和整除

余數(mod)所使用的符號是“%”,可計算出除法運算中的余數。整除所使用的符號是“//”,是指除法運算中只保留整數部分。

實例:余數和整除運算實例。

其實在程序設計中求余數是非常有用的,例如,如果要判斷數字是奇數或偶數可以用%,例如"num % 2",如果num是奇數,所得結果是1;如果num是偶數,所得結果是0。當讀者學會更多指令后,筆者會做更多的應用說明。

2-7-3 次方

次方的符號是“**”。

實例:平方、次方的運算實例。

2-7-4 Python語言控制運算的優先級

Python語言碰上計算式同時出現在一個指令內時,除了括號“( )”內部運算最優先外,其余計算優先次序如下。

(1)次方;

(2)乘法、除法、求余數(%)、求整數(//),彼此依照出現順序運算;

(3)加法、減法,彼此依照出現順序運算。

實例:Python語言控制運算的優先級的應用。

2-8 指派運算符

常見的指派運算符如下。

實例:指派運算符的實例說明。

2-9 Python等號的多重指定使用

使用Python時,可以一次設置多個變量等于某一數值。

實例1:設置多個變量等于某一數值的應用。

Python也允許多個變量同時指定不同的數值。

實例2:設置多個變量,每個變量有不同值。

當執行上述多重設置變量值后,甚至可以執行更改變量內容。

實例3:將兩個變量內容交換。

上述原先x, y分別設為10, 20,但是經過多重設置后變為20, 10。其實可以使用多重指定更靈活地應用Python,在2-7-2節有求商和余數的實例,可以使用divmod( )函數一次獲得商和余數,可參考下列實例。

上述使用了divmod(9,5)方法一次獲得了元組值(1,4),第8章會介紹元組,然后使用多重指定將此元組(1,4)分別設置給x和y變量。

2-10 刪除變量

程序設計時,如果某個變量不再需要,可以使用del指令將此變量刪除,相當于可以收回原變量所占的內存空間,以節省內存空間。刪除變量的格式如下:

    del 變量名稱

實例:驗證變量名稱回收后,將無法再使用。此例中嘗試輸出已刪除的變量,然后程序出現錯誤消息。

2-11 Python的斷行

2-11-1 一行有多個語句

在Python中允許一行有多個,彼此用“;”隔開即可,盡管Python有提供此功能,不過筆者不鼓勵如此撰寫程序代碼。

程序實例ch2_3.py:一行有多個語句的實例。

執行結果

2-11-2 將一個語句分成多行

在設計大型程序時,常會碰上一個語句很長,需要分成兩行或更多行撰寫,此時可以在語句后面加上“\”符號,Python解釋器會將下一行的語句視為這一行的語句。特別注意,在“\”符號右邊不可以加上任何符號或文字,即使是注釋符號也是不允許的。

另外,也可以在語句內使用小括號,如果使用小括號,就可以在語句右邊加上注釋符號。

程序實例ch2_4.py:將一個語句分成多行的應用。

執行結果

2-12 專題——復利計算/計算圓面積與圓周長

2-12-1 銀行存款復利的計算

程序實例ch2_5.py:銀行存款復利的計算。假設目前銀行年利率是1.5%,復利公式如下:

    本金和 = 本金×(1 + 年利率)n     # n是年

現有一筆5萬元存款,請計算5年后的本金和。

執行結果

2-12-2 計算圓面積與周長

程序實例ch2_6.py:假設圓半徑是5cm,圓面積與圓周長計算公式分別如下:

執行結果

在程序語言的設計中,有一個概念是常量(named constant),這種常量是不可更改內容的。上述計算圓面積或圓周長所使用的PI是圓周率,這是一個固定的值,由于Python語言沒有提供此常量(names constant)的語法,上述程序筆者用大寫PI當作常量的變量,這是一種習慣,未來讀者可以用這種方式處理固定內容的變量。

習題

1. 請重新設計c h2_1.py,將打工時薪改為150元。(2-1~2-3節)

2. 重新設計ch2_5.py,假設是單利率,5年期間可以領多少利息?(2-5~2-7節)

3. 重新設計ch2_5.py,假設期初本金是100 000元,年利率是2%,這是復利計算,請問10年后本金總和是多少?(2-5~2-12節)

4. 一個幼兒園買了100個蘋果給學生當營養午餐,學生人數是23人,每個人午餐可以吃一個,請問這些蘋果可以吃幾天?第幾天蘋果會不夠供應?同時列出缺少了幾個。(2-5~2-12節)

5. 地球和月球的距離是384 400千米,假設火箭飛行速度是每分鐘400千米,請問從地球飛到月球需要多少分鐘?(2-5~2-12節)

6. 假設圓柱半徑是20厘米,高度是30厘米,請計算此圓柱的體積。圓柱體積計算公式是:圓面積×圓柱高度。(2-5~2-12節)

7. 圓周率PI是一個數學常數,常常使用希臘字母表示,它的物理意義是圓的周長和直徑的比率。歷史上第一個無窮級數公式稱為萊布尼茨公式,它的計算公式如下:(2-5~2-12節)

請分別計算下列級數的執行結果。

(1)

(2)

(3)

  上述級數如果要收斂到我們熟知的3.14159需要相當長的級數計算。

萊布尼茨(Leibniz,1646—1716)是德國人,在世界數學舞臺上占有一席之地,他本人另一個職業是律師,許多數學公式都是他在各大城市通勤期間完成的。數學歷史上有一個兩派說法的無解公案,有人認為他是微積分的發明人,也有人認為發明人是牛頓(Newton)。

8. 尼拉卡莎級數也是應用于計算圓周率PI的級數,此級數收斂的速度比萊布尼茨級數更好,更適合于用來計算PI,它的計算公式如下:

請分別計算下列級數的執行結果。

(a)

(b)

主站蜘蛛池模板: 平山县| 鹤山市| 迁西县| 凤庆县| 海伦市| 庆元县| 甘德县| 慈利县| 确山县| 汶川县| 福泉市| 陇西县| 册亨县| 新宾| 柳州市| 吉林省| 禹州市| 广东省| 合川市| 晋中市| 铜梁县| 江安县| 横峰县| 于都县| 石门县| 正定县| 西乌| 弥渡县| 澄江县| 长兴县| 武清区| 个旧市| 龙南县| 双桥区| 准格尔旗| 达尔| 冀州市| 定南县| 建平县| 雅安市| 晋州市|