?? 3.html
字號:
<HTML><!-- Mirrored from www.math.pku.edu.cn/teachers/lidf/docs/Python/3.html by HTTrack Website Copier/3.x [XR&CO'2005], Fri, 08 Jul 2005 11:49:13 GMT --><HEAD><TITLE>第三章 基本使用</TITLE></HEAD><BODY LINK="#0000ff"><H1>第三章 基本使用</H1><P>下面我們用例子來介紹Python的基本用法。在例子中,用戶輸入和系統輸出靠有沒有提示(>>>和...)來分別。如果要試這些例子的話,需要鍵入提示后的所有命令,例子中沒有提示的行是系統的輸出。注意只有次提示的行意味著需要鍵入一個空行,這用于結束多行命令。</P><P> </P><H2>3.1 用Python作計算器使用</H2><P>啟動解釋程序,等待主提示>>>出現。解釋程序可以作為計算器使用。鍵入一個表達式,解釋程序就可以輸出結果。表達式的寫法很直觀:+,-,*,/, %, **等算符的作用和其它大多數語言(如Pascal或C)沒什么差別,括號可以用來組合。例如:</P><P> </P><PRE>>>> 2+2 4 >>> # 這是一個注釋... 2+24>>> 2+2 # 和代碼在同一行的注釋4>>> (50-5*6)/45>>> # 整數除法得下面的整數... 7/32>>> 7/-3-3>>></PRE><P>和C中一樣,等于號用來給變量賦值,賦值的結果不顯示:</P><PRE>>>> width = 20>>> height = 5*9>>> width * height900>>></PRE><P>可以同時給幾個變量賦同一個值:</P><PRE>>>> x = y = z = 0 # 把 x, y 和 z賦零 >>> x0>>> y0>>> z0>>></PRE><P>Python完全支持浮點數,混合類型的運算會把整數先轉換成浮點數:</P><PRE>>>> 4 * 2.5 / 3.33.0303030303>>> 7.0 / 23.5>>></PRE><P>Python也提供了復數,方法是用j和J作為虛數單位,如1+1j,3.14e-10j,等等。<H2>3.2. 字符串</H2> Python除處理數字外還可以處理字符串,字符串用單撇號或雙撇號包裹:<PRE>>>> '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.'>>></PRE><P>字符串輸出格式與輸入的樣子相同,都是用撇號包裹,撇號和其它特殊字符用用反斜杠轉義。如果字符串中有單撇號而沒有雙撇號則用雙撇號包裹,否則應該用單撇號包裹。后面要介紹的print語句可以不帶撇號或轉義輸出字符串。</P><P> 字符串可以用+號連接起來,用*號重復:</P><PRE>>>> word = 'Help' + 'A'>>> word'HelpA'>>> '<' + word*5 + '>''<HelpAHelpAHelpAHelpAHelpA>'>>></PRE><P>字符串可以象在C中那樣用下標索引,字符串的第一個字符下標為0。</P><P>Python沒有單獨的字符數據類型,一個字符就是長度為一的字符串。象在Icon語言中那樣,可以用片段(slice)記號來指定子串,片段即用冒號隔開的兩個下標。</P><PRE>>>> word[4]'A'>>> word[0:2]'He'>>> word[2:4]'lp'>>></PRE><P>片段有很好的缺省值:第一下標省略時缺省為零,第二下標省略時缺省為字符串的長度。</P><PRE>>>> word[:2] # 前兩個字符'He'>>> word[2:] # 除前兩個字符串外的部分'lpA'>>></PRE><P>注意s[:i] + s[i:] 等于 s 是片段運算的一個有用的恒等式。</P><PRE>>>> word[:2] + word[2:]'HelpA'>>> word[:3] + word[3:] 'HelpA'>>></PRE><P>不合理的片段下標可以很好地得到解釋:過大的下標被換成字符串長度,上界小于下界時返回空串。</P><PRE>>>> word[1:100]'elpA'>>> word[10:]''>>> word[2:1]''>>></PRE><P>下標允許為負數,這時從右向左數。例如:</P><PRE>>>> word[-1] # 最后一個字符'A'>>> word[-2] # 倒數第二個字符'p'>>> word[-2:] # 最后兩個字符'pA'>>> word[:-2] # 除最后兩個字符外的部分'Hel'>>></PRE><P>但要注意的是 -0 實際還是 0,所以它不會從右向左數!</P><PRE>>>> word[-0] # (因為 -0 等于 0)'H'>>></PRE><P>超出范圍的片段下標被截斷,但在非片段的情況下不要這樣:</P><PRE>>>> word[-100:]'HelpA'>>> word[-10] # 錯誤Traceback (innermost last): File "<stdin>", line 1IndexError: string index out of range >>></PRE><P>記住片段意義的最好方法是把下標看成是字符<B>之間</B>的點,第一個字符的左邊界號碼為0。有n個字符的字符串的最后一個字符的右邊界下標為n,例如:</P><PRE> +---+---+---+---+---+ | H | e | l | p | A | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1 </PRE><P>第一行數字給出字符串中下標0到5的位置,第二行給出相應的負下標。從i到j的片段由在邊界i和j之間的字符組成。</P><P> </P><P>對于非負下標,如果下標都在界內,則片段的長度為下標的差。例如,word[1:3] 的長度為 2。</P><P> 內置函數len()返回字符串的長度:</P><PRE>>>> s = 'supercalifragilisticexpialidocious'>>> len(s)34>>></PRE><P>多行的長字符串也可以用行尾反斜杠續行,續行的行首空白不被忽略,如</P><PRE> 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</PRE><P>結果為</P><P> </P><PRE> 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.</PRE><P>對于特別長的字符串(比如包含說明的幾段文字),如果用上面的方式每行都用\n\結尾是很麻煩的,特別是這樣無法用象Emacs這樣的功能強大的編輯器重新編排。對這種情況,可以使用三重撇號,例如</P><PRE> 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. """</PRE><P>三重撇號字符串也可以用三個單撇號,沒有任何語義差別。</P><P>多行的字符串常量可以直接連接起來,字符串常量之間用空格分隔則在編譯時可以自動連接起來,這樣可以把一個長字符串連接起來而不需要犧牲縮進對齊或性能,不象用加號連接需要運算,也不象字符串串內的換行其行首空格需要保持。</P><H2>3.3 列表</H2><P>Python中有幾種復合數據類型,用來把其它值組合到一起。其中最靈活的是列表,可以寫成在方括號之間用逗號隔開的若干值(項)。列表的項不必取同一類型。</P><PRE>>>> a = ['spam', 'eggs', 100, 1234]>>> a['spam', 'eggs', 100, 1234]>>></PRE><P>象字符串下標那樣,列表下標從0開始,列表可以取片段,可以連接,等等:</P><PRE>>>> 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!']>>></PRE><P>與字符串不同的是列表是可變的,可以修改列表的每個元素:</P><PRE>>>> a['spam', 'eggs', 100, 1234]>>> a[2] = a[2] + 23>>> a['spam', 'eggs', 123, 1234]>>></PRE><P>也可以給一個片段重新賦值,這甚至可以改變表的大小:</P><PRE>>>> # 替換若干項:... a[0:2] = [1, 12]>>> a[1, 12, 123, 1234]>>> # 去掉若干項:... a[0:2] = []>>> a[123, 1234]>>> # 插入若干項:... a[1:1] = ['bletch', 'xyzzy']>>> a[123, 'bletch', 'xyzzy', 1234]>>> a[:0] = a # 在開頭插入自身>>> a[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]>>></PRE><P>內置函數也使用于列表:</P><PRE>>>> len(a)8>>></PRE><P>可以建立嵌套列表(表的元素也是列表),如:</P><PRE>>>> 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']>>></PRE><P>注意這個例子中p[1]和q實際是同一個對象!也就是說它們只不過是同一個東西的兩個名字(引用)而已。</P><H2>3.4 編程初步</H2><P>Python當然不是只能用來把兩個數加到一起,它可以完成很復雜的工作。例如,我們可以寫出Fibonacci序列的開始幾個:</P><PRE>>>> # Fibonacci 序列:... # 兩個元素的和定義下一個... a, b = 0, 1>>> while b < 10:... print b... a, b = b, a+b... 112358>>></PRE><P>這個例子介紹了幾個新特色。</P><P>第一行包含一個多重賦值: 變量a和b同時得到新值0和1。在最后一行又用了多重賦值,我們可以看出賦值時先把右邊都算出后再進行賦值。</P><P>while循環當循環條件(這里即: b < 10)成立時不斷執行。在Python中和C中一樣,非零整數值為真值,零為假值。條件也可以是字符串或列表或任何序列,長度為非零的為真,空序列為假。例子中所用的是一個簡單比較。標準的比較算符和C一樣:</P><PRE><, >, ==, <=, >= 和 !=。</PRE><P>循環體是縮進的:縮進是Python用來組合語句的方式。Python目前還不能提供智能自動縮進,所以你需要自己為每個縮進行鍵入制表符或空格。實際使用中你可以用文本編輯程序為Python準備復雜的輸入,多數文本編輯程序都有自動縮進的功能。在交互輸入復合語句時必修附加一個空行以指示復合語句的完成(因為解釋程序無法猜到哪是語句的最后一行)。print語句顯示后面的表達式值。這和直接寫出表達式不同,它可以顯示多個表達式和字符串,而且可以用于程序文件中。顯示時字符串沒有撇號,各項目之間插入一個空格,所以你可以以精美的格式顯示,如:</P><PRE>>>> i = 256*256>>> print 'The value of i is', iThe value of i is 65536>>></PRE><P>在尾部寫一個逗號可以避免最后換行:</P><PRE>>>> 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>>></PRE><P>注意如果前一行沒有結束的話系統在顯示提示之前先換行。</P><P>Python還提供了和C語言一樣的printf格式的輸出方式,這是用%實現的,左邊是格式,如:</P> <PRE> >>> print 'The value of 1/7 is approximately %5.3f.' % 0.142857 The value of 1/7 is approximately 0.143. >>></PRE><P>如果有多個需要輸出的項百分號右邊的項可以是一個序組,如</P><PRE> >>> print "Name: %-10s Age: %3d" % ("White", 31) Name: White Age: 31 </PRE></BODY><!-- Mirrored from www.math.pku.edu.cn/teachers/lidf/docs/Python/3.html by HTTrack Website Copier/3.x [XR&CO'2005], Fri, 08 Jul 2005 11:49:13 GMT --></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -