1囱皿、數(shù)據(jù)類型勇婴、運算符
數(shù)字
除法運算 (/) 永遠返回浮點數(shù)類型。如果要做 floor division 得到一個整數(shù)結(jié)果(忽略小數(shù)部分)你可以使用 // 運算符嘱腥;如果要計算余數(shù)耕渴,可以使用 %
可以使用 ** 運算符來計算乘方?
等號 (=) 用于給一個變量賦值。然后在下一個交互提示符之前不會有結(jié)果顯示出來
在交互模式下齿兔,上一次打印出來的表達式被賦值給變量 _橱脸。這意味著當(dāng)你把Python用作桌面計算器時,繼續(xù)計算會相對簡單
除了 int 和 float分苇,Python也支持其他類型的數(shù)字添诉,例如 Decimal 或者 Fraction。Python 也內(nèi)置對 復(fù)數(shù) 的支持医寿,使用后綴 j 或者 J 就可以表示虛數(shù)部分(例如 3+5j )
字符串
字符串有多種形式栏赴,可以使用單引號('……'),雙引號("……")都可以獲得同樣的結(jié)果 糟红。反斜杠 \ 可以用來轉(zhuǎn)義
如果你不希望前置了 \ 的字符轉(zhuǎn)義成特殊字符艾帐,可以使用 原始字符串 方式,在引號前添加 r 即可
字符串字面值可以跨行連續(xù)輸入盆偿。一種方式是用三重引號:"""...""" 或 '''...'''柒爸。字符串中的回車換行會自動包含到字符串中,如果不想包含事扭,在行尾添加一個 \ 即可
除了索引捎稚,字符串還支持 切片。索引可以得到單個字符求橄,而 切片 可以獲取子字符串今野。注意切片的開始總是被包括在結(jié)果中,而結(jié)束不被包括罐农。這使得 s[:i]+s[i:] 總是等于 s条霜。切片的索引有默認(rèn)值;省略開始索引時默認(rèn)為0涵亏,省略結(jié)束索引時默認(rèn)為到字符串的結(jié)束宰睡。您也可以這么理解切片:將索引視作指向字符 之間 蒲凶,第一個字符的左側(cè)標(biāo)為0,最后一個字符的右側(cè)標(biāo)為 n 拆内,其中 n 是字符串長度
+---+---+---+---+---+---+?
| P | y | t | h | o | n |?
+---+---+---+---+---+---+?
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
第一行數(shù)標(biāo)注了字符串非負(fù)的索引的位置旋圆,第二行標(biāo)注了對應(yīng)的負(fù)的索引。那么從i到j的切片就包括了標(biāo)有i和j的位置之間的所有字符麸恍。
對于使用非負(fù)索引的切片灵巧,如果索引不越界,那么得到的切片長度就是起止索引之差抹沪。例如刻肄,word[1:3]的長度為2.
使用過大的索引會產(chǎn)生一個錯誤:IndexError: string index out of range。
Python 中的字符串不能被修改融欧,它們是 immutable 的肄方。因此,向字符串的某個索引位置賦值會產(chǎn)生一個錯誤
2蹬癌、語法特性
多重賦值: 變量 a 和 b 同時得到了新值 0 和 1. 最后一行又用了一次多重賦值, 這體現(xiàn)出了右手邊的表達式权她,在任何賦值發(fā)生之前就被求值了。右手邊的表達式是從左到右被求值的
while 循環(huán)只要它的條件(這里指: a<10)保持為真就會一直執(zhí)行逝薪。Python 和 C 一樣隅要,任何非零整數(shù)都為真;零為假董济。這個條件也可以是字符串或是列表的值步清,事實上任何序列都可以;長度非零就為真虏肾,空序列就為假廓啊。
流程控制
for
Python 中的 for 語句與你在 C 或 Pascal 中可能用到的有所不同。 Python 中的 for 語句并不總是對算術(shù)遞增的數(shù)值進行迭代(如同 Pascal)封豪,或是給予用戶定義迭代步驟和暫停條件的能力(如同 C)谴轮,而是對任意序列進行迭代(例如列表或字符串),條目的迭代順序與它們在序列中出現(xiàn)的順序一致吹埠。在遍歷同一個集合時修改該集合的代碼可能很難獲得正確的結(jié)果第步。通常,更直接的做法是循環(huán)遍歷該集合的副本或創(chuàng)建新集合缘琅。