1. Basic
Last updated
Last updated
自右而左的Assignment:在幾乎所有的程式語言中,=
的記號均為assignment,意是把右方演算的結果assign(指派)給左方的變數。右側的運算必然會產生一個某種變數型態的值,當把這樣的變數型態assign給左側的變數時,左側的變數便會自動被設定為該型態。x=3
, y=3
, x==y
若以英文表達的話,應該讀成「3 is assigned to x, 3 is assigned to y, therefore x is equal to y」。但,若以中文表達的話,則會讀成「X等於3、Y等於3、所以X等於Y」,顯然中文日常慣用的語意邏輯會較不清楚,正確地來說,應該讀成「把3指定給X、把3指定給Y,那麼若測試X是否等於Y,結果為真。」下例a = 2
,那麼a就是整數的2
;若是a = 2.0
,那麼a就會是浮點數(floating point,也就是有小數點的)的a
。
那「等於」的符號是什麼?如果想要在程式語言中表達「相等」,通常是連續兩個等號==
,例如1/2 == 4/2
,為邏輯運算式,邏輯運算的結果會得到true
或false
。
在Python中最特別的是,Assignment的使用可以多對多,例如a, b = 1, 2
int
、float
、list
, dictionary
是python這個程式語言的內建資料型態,可參閱官方對的說明。常見的型態有以下幾種:
真偽True
與 False
數值Numeric Types— int
(整數), float
(有小數點的), long, complex
floating point number: 例如 b = 12.3
integer: 例如c = 123
序列Sequence Types— str
(文字字串), unicode, list
, tuple
, bytearray, buffer, xrange。
list: alist = []
tuple: ab = (1, 2, 3)
集合Set Types— set
, frozenset
對應Mapping Types— dict
。例如bdict = {1:2, 3:4, '5':6, '7':'8', 9:'10.11', 12:[13, 14, 15], 13:{14:'15', '16':[17, 18]}}
檔案File Objects
利用Assignment(例如c = 9.0
)讓該變數初始化為浮點數形態。 也可利用內建函式強制轉換型別如float(a)/b
。
s = ""
可初始化一個string型態的變數。意即,藉此告知編譯器,s是一個string,只是暫時是空的。 若要在格式化輸出中輸出為字串,控制符號為%s
。
輸入以下程式碼並觀察結果。
len()
可用以計算string長度。
s[0]
、s[1]
分別表示取第1個字元和第2個字元;
s[-1]
、s[-2]
代表分別取倒數第1個字元和第2個字元。
s[1:3]
表示取第1個到第2個字元(小於3)。
s[1:]
表示取第1個以後的所有字元;s[:3]
表示只取0~2個字元(小於3) s[:-1]
表示不取倒數最後一個字元。
%d
means printing as decimal number
%s
means printing as string
%f
means print as floating point number
Output:
常見錯誤:前面字串中所預留的位置和後面所欲帶入的變數/數值數量若不相同會怎樣?例如下面這個例子中,後面的arguments只有一個,前面則有兩個formatted slot。
Error message
type()
可以用來偵測變數型態。
除了在列印的時候,可以用%d
或者%f
等控制字元將要列印的結果轉為某種格式以進行列印外(其機制其實是把後面要印的那些結果全部轉為字串,只是用控制符號來限制,要轉為「長什麼樣子」的字串)。我們也可以強制要求程式把某一種變數形態轉為另外一種變數形態,如以下範例。
float(a)
-> 把a強制轉換為「浮點數」
str(a)
-> 把a強制轉換為「字串」
int(a)
-> 把a強制轉為整數
加(+)、減(-)、乘(*)、除(/)、次方(**)、取餘數(%)
四則運算的計算方式和普遍數學的運算相同,由左而右,括號內先做,先乘除後加減。
**
- "power of."
%
- "mod" e.g., 5%3==2
, 4%2==0
.
/
- "divide" varied by data type of numberator and denominator
變數型態會受變數所影響,如果將Integer乘上float的話,整個變數會變成float。如下面的例子中,type將會是float。
字串除以數字:如果把字串除以整數的話會產生什麼樣的情形?字串是沒辦法除以整數的,因為沒有意義,所以會產生TypeError。
攝氏tc溫度等於華氏tf溫度-32後乘以5/9。
用攝氏溫度反求華氏溫度怎麼求?
raw_input()
函式可以用以讀取鍵盤輸入,也就是你可以把raw_input()
的結果assign給某個變數。執行起來的時候,程式介面會要求你輸入數值。但以下程式會遇到兩個錯誤,請查google嘗試解決他。
變數型態的說明與定義可參閱。或者參考進行練習,該練習為Datacamp的內容。
不可使用(why?)
關於Python程式寫作的風格,可參考,其中,一節有提到變數要如何命名。例如:若全部是大寫的,多半是常數,例如最大寬度、PI的值;若是底線開頭的,應該是區域變數(Local variable,你還不用知道)。
在列印輸出時,有時候我們會希望在前後多印出一些字串來說明印出來的那個結果是什麼。此時要用print formatting 。以print("my name is %s, age %s"%(name, 36.1234567))
為例,其表示要將後面那兩個變數或者數值的內容,放到前面兩個%s
的位置,且%s
是表示,要用字串來輸出。
參考資料:可以參考這篇來了解%d
和.format()
另外一種print formatting的寫法。也可參考以下網址的內容: