Python Tutorial(三):一個對Python的非正式介紹

來源:互聯網
上載者:User
文章目錄
  • 3.1.1 數字
  • 3.1.2 字串
  • 3.1.3 關於Unicode
  • 3.1.4 列表

在接下來的例子中,輸入和輸出將通過是否有提示符(>>>和...)來進行區分。要重做樣本,當提示符出現後,你輸入所有的內容都必須在提示後面。凡是不以提示符開始的行都是從解譯器輸出的內容。如果一行只有一個第二提示符本身,意味著你必須輸入一個空行,這是用來結束一個多行命令。

這個手冊裡麵包含許多例子,還有注釋。注釋在Python裡面以#字元開始,直到本行結束。注釋可以出現在一行的開始處,或者跟在空格和代碼後面,不在字串字面量值裡面。字串字面量值裡面的#字元就是一個#字元。因為注釋使代碼更加清晰,並不被Python解釋,當你重做這些樣本時可以省略它們。

一些樣本:

3.1 使用Python作為一個計算機

讓我們嘗試一些簡單的Python命令。啟動解譯器並等待主提示符(>>>)。

3.1.1 數字

解譯器就像一個計算機,你可以輸入一個運算式,它會計算出值。運算式文法比較直白,操作符+ - * /和其它大多數語言中的一樣。括弧可以用來分組。例如:

注意:你可能看到的並不是這個結果。浮點數結果在不同的機器上可能不同。稍後我們將會介紹更多關於控制浮點數輸出顯示的內容。

為了實現整數想除,丟棄小數部分,獲得整數結果,使用另一個操作符//:

等號(=)是用來把一個值賦給一個變數,然後,在下一個提示符之前沒有結果顯示:

一個值可以同時賦給多個變數:

變數在使用前必須定義(賦給一個值),否則出錯:

操作符完全支援浮點運算,當混合類型的運算元同時出現會把整型轉化為浮點型:

複數同樣被支援,虛部帶一個尾碼j或J,帶有一個非零實部的複數表示為(real+imagj),或者被建立為complex(real,imag)函數。

複數總是被表示為兩個浮點數,實部和虛部,從複數z中抽出這兩部分使用z.real和z.imag。

浮點型和整型的轉換函式對於複數並不適用,把一個複數轉換為一個實數並不是一個正確的做法。使用abs(z)獲得它的數量值或z.real獲得它的實部:

在互動模式,最後一個列印的運算式的值將被賦給_(底線)。這意味著當你把Python用作案頭計算機時,在某種程度上使得繼續計算變得更加容易,例如:

這個變數應該被當作唯讀,不要給它顯式賦值,你可以建立一個同名的本地變數遮住內建的變數和其魔力行為。

3.1.2 字串

除了數字外,Python也可以操作字串,有幾種表示方式。可以被單引號或雙引號括住:

解譯器以和輸入同樣的方式列印出字串操作的結果,在引號裡面,包括引號和其它有趣的被反斜線轉義的字元,來顯示精確的值。如果一個字串裡麵包含單引號但不包含雙引號,那這個字串就用雙引號包括,相反就用單引號來包括。print()函數為這些輸入字串產生一個更加可讀的輸出結果。

字串字面量值可以使用幾種方式來橫跨多行。繼續行可以被使用,在行的末尾加一個反斜線來指示下一行在邏輯上是這一行的繼續:

注意,新行仍然需要被嵌入到字串中,使用\n,在行末反斜線後面的新行將被丟棄(敲斷行符號時產生的分行符號)。樣本輸出一下內容:

或者字串也可以被一對匹配的三個引號包圍,"""或'''(三個雙引號或單引號),行結束符不需要轉義,但是它們會被包含在字串中。所以下面樣本使用一個轉義來避免一個不希望的初始空白行。

產生一下輸出:

如果我們把字串字面量值作為“原始”字串,\n將不再被轉化為新行,行末的反斜線,分行符號都將作為資料被包含在字串中。因此,樣本:

將列印出:

字串可以使用+來串連,*來重複:

兩個相鄰的字串字面量值將自動被串連;上面樣本中的第一行也可以被寫成 word = 'Help' 'A';只有在兩個字面量時才起作用,其它任意的字串運算式都不行:

字串可以通過下標進行索引,第一個字元的下標是0。沒有單獨的字元類型,一個字元就是長度為一的字串。就像在圖符程式設計語言中,子字串可以通過切片的標記法來指定,被冒號分割的兩個索引。

切片索引具有有用的預設值,第一個索引被忽略時預設為0,第二個索引被忽略時預設是字串的長度。

Python字串不能被改變,向一個指定索引位置賦值會導致錯誤:

然而,使用聯合的內容建立一個字串是簡單和有效:

這是一個有用的不變的切片操作,s[:i] + s[i:] 等於 s。

不正常的切片索引可以被很好的處理,一個索引如果太大會被替換為字串的長度,如果上界比下界小的話返回Null 字元串。

索引可以是負數。這樣是從右側開始計數。例如:

但是-0其實就是0,所以它並不從右側開始計數。

越界的負數切片索引會被截斷,但是這種情況在只有一個元素(非切片)的索引時是錯誤的:

一種記住切片如何工作的方式是把索引當作字元裡面的點,第一個字元的左邊緣被標記為數字0,一個長度為n的字串的最後一個字元的右邊緣具有的索引是n,例如:

第一行的數字給出了索引0..5在字串中的位置。第二行給出了相應的負數索引。從i到j的切片由標記為i和j邊緣之間的所有字元組成。

對於非負索引,切片的長度就是索引的差值,如果它們都在邊界之內。例如,word[1:3]的長度是2。

內建函數len()返回字串長度:

3.1.3 關於Unicode

從Python3.0開始,所有的字串都支援Unicode。

Unicode的好處就是為現在和過去的每一個指令碼裡面的每一個文本字元都提供一個序數。以前,對於指令碼字元只有256個可能的序數。文本被界限在一個字碼頁,它把序數映射到指令碼字元。這導致許多混亂尤其是談到軟體國際化的時候。Unicode解決了這些問題,通過為所有的指令碼只定義一個字碼頁。

如果你想在字串裡麵包含一個特殊的字元,你可以使用Python的Unicode轉義編碼來完成它。下面的樣本顯示如何做:

逸出序列\u0020表示在指定位置插入一個Unicode字元,它的序數值是0x0020(空格)。

其它的字元使用它們各自的序數值直接作為Unicode序數值來進行解釋。如果你有一些字串字面量值是使用許多西方國家的Latin-1編碼的,你會發現它非常方便,因為Unicode的低256個字元和Latin-1的256個字元一樣。

除了這些標準編碼外,Python提供了一個全部的以一個已知編碼為基礎建立Unicode字串的其它方式的集合。

把字串使用指定的編碼轉換為位元組序列,字串對象提供了一個encode()方法,帶有一個參數,是編碼的名字。編碼名稱最好使用小寫。

3.1.4 列表

Python有許多複合資料型別,用來對其它的值進行分組。用途最多的是列表。它可以表示為寫在中括弧裡面被逗號分割的項。列表裡面的項不需要都是相同類型。

和字串的索引一樣,列表的索引從0開始,可以被切片,串連等:

所有的切片操作返回一個新的包含請求元素的列表。這意味著下面的切片返回一個列表a的淺拷貝:

字串的值不可改變,不同的是列表的元素可以單個的改變:

也可以對一個切片進行賦值,這樣可以改變列表的長度或將其整個清空:

內建的len()函數同樣適用於列表:

列表可以嵌套(列表包含其它列表),例如:

可以在列表的尾部添加元素:

注意:最後一個樣本中,p[1]和q引用同一個對象。

3.2 邁向編程的第一步

當然,我們可以使用Python來完成比把兩個東西相加更複雜的任務。例如,我們可以初始化一個斐波那契數列。如下:

這個樣本包含幾個新的特性。

  • 第一行包含一個多個賦值,變數a和b同時獲得新值0和1。最後一行再次使用,示範了在任何一個賦值操作發生前右邊的所有運算式首先被計算。右邊的運算式的計算順序是從左至右。

  • 只要條件(這裡是b < 10)仍然是true,while迴圈就執行。在Python裡,就像C語言,一個非零的整數值為true,零是false。條件也可以是字串或列表,事實上,對於任何序列,只要長度不是零就都是true,空的序列是false。樣本裡面的測試是一個簡單的比較。標準比較操作符的寫法和C裡的一樣,<(小於)>(大於)==(等於)<=(小於等於)>=(大於等於)!=(不等於)。

  • 迴圈體是縮排的,縮排是Python用來分組語句的方式。在互動提示符,對於縮排行你不得不鍵入一個tab或幾個空格。在實際操作中,你需要一個文字編輯器來準備更加複雜的輸入。所有的比較好的文字編輯器都有自動縮排的功能。當一個複合的語句被互動輸入時,必須後跟一個空行來指示完成(因為解析器無法猜測你什麼時候輸入最後一行)。記住,一個基本塊裡的每一行都必須縮排相同的數量。

  • print()函數輸出傳遞給它的運算式的值。它不同於你希望輸出運算式的方式,它處理多個運算式,浮點數,字串。字串輸出是不帶引號,但包括字元之間的空格,你可以很好的格式化字串。像這樣:

    關鍵字end可以用來在輸出之後避免產生新行,或以一個不同的字串結束輸出:

本文是對官方網站內容的翻譯,原文地址:http://docs.python.org/3/tutorial/introduction.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.