您現在的位置是:首頁 > 垂釣

翻譯:《實用的Python程式設計》02_Hello_world

  • 由 codists 發表于 垂釣
  • 2022-08-29
簡介下面這些都是不同的變數:name = ‘Jake’Name = ‘Elwood’NAME = ‘Guido’Python 語言自帶的語句總是小寫:while x < 0:   # OKWHILE x < 0:   # ERROR

譯者注怎麼寫

1.2 第一個程式

本節討論有關如何建立一個程式、執行直譯器和除錯的基礎知識。

執行 Python

Python 程式始終在直譯器中執行。

直譯器是一個“基於控制檯”的應用程式,通常從命令列 shell 啟動。

python3Python 3。6。1 (v3。6。1:69c0db5050, Mar 21 2017, 01:21:04)[GCC 4。2。1 (Apple Inc。 build 5666) (dot 3)] on darwinType “help”, “copyright”, “credits” or “license” for more information。>>>

老練的程式設計師以這種方式使用直譯器時通常都沒有問題,但對於初學者來說,這種方式並不是那麼友好。您可能會使用一個為 Python 提供不同介面的環境,但是學會如何執行 Python 終端仍然是一項有必要了解的技能。

互動模式

當啟動 Python 時,可以進入一種互動的模式,在這種模式下,可以進行程式設計實驗。

如果輸入程式碼完畢,這些程式碼將會馬上執行。沒有 edit/compile/run/debug 等流程。

>>> print(‘hello world’)hello world>>> 37*421554>>> for i in range(5):。。。     print(i)。。。01234>>>

這就是所謂的“讀取-求值-輸出-迴圈”(譯者注:簡寫為 REPL,也有人譯為 “互動式直譯器”,正像 Python 這個詞一樣,為了更好地理解,這裡不翻譯。),對於程式碼除錯和探索非常有用。

暫停

:如果您不知道如何與 Python 進行互動,先停止您正在做的事情,然後弄清楚如何與 Python 進行互動。如果您正在使用的是整合開發環境(IDE),它可能隱藏在一個選單選項或者其它視窗後面。本課程的許多部分都假定您能與直譯器進行互動。

讓我們仔細看看 REPL 的元素:

>>>

提示符用於開始一個新的語句。

。。。

提示符用於繼續一個語句,輸入一個空行表示全部輸入結束,並執行所輸入的程式碼。

。。。

提示符可能會顯示,也可能不會顯示,這取決於使用的環境。對於本課程,將

。。。

提示符顯示為空白,以便於剪下、貼上示例程式碼。

下劃線

_

儲存最後的結果。

>>> 37 * 421554>>> _ * 23108>>> _ + 503158>>>

僅在互動模式下如此(指下劃線

_

儲存最後的結果),永遠不要在程式中使用這種方式。

建立程式

程式寫在

。py

檔案中。

# hello。pyprint(‘hello world’)

你可以使用你最喜歡的文字編輯器來建立這些

。py

檔案。

執行程式

要執行程式,請在終端中使用

python

命令執行它。示例,在 Unix 系統的命令列中是這樣執行一個 Python 程式的:

示例,在 Unix 系統的命令列中執行程式:

bash % python hello。pyhello worldbash %

或者,從 Windows shell 中執行一個 Python 程式:

C:\SomeFolder>hello。pyhello worldC:\SomeFolder>c:\python36\python hello。pyhello world

注意:在 Windows 系統上,可能需要指定 Python 直譯器的完整路徑,例如

c:\python36\python

。但是,如果 Python 是以通常的方式安裝的,可能只需要輸入程式檔名即可,例如

hello。py

示例程式

讓我們解決以下的問題:

一天早上,您走出去,在芝加哥的西爾斯大廈旁的人行道上放 1 美元鈔票。從那以後的每一天,您放的鈔票都是前一天的兩倍。這疊鈔票需要多長時間才能超過

的高度。

這是答案:

# sears。pybill_thickness = 0。11 * 0。001 # Meters (0。11 mm)sears_height = 442 # Height (meters)num_bills = 1day = 1while num_bills * bill_thickness < sears_height:    print(day, num_bills, num_bills * bill_thickness)    day = day + 1    num_bills = num_bills * 2print(‘Number of days’, day)print(‘Number of bills’, num_bills)print(‘Final height’, num_bills * bill_thickness)

當執行

sears。py

程式的時候,會得到下面的輸出:

bash % python3 sears。py1 1 0。000112 2 0。000223 4 0。000444 8 0。000885 16 0。001766 32 0。00352。。。21 1048576 115。3433622 2097152 230。68672Number of days 23 Number of bills 4194304 Final height 461。37344

使用此程式作為指南,您可以學到許多重要的關於 Python 的核心概念。

語句

一個 Python 程式是由一系列的語句組成。

a = 3 + 4b = a * 2print(b)

每個語句以換行符終止。語句會一個接一個地執行,直到控制流達到檔案的末尾。

註釋

註釋是不會被直譯器執行的文字。

a = 3 + 4# This is a commentb = a * 2print(b)

註釋由

#

號表示,並延伸到行的末尾。

變數

變數是一個值的名稱。可以使用從 a 到 z 的字母(小寫和大寫都可以)表示,也可以使用下劃線

_

符號表示。數字也可以作為變數名的一部分,但第一個字元除外。

height = 442 # valid_height = 442 # validheight2 = 442 # valid2height = 442 # invalid

型別

變數不需要使用值的型別進行宣告。型別與右側的值關聯,而不是變數名。

height = 442 # An integerheight = 442。0 # Floating pointheight = ‘Really tall’ # A string

Python 是動態語言。當程式執行時,變數的感知“型別”可能會發生改變,這取決於賦給變數的當前值。

大小寫敏感

Python 語言是大小寫敏感的(即區分大小寫),大寫字母和小寫字母被認為是不同的字母。下面這些都是不同的變數:

name = ‘Jake’Name = ‘Elwood’NAME = ‘Guido’

Python 語言自帶的語句總是小寫:

while x < 0:   # OKWHILE x < 0:   # ERROR

迴圈

while

語句執行一個迴圈:

while num_bills * bill_thickness < sears_height:    print(day, num_bills, num_bills * bill_thickness)    day = day + 1    num_bills = num_bills * 2print(‘Number of days’, day)

只要

while

之後的表示式的值是

true

while

下面縮排的語句就會被執行。

縮排

縮排用於表示放在一起的語句組。考慮前面的示例:

while num_bills * bill_thickness < sears_height:    print(day, num_bills, num_bills * bill_thickness)    day = day + 1    num_bills = num_bills * 2print(‘Number of days’, day)

縮排將下面的語句分組為一個重複的操作:

print(day, num_bills, num_bills * bill_thickness) day = day + 1 num_bills = num_bills * 2

因為在末尾的

print()

語句(即

print(‘Number of days’, day)

)沒有縮排,所以不屬於迴圈。空行只是為了可讀性,並不影響程式的執行。

縮排的最佳實踐

使用空格(spaces)而不是製表符(tabs)。

每級使用四個空格。

使用支援 Python 的編輯器。

Python 唯一的要求就是同一程式碼塊內的縮排必須一致。例如,下面的縮排是錯誤的:

while num_bills * bill_thickness < sears_height: print(day, num_bills, num_bills * bill_thickness) day = day + 1 # ERROR num_bills = num_bills * 2

條件語句

if

語句用來執行一個條件:

if a > b: print(‘Computer says no’)else: print(‘Computer says yes’)

為了檢查多個條件,可以使用

elif

來新增額外的檢查。

if a > b: print(‘Computer says no’)elif a == b: print(‘Computer says yes’)else: print(‘Computer says maybe’)

輸出

print

函式將傳入的引數值輸出成一行文字。

print(‘Hello world!’) # Prints the text ‘Hello world!’

