首頁 > 其他

Python:[4]變數,表示式和語句

2019-12-01 04:35:59

Python(英國發音:/?pa?θ?n/ 美國發音:/?pa?θɑ?n/),是一種物件導向、直譯式計算機程式語言,具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且容易理解的標準庫,能夠輕鬆完成很多常見的任務。它的語法簡捷和清晰,儘量使用無異義的英語單詞,與其它大多數程式設計語言使用大括號不一樣,它使用縮進來定義語句塊。


1

變數是指向各種型別值的名字,以後再用到某個值時,直接參照這個名字即可,不用在寫具體的值。在Python中,變數的使用環境非常寬鬆。沒有明顯的變數宣告,而且型別不是固定的。你可以把一個整數賦值給變數,如果覺得不合適,把字串賦值給它完全可以。>>> x = 100>>> print x100>>> x = "China">>> print xChina

2

在別的語言中這是不允許的,若把字串賦值給整數變數是錯誤的。我覺得這樣做是合理的,難道書櫃只能放書,擱別的東西就不行嗎?字串必須以引號標記開始,並以之標記結束。如果你不能確定變數或資料的型別,就用直譯器內建的函數type確認。如下:>>> type("Hello,World!")(type 'str')>>> type(17)(type 'int')>>> x = "QHD">>> type(x)<type 'str'>「Hello,World!」屬於字串型別,變數x也是字串型別,17屬於整數型別。

3

帶有小數點的數位叫做浮點數。檢查3.0是否為浮點數。如下:>>> type(3.0)(type 'float')只要是用雙引號或單引號括起來的值,都屬於字串。例如:>>> type("31")(type 'str')>>> type("2.5")(type 'str')>>> type("P001")<type 'str'>

1

程式中的變數名要有實際意義。變數名可以是由數位和字元組成的任意長度的字串,但必須以字母開頭。python是區分大小寫的。舉個例子來說,Name和name是兩個不同的變數名。請看下面的例子:>>> Name = "pi">>> name = "da">>> print name, Nameda pi

2

符號「_」連線由多個單詞組成的變數名。請看下面的例子:>>> my_name = "pi da qing">>> print my_namepi da qing

3

如果定義了一個錯誤的變數名,直譯器顯示語法錯誤。請看下面的例子:>>> 1_first = "第一名"SyntaxError: invalid syntax>>> my$ = "dollar"SyntaxError: invalid syntax>>> print = 12345SyntaxError: invalid syntax

4

變數1 ˉrst不應以數位開頭;變數my$包含非法的字元;變數名print與python定義的關鍵字print重名,所以print不能再當作變數名了。python定義了28個關鍵字:and continue else for import not raise assert def except from in or returnbreak del exec global is pass try class elif finally if lambda print while

1

語句是Python直譯器可以執行的命令。我們已經知道兩條語句:列印和賦值。

2

賦值語句有兩個作用:一是建立新的變數,二是將值賦予變數。任何變數在使用時,都必須賦值。否則,被視為不存在的變數。下面例子有三條賦值語句。第一個是將值「How are you?」賦值給字串變數message;第二個是將18賦值給整數變數n;第三個是將數位3.1415926賦值給浮點變數pi。當列印不存在的變數時,系統給出錯誤資訊。如下:>>> message = "How are you?">>> n = 18>>> pi = 3.1415926>>> print abc #錯誤語句,沒有該變數。NameError: name 'i' is not defined

3

一般的情況下,我們用狀態圖表示變數的狀態。左邊是變數的名稱,右邊是變數值,中間的箭頭指向值。狀態圖顯示了賦值語句的最終操作結果(如圖 2.1)。


4

也可以用函數type檢查變數的型別。變數的型別就是它所指向的值的型別。>>> type(message)(type 'str')>>> type(n)(type 'int')>>> type(pi)(type 'float')

5

列印語句print輸出表示式的計算結果。單個變數也可以看作是表示式。如果你想在一行列印多個變數,可以用逗號將這些變數隔開,逗號禁止換行。例如:>>> x = 3>>> y = 8.9>>> print x, y, "hello", 93 8.9 hello 9>>> print x, 't', y, "t", "hello", "t", 93 8.9 hello 9

6

第二個print語句用製表符將這些變數隔開。下面是一些特殊符號的列印方法:>>> #列印單引號>>> print "''"''>>> #列印雙引號>>> print '""'"">>> #列印換行符>>> print 'n'>>> #列印反斜槓>>> print ''

1

表示式由值、變數和運算子組成。如果在命令列上輸入表示式,直譯器驚醒計算,並顯示結果:>>> 23.3 + 1.224.5

2

單一的值或變數也可以當作是表示式:>>> 4545>>> x = 1.2>>> x1.2

3

計算表示式和列印值是有很大區別的,要注意區分。>>> "I am free!"'I am free!'>>> message = "I am free!">>> message'I am free!'>>> print messageI am free!>>> print "I am free!"I am free!

4

當Python顯示表示式的值時,顯示的格式與你輸入的格式是相同的。如果是字串,就意味著包含引號。而列印語句輸出的結果不包括引號,只有字串的內容。在指令碼檔案中,任何表示式都被認為是合法的語句,但是這個語句不做任何事。你可以試著執行下面的指令碼檔案。# 表示式在指令碼檔案不做任何事。1234534.90"I am free!"3 + 5這個指令碼根本沒有任何輸出。

1

運算子是像加號和減號之類的特殊符號。運算子操作的物件是運算元。符號+, -, / ,()的意義與數學中的意義基本相同。一個星號代表的是乘法,兩個星號代表的是乘冪。請看下面的例子:下面的例子都是合法的Python表示式:20 + 32hour - 1hour * 60 + minuteminute / 605 ** 2(5+9) * (15-7)

2

運算元還可以是變數,當運算執行前,變數被它所指向的值替代。>>> 3 * 412>>> 3 ** 481>>> x = 9>>> y = 6>>> x * y54

3

需要注意的是除法運算。如果除數和被除數都是整數,那麼結果是截調小數部分的整數。解決的辦法是將除數和被除數任意之一加小數點,或是加小數點和零。例如:>>> 5 / 22>>> 5.0 / 22.5>>> 5 / 2.02.5>>> 5 / 2.2.5

4

模數操作符「%」計算兩個整數的餘數:>>> print 5 % 32>>> print 123 % 123Python還支援複數的運算。複數有兩種表示方法,一種如:>>> a = 1 + 5j>>> b = 4j另一種是用函數的方法:>>> x =complex(1, 5)>>> print x(1+5j)複數也能夠進行數學運算:>>> a = 3 +3j>>> b = 4 + 4j>>> print a + b(7+7j)>>> print a - b(-1-1j)>>> print a * b24j>>> print a / b(0.75+0j)

1

如果表示式中有不止一個運算子,那麼計算的順序依靠「優先規則」。Python運算子的「優先規則」和算術的相同。以下關於「優先規則」的建議:

2

小括號有最高的優先順序。在表示式中,括號內的首先計算。我們可以利用括號使表示式更容易讀懂,而不影響計算結果。

3

乘冪運算的優先順序僅次於小括號。例如:>>> (1 + 3) ** 216>>> 3 * 3 ** 227

4

乘法和除法的優先順序相同,比加減法的優先順序高。加減法的優先順序也是相同的。例如:>>> 2 + 3 * 3 + 213>>> 4 - 10 / 52>>> 4 * 5 / 210具有相同優先權的運算子從左到右進行計算。

1

通常情況下,字串放在雙引號或單引號之間。字串不能進行除法、減法和字串之間的乘法運算,下面的操作都是非法的:>>> "hello" / 3TypeError: unsupported operand type(s) for /: 'str' and 'int'>>> string = "string">>> string - 1TypeError: unsupported operand type(s) for -: 'str' and 'int'>>> string * "hello"TypeError: u
nsupported operand type(s) for *: 'str' and 'str'加法「+」能夠連線兩個字串成為一個字串。例如:>>> string1 = "Red">>> string2 = "Hat">>> print string1 + string2RedHat

2

由於「Red」和「Hat」沒有空格,所以它們非常親密的連在一起。如果想讓字串之間有空格,可以建一個空字元變數,插在相應的字串之間讓它們隔開,或是在字串中加入相應的空格。>>> space = " ">>> str1 = "A">>> str2 = "B">>> str3 = "C">>> print str1 + space + str2 + space + str3A B C>>> astr = 'Linux '>>> bstr = ' Unix '>>> cstr = 'OS/2'>>> print astr + bstr + cstrLinux Unix OS/2

3

符號「」也可以操作字串。只是其中一個運算元必須是字串,另一個必須是整數。字串被重複整數遍。例如:>>> 3 * "Love"'LoveLoveLove'>>> string = "python">>> string * 2'pythonpython'

1

到目前為止,我們已經學習了程式的幾大元素:變數,表示式和語句。但只是孤立的學習,還沒有考慮怎樣把他們組合起來,完成一項具體的操作。例如,我們可以把加法操作和列印語句結合起來,顯示加法表示式的結果:>>> print 10 + 919

2

實際上,加法操作發生在列印操作之前,所以這兩個動作不是同時發生的。任何涉及到數位,字串和變數的表示式都可作為Print語句的引數。例如:>>> interest = 0.003>>> saving = 12345.98>>> print "Total: ", saving + saving * interestTotal: 12383.01794

3

賦值語句,即等號「=」的右邊可以是任意的表示式。表示式的值是什麼型別,變數就是什麼型別。>>> int = 5>>> str = "hello">>> var = int * 7>>> type(var)<type 'int'>>>> var = str + " world">>> type(var)<type 'str'>

4

有一點要記住,賦值語句的左邊不能出現表示式。像下面的語句是非法的:>>> name + 9 = 10 #錯誤的賦值語句。SyntaxError: can't assign to operator

1

當程式越來越複雜時,讀懂它就變得非常困難。程式的各部分之間緊密銜接,想依靠部分的程式碼來了解整個程式要做的,是困難的。因此,好的習慣是在程式中加入適當的注釋,以解釋它要做的事情。注釋必須以符號「#」開始:# 列印1+1的結果print 1 + 1註釋可以單獨佔一行,也可以放在語句行的末尾:print 1 + 1 # 列印1+1的結果

2

從符號「#」開始,到這一行的末尾之間的所有內容都被忽略,這部分對程式沒有影響。注釋資訊主要是方便了程式設計師,一個新來的程式設計師通過註釋資訊,能夠較快的了解程式所做的;原來的程式設計師在經過一段時間後,可能對自己的程式不了解了,利用注釋資訊就能較快的熟悉。

IT145.com E-mail:sddin#qq.com