Python入門第3/10頁
更新時(shí)間:2007年02月08日 00:00:00 作者:
第三章 基本使用
下面我們用例子來介紹Python的基本用法。在例子中,用戶輸入和系統(tǒng)輸出靠有沒有提示(>>>和...)來分別。如果要試這些例子的話,需要鍵入提示后的所有命令,例子中沒有提示的行是系統(tǒng)的輸出。注意只有次提示的行意味著需要鍵入一個(gè)空行,這用于結(jié)束多行命令。
3.1 用Python作計(jì)算器使用
啟動(dòng)解釋程序,等待主提示>>>出現(xiàn)。解釋程序可以作為計(jì)算器使用。鍵入一個(gè)表達(dá)式,解釋程序就可以輸出結(jié)果。表達(dá)式的寫法很直觀:+,-,*,/, %, **等算符的作用和其它大多數(shù)語言(如Pascal或C)沒什么差別,括號可以用來組合。例如:
>>> 2+2
4
>>> # 這是一個(gè)注釋
... 2+2
4
>>> 2+2 # 和代碼在同一行的注釋
4
>>> (50-5*6)/4
5
>>> # 整數(shù)除法得下面的整數(shù)
... 7/3
2
>>> 7/-3
-3
>>>
和C中一樣,等于號用來給變量賦值,賦值的結(jié)果不顯示:
>>> width = 20
>>> height = 5*9
>>> width * height
900
>>>
可以同時(shí)給幾個(gè)變量賦同一個(gè)值:
>>> x = y = z = 0 # 把 x, y 和 z賦零
>>> x
0
>>> y
0
>>> z
0
>>>
Python完全支持浮點(diǎn)數(shù),混合類型的運(yùn)算會把整數(shù)先轉(zhuǎn)換成浮點(diǎn)數(shù):
>>> 4 * 2.5 / 3.3
3.0303030303
>>> 7.0 / 2
3.5
>>>
Python也提供了復(fù)數(shù),方法是用j和J作為虛數(shù)單位,如1+1j,3.14e-10j,等等。
3.2. 字符串
Python除處理數(shù)字外還可以處理字符串,字符串用單撇號或雙撇號包裹:
>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'
>>>
字符串輸出格式與輸入的樣子相同,都是用撇號包裹,撇號和其它特殊字符用用反斜杠轉(zhuǎn)義。如果字符串中有單撇號而沒有雙撇號則用雙撇號包裹,否則應(yīng)該用單撇號包裹。后面要介紹的print語句可以不帶撇號或轉(zhuǎn)義輸出字符串。
字符串可以用+號連接起來,用*號重復(fù):
>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '<' + word*5 + '>'
'<HelpAHelpAHelpAHelpAHelpA>'
>>>
字符串可以象在C中那樣用下標(biāo)索引,字符串的第一個(gè)字符下標(biāo)為0。
Python沒有單獨(dú)的字符數(shù)據(jù)類型,一個(gè)字符就是長度為一的字符串。象在Icon語言中那樣,可以用片段(slice)記號來指定子串,片段即用冒號隔開的兩個(gè)下標(biāo)。
>>> word[4]
'A'
>>> word[0:2]
'He'
>>> word[2:4]
'lp'
>>>
片段有很好的缺省值:第一下標(biāo)省略時(shí)缺省為零,第二下標(biāo)省略時(shí)缺省為字符串的長度。
>>> word[:2] # 前兩個(gè)字符
'He'
>>> word[2:] # 除前兩個(gè)字符串外的部分
'lpA'
>>>
注意s[:i] + s[i:] 等于 s 是片段運(yùn)算的一個(gè)有用的恒等式。
>>> word[:2] + word[2:]
'HelpA'
>>> word[:3] + word[3:]
'HelpA'
>>>
不合理的片段下標(biāo)可以很好地得到解釋:過大的下標(biāo)被換成字符串長度,上界小于下界時(shí)返回空串。
>>> word[1:100]
'elpA'
>>> word[10:]
''
>>> word[2:1]
''
>>>
下標(biāo)允許為負(fù)數(shù),這時(shí)從右向左數(shù)。例如:
>>> word[-1] # 最后一個(gè)字符
'A'
>>> word[-2] # 倒數(shù)第二個(gè)字符
'p'
>>> word[-2:] # 最后兩個(gè)字符
'pA'
>>> word[:-2] # 除最后兩個(gè)字符外的部分
'Hel'
>>>
但要注意的是 -0 實(shí)際還是 0,所以它不會從右向左數(shù)!
>>> word[-0] # (因?yàn)?nbsp;-0 等于 0)
'H'
>>>
超出范圍的片段下標(biāo)被截?cái)啵诜瞧蔚那闆r下不要這樣:
>>> word[-100:]
'HelpA'
>>> word[-10] # 錯(cuò)誤
Traceback (innermost last):
File "<stdin>", line 1
IndexError: string index out of range
>>>
記住片段意義的最好方法是把下標(biāo)看成是字符 之間的點(diǎn),第一個(gè)字符的左邊界號碼為0。有n個(gè)字符的字符串的最后一個(gè)字符的右邊界下標(biāo)為n,例如:
+---+---+---+---+---+
| H | e | l | p | A |
+---+---+---+---+---+
0 1 2 3 4 5
-5 -4 -3 -2 -1
第一行數(shù)字給出字符串中下標(biāo)0到5的位置,第二行給出相應(yīng)的負(fù)下標(biāo)。從i到j(luò)的片段由在邊界i和j之間的字符組成。
對于非負(fù)下標(biāo),如果下標(biāo)都在界內(nèi),則片段的長度為下標(biāo)的差。例如,word[1:3] 的長度為 2。
內(nèi)置函數(shù)len()返回字符串的長度:
>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34
>>>
多行的長字符串也可以用行尾反斜杠續(xù)行,續(xù)行的行首空白不被忽略,如
hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
Note that whitespace at the beginning of the line is\
significant.\n"
print hello
結(jié)果為
This is a rather long string containing
several lines of text just as you would do in C.
Note that whitespace at the beginning of the line is significant.
對于特別長的字符串(比如包含說明的幾段文字),如果用上面的方式每行都用\n\結(jié)尾是很麻煩的,特別是這樣無法用象Emacs這樣的功能強(qiáng)大的編輯器重新編排。對這種情況,可以使用三重撇號,例如
hello = """
This string is bounded by triple double quotes (3 times ").
Unescaped newlines in the string are retained, though \
it is still possible\nto use all normal escape sequences.
Whitespace at the beginning of a line is
significant. If you need to include three opening quotes
you have to escape at least one of them, e.g. \""".
This string ends in a newline.
"""
三重撇號字符串也可以用三個(gè)單撇號,沒有任何語義差別。
多行的字符串常量可以直接連接起來,字符串常量之間用空格分隔則在編譯時(shí)可以自動(dòng)連接起來,這樣可以把一個(gè)長字符串連接起來而不需要犧牲縮進(jìn)對齊或性能,不象用加號連接需要運(yùn)算,也不象字符串串內(nèi)的換行其行首空格需要保持。
3.3 列表
Python中有幾種復(fù)合數(shù)據(jù)類型,用來把其它值組合到一起。其中最靈活的是列表,可以寫成在方括號之間用逗號隔開的若干值(項(xiàng))。列表的項(xiàng)不必取同一類型。
>>> a = ['spam', 'eggs', 100, 1234]
>>> a
['spam', 'eggs', 100, 1234]
>>>
象字符串下標(biāo)那樣,列表下標(biāo)從0開始,列表可以取片段,可以連接,等等:
>>> a[0]
'spam'
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
['eggs', 100]
>>> a[:2] + ['bacon', 2*2]
['spam', 'eggs', 'bacon', 4]
>>> 3*a[:3] + ['Boe!']
['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boe!']
>>>
與字符串不同的是列表是可變的,可以修改列表的每個(gè)元素:
>>> a
['spam', 'eggs', 100, 1234]
>>> a[2] = a[2] + 23
>>> a
['spam', 'eggs', 123, 1234]
>>>
也可以給一個(gè)片段重新賦值,這甚至可以改變表的大?。?
>>> # 替換若干項(xiàng):
... a[0:2] = [1, 12]
>>> a
[1, 12, 123, 1234]
>>> # 去掉若干項(xiàng):
... a[0:2] = []
>>> a
[123, 1234]
>>> # 插入若干項(xiàng):
... a[1:1] = ['bletch', 'xyzzy']
>>> a
[123, 'bletch', 'xyzzy', 1234]
>>> a[:0] = a # 在開頭插入自身
>>> a
[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
>>>
內(nèi)置函數(shù)也使用于列表:
>>> len(a)
8
>>>
可以建立嵌套列表(表的元素也是列表),如:
>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2
>>> p[1].append('xtra') # 列表方法
>>> p
[1, [2, 3, 'xtra'], 4]
>>> q
[2, 3, 'xtra']
>>>
注意這個(gè)例子中p[1]和q實(shí)際是同一個(gè)對象!也就是說它們只不過是同一個(gè)東西的兩個(gè)名字(引用)而已。
3.4 編程初步
Python當(dāng)然不是只能用來把兩個(gè)數(shù)加到一起,它可以完成很復(fù)雜的工作。例如,我們可以寫出Fibonacci序列的開始幾個(gè):
>>> # Fibonacci 序列:
... # 兩個(gè)元素的和定義下一個(gè)
... a, b = 0, 1
>>> while b < 10:
... print b
... a, b = b, a+b
...
1
1
2
3
5
8
>>>
這個(gè)例子介紹了幾個(gè)新特色。
第一行包含一個(gè)多重賦值: 變量a和b同時(shí)得到新值0和1。在最后一行又用了多重賦值,我們可以看出賦值時(shí)先把右邊都算出后再進(jìn)行賦值。
while循環(huán)當(dāng)循環(huán)條件(這里即: b < 10)成立時(shí)不斷執(zhí)行。在Python中和C中一樣,非零整數(shù)值為真值,零為假值。條件也可以是字符串或列表或任何序列,長度為非零的為真,空序列為假。例子中所用的是一個(gè)簡單比較。標(biāo)準(zhǔn)的比較算符和C一樣:
<, >, ==, <=, >= 和 !=。
循環(huán)體是縮進(jìn)的:縮進(jìn)是Python用來組合語句的方式。Python目前還不能提供智能自動(dòng)縮進(jìn),所以你需要自己為每個(gè)縮進(jìn)行鍵入制表符或空格。實(shí)際使用中你可以用文本編輯程序?yàn)镻ython 準(zhǔn)備復(fù)雜的輸入,多數(shù)文本編輯程序都有自動(dòng)縮進(jìn)的功能。在交互輸入復(fù)合語句時(shí)必修附加一個(gè)空行以指示復(fù)合語句的完成(因?yàn)榻忉尦绦驘o法猜到哪是語句的最后一行)。print語句顯示后面的表達(dá)式值。這和直接寫出表達(dá)式不同,它可以顯示多個(gè)表達(dá)式和字符串,而且可以用于程序文件中。顯示時(shí)字符串沒有撇號,各項(xiàng)目之間插入一個(gè)空格,所以你可以以精美的格式顯示,如:
>>> i = 256*256
>>> print 'The value of i is', i
The value of i is 65536
>>>
在尾部寫一個(gè)逗號可以避免最后換行:
>>> a, b = 0, 1
>>> while b < 1000:
... print b,
... a, b = b, a+b
...
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>>
注意如果前一行沒有結(jié)束的話系統(tǒng)在顯示提示之前先換行。
Python還提供了和C語言一樣的printf格式的輸出方式,這是用%實(shí)現(xiàn)的,左邊是格式,如:
>>> print 'The value of 1/7 is approximately %5.3f.' % 0.142857
The value of 1/7 is approximately 0.143.
>>>
如果有多個(gè)需要輸出的項(xiàng)百分號右邊的項(xiàng)可以是一個(gè)序組,如
>>> print "Name: %-10s Age: %3d" % ("White", 31)
Name: White Age: 31
相關(guān)文章
Python利用Rasa框架和SMTPlib庫實(shí)現(xiàn)郵件回復(fù)助手
在現(xiàn)代辦公場景中,處理大量郵件是一項(xiàng)既耗時(shí)又容易出錯(cuò)的任務(wù),本文將詳細(xì)介紹如何使用Python的Rasa框架和SMTPlib庫建一個(gè)智能的郵件自動(dòng)回復(fù)助手,感興趣的可以了解下2025-04-04
通過數(shù)據(jù)庫向Django模型添加字段的示例
這篇文章主要介紹了通過數(shù)據(jù)庫向Django模型添加字段的示例,Django是人氣最高的Python web開發(fā)框架,需要的朋友可以參考下2015-07-07
python selenium 執(zhí)行完畢關(guān)閉chromedriver進(jìn)程示例
今天小編就為大家分享一篇python selenium 執(zhí)行完畢關(guān)閉chromedriver進(jìn)程示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
python安裝numpy&安裝matplotlib& scipy的教程
下面小編就為大家?guī)硪黄猵ython安裝numpy&安裝matplotlib& scipy的教程。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
python實(shí)現(xiàn)DEM數(shù)據(jù)的陰影生成的方法
這篇文章主要介紹了python實(shí)現(xiàn)DEM數(shù)據(jù)的陰影生成的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Jupyter notebook 更改文件打開的默認(rèn)路徑操作
這篇文章主要介紹了Jupyter notebook 更改文件打開的默認(rèn)路徑操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05
Python之Matplotlib繪圖調(diào)節(jié)清晰度解決方案
Matplotlib是一個(gè)Python的繪圖庫,可以用來繪制各種類型的圖表,包括線圖、散點(diǎn)圖、柱狀圖等等,這篇文章主要給大家介紹了關(guān)于Python之Matplotlib繪圖調(diào)節(jié)清晰度的相關(guān)資料,需要的朋友可以參考下2024-03-03