也可以將變數進行輸出。輸出的文字將是變數的值,而不是變數的名字。

x = 100print(x) # Prints the text ‘100’

如果將兩個以上的值傳遞給

print

函式,它們在輸出的時候被空格分開。

name = ‘Jake’print(‘My name is’, name) # Print the text ‘My name is Jake’

print()

函式總是將換行符放在最後。

print(‘Hello’)print(‘My name is’, ‘Jake’)

上面的程式碼會輸出如下的內容:

HelloMy name is Jake

額外的換行符可以被抑制:

print(‘Hello’, end=‘ ’)print(‘My name is’, ‘Jake’)

上面的程式碼將會輸出如下內容:

Hello My name is Jake

使用者輸入

要讀取一行型別化的使用者輸入,可以使用

input()

函式:

name = input(‘Enter your name:’)print(‘Your name is’, name)

input()

函式向用戶輸出一句提示,並且返回他們的響應。

這對於一個簡短的程式、學習練習或者簡單的除錯是非常有用的。

但這並未廣泛應用於實際的程式中。

pass 語句

有時候需要指定一個空的程式碼塊,那麼可以使用

pass

關鍵字。

if a > b:    passelse:    print(‘Computer says false’)

pass

語句也稱為 “無操作” 語句,它什麼也不做。它用作語句的佔位符,可能以後會被新增。

習題

這是需要建立 Python 檔案並且執行這個檔案的第一組練習。從現在開始,假定你正在編輯的檔案位於

practical-python/Work/

目錄。為了幫您找到合適的 位置,已經建立了許多具有合適的檔名的空的啟動檔案。請找到在第一個練習中使用的

Work/bounce。py

檔案。

習題 1.5: 彈跳球

一個橡膠球從 100 米高的地方落下來,球每次撞到地面時彈到原來高度的 3/5 。編寫一個程式

bounce。py

,輸出一張表格,顯示前 10 次反彈的高度。

程式生成的表格大概像下面這樣:

1 60。02 36。03 21。5999999999999984 12。9599999999999995 7。7759999999999996 4。66559999999999957 2。79935999999999968 1。67961599999999989 1。007769599999999810 0。6046617599999998

注意:如果使用 round() 函式,可以使輸出稍微簡潔一些。請嘗試使用 round() 函式將輸出四捨五入到 小數點後 4 位。

1 60。02 36。03 21。64 12。965 7。7766 4。66567 2。79948 1。67969 1。007810 0。6047

習題 1.6: 除錯

下面的程式碼片段包含來自於

西爾斯大廈問題

的程式碼,它還有一個 bug:

# sears。pybill_thickness = 0。11 * 0。001    # Meters (0。11 mm)sears_height   = 442             # Height (meters)num_bills     = 1day           = 1while num_bills * bill_thickness < sears_height:    print(day, num_bills, num_bills * bill_thickness)    day = days + 1    num_bills = num_bills * 2print(‘Number of days’, day)print(‘Number of bills’, num_bills)print(‘Final height’, num_bills * bill_thickness)

將上面顯示的程式碼複製並貼上到一個名為

sears。py

的新程式中。當執行

sears。py

裡的程式碼時,將會收到一條導致程式奔潰的錯誤資訊。錯誤資訊如下所示:

Traceback (most recent call last): File “sears。py”, line 10, in   day = days + 1NameError: name ‘days’ is not defined

讀取錯誤資訊是 Python 程式碼的重要組成部分。如果程式奔潰,則回溯訊息的最後一行是程式為什麼奔潰的實際原因。在此(

NameError: name ‘days’ is not defined

)之上,你應該可以看到原始碼片段(

day = days + 1

)、可識別的檔名(

sears。py

)和錯誤程式碼的行號(

line 10

)。

哪行是錯誤的?

錯誤是什麼?

解決錯誤。

成功執行程式。Run the program successfully

注:完整翻譯見 github上的practical-python-zh倉庫。

Top