在本節(jié)課中,你將運行自己的第一個程序 —— hello_world.py。在這之前,需要熟悉兩個概念:命令行模式和Python交互模式。同時掌握輸入和輸出。
1. 命令行模式和Python交互模式
1.1 命令行模式
MAC 直接打開終端,也可在"應(yīng)用程序 - 實用工具 - 終端"中找到,它的提示符類似這樣Macbook:~cunxi$,美元符號的前面是用戶名。
Last login: Tue Dec 19 21:34:57 on ttys000
Macbook-pro-2:~ cunxi $
Windows 電腦,選擇開始菜單、選擇“命令提示符”,就進入到命令行模式,它的提示符類似這樣C:\>:
Microsoft Windows [Version 10.0.0]
(c) 2015 Microsoft Corporation. All rights reserved.
C:\> _
1.2 Python交互模式
在命令行模式下敲命令:
$ python
看到類似如下的一堆文本輸出,然后就進入到Python交互模式,它的提示符是 >>> 。
$ python
Python 3.6.2 |Anaconda, Inc.| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
在Python交互模式下輸入exit() 并回車,就退出了Python交互模式,并回到命令行模式:
$ python
Python 3.6.2 |Anaconda, Inc.| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
$
還可以找到安裝的應(yīng)用程序,選擇IDLE雙擊打開,這種方式打開時,輸入exit() 后會關(guān)閉當前窗口,不會回到命令行模式。
了解了如何啟動和退出Python的交互模式,我們就可以正式開始編寫Python代碼了。
在寫代碼之前,千萬不要用“復制”、“粘貼”把代碼從頁面粘貼到你自己的電腦上。寫程序也講究一個感覺,你需要一個字母一個字母地把代碼自己敲進去,在敲代碼的過程中,初學者經(jīng)常會敲錯代碼:拼寫不對,大小寫不對,混用中英文標點,混用空格和Tab鍵,所以,你需要仔細地檢查、對照,才能以最快的速度掌握如何寫程序。
在交互模式的提示符>>>下,直接輸入代碼,按回車,就可以立刻得到代碼執(zhí)行結(jié)果。現(xiàn)在,試試輸入100+200,看看計算結(jié)果是不是300:
>>> 100 + 200
300
如果要讓Python打印出指定的文字,可以用print()函數(shù),然后把希望打印的文字用單引號或者雙引號括起來,但不能混用單引號和雙引號:
>>> print('hello, world')
hello,world
這種用單引號或者雙引號括起來的文本在程序中叫字符串,今后我們還會經(jīng)常遇到。
最后,用exit()退出Python,我們的第一個Python程序完成!唯一的缺憾是沒有保存下來,下次運行時還要再輸入一遍代碼。
1.3 命令行模式和Python交互模式
請注意區(qū)分命令行模式和Python交互模式。
在命令行模式下,可以執(zhí)行python進入Python交互式環(huán)境,也可以執(zhí)行python hello.py運行一個.py文件。執(zhí)行一個.py文件只能在命令行模式執(zhí)行。
如果敲一個命令python hello.py,看到如下錯誤:
$ python hello.py
python: can't open file 'hello.py': [Errno 2] No such file or directory
錯誤提示No such file or directory說明這個hello.py在當前目錄找不到,必須先把當前目錄切換到hello.py所在的目錄下,才能正常執(zhí)行:
$ cd??/Users/cunxi/Desktop/Python_source
work $ python hello.py
Hello,World!
此外,在命令行模式運行.py文件和在Python交互式環(huán)境下直接運行Python代碼有所不同。Python交互式環(huán)境會把每一行Python代碼的結(jié)果自動打印出來,但是,直接運行Python代碼卻不會。
例如,在Python交互式環(huán)境下,輸入:
>>> 100 + 200 + 300
600
直接可以看到結(jié)果600。
但是,寫一個calc.py的文件,內(nèi)容如下:
100 + 200 + 300
然后在命令行模式下執(zhí)行:
work $ python calc.py
發(fā)現(xiàn)什么輸出都沒有。
這是正常的。想要輸出結(jié)果,必須自己用print()打印出來。把calc.py改造一下:
print(100 + 200 + 300)
再執(zhí)行,就可以看到結(jié)果:
work $ python calc.py
600
最后,Python交互模式的代碼是輸入一行,執(zhí)行一行,而命令行模式下直接運行.py文件是一次性執(zhí)行該文件內(nèi)的所有代碼。可見,Python交互模式主要是為了調(diào)試Python代碼用的,也便于初學者學習,它不是正式運行Python代碼的環(huán)境!
2. 使用文本編輯器
在Python的交互式命令行寫程序,好處是一下就能得到結(jié)果,壞處是沒法保存,下次還想運行的時候,還得再敲一遍。
所以,實際開發(fā)的時候,我們總是使用一個文本編輯器來寫代碼,寫完了,保存為一個文件,這樣,程序就可以反復運行了。
程序員花大量時間來編寫、閱讀和編輯代碼,因此使用的文本編輯器必須能夠盡可能提高完成這種工作的效率,高效的編輯器應(yīng)突出代碼的結(jié)構(gòu),讓你在編寫代碼時就能夠發(fā)現(xiàn)常見的bug。它還應(yīng)包含自動縮進功能、顯示代碼長度的標志以及用于執(zhí)行常見操作的快捷鍵。
如果你是編程新手,應(yīng)使用具備上述功能但學習起來又不難的編輯器。另外,最好對更高級的編輯器有所了解,這樣就知道何時該考慮升級編輯器了。
對于每種主要的操作系統(tǒng),比較流行的是以下編輯器:使用Linux或Windows系統(tǒng)的初學者可使用Geany;使用OS X的初學者可使用Sublime Text(它在Linux和Windows系統(tǒng)中的效果也很好),我這里主要講Sublime Text 的安裝配置及定制。
Sublime Text 是一款簡單的文本編輯器,比較易于安裝,能夠直接運行幾乎所有程序。它還能在內(nèi)嵌在Sublime Text 窗口內(nèi)的終端會話中運行代碼,能夠輕松查看輸出結(jié)果。
Sublime Text 的許可策略非常靈活,可以永久的免費使用這款編輯器,如果想長期使用,建議購買許可證。
2.1 安裝 Sublime Text
2.1.1 在 OS X 系統(tǒng)中安裝 Sublime Text
要下載Sublime Text 安裝程序,可訪問http://sublimetext.com/3,單機鏈接Download,并查找OS X 安裝程序。下載安裝程序后,打開它,再將Sublime Text 圖標拖到文件夾Applications 。
2.1.2 在 Linux 系統(tǒng)中安裝 Sublime Text
在大多數(shù)Linux系統(tǒng)中,安裝Sublime Text 的最簡單方式是通過終端會話,如下所示:
$ sudo add-apt-repository ppa:webupd8team/sublime-text-3
$ sudo apt-get update
$ sudo apt-get install sublime-text-installer
2.1.3 在 Windows 系統(tǒng)中安裝?Sublime Text
從http://sublimetext.com/3下載Windows安裝程序。
2.2 在Sublime Text 中運行 Python 程序
如果使用的是系統(tǒng)自帶的Pythn版本,無需調(diào)整任何設(shè)置就能運行程序。要運行程序,可選擇菜單Tools - Build 或 Ctrl + B。運行hello_world.py時,你將在Sublime Text窗口的最底部看到一個終端屏幕,其中包含以下輸出:
Hello Python World!
[ Finished in 0.1s ]
2.3 配置Sublime Text
如果安裝了多個Python版本或者Sublime 不能自動運行程序,可能需要設(shè)置一個配置文件。首先需要知道Python解釋器的完整路徑,為此,在Linux或OS X 系統(tǒng)中執(zhí)行如下命令:
$ type -a python3
python3 is /usr/local/bin/python3
如果使用的Windows系統(tǒng),要獲悉Python解釋器的路徑,請參閱“Python第1課 - Python安裝”一節(jié)中“在Windows系統(tǒng)中安裝Python3”。
現(xiàn)在啟動Sublime Text,并選擇菜單Tools - Build System - New Build System,這將打開一個新的配置文件。刪除其中的所有內(nèi)容,再輸入以下內(nèi)容:
Python3 .sublime-build
{
"cmd":["/usr/local/bin/python3","-u","$file"],
}
這些代碼讓Sublime Text 使用命令python3 來運行當前打開的文件。請確保其中的路徑為你在前一步獲取的路徑(在Windows系統(tǒng)中,該路徑類似于C:/Python35/python)。將這個配置文件命名為Python3 .sublime-build,并將其保存到默認目錄 —— 選擇菜單Save 時
Sublime Text 打開的目錄。
2.4 定制 Sublime Text 的設(shè)置
下面來定制之前提到的功能,以盡可能提高Sublime Text 的效率。
1.將制表符轉(zhuǎn)換為空格
選擇菜單View - Indentation,核實選擇了復選框Indent Using Spaces。如果沒有選擇該復選框,現(xiàn)在請選擇。
2.設(shè)置行長標志
選擇菜單View - Ruler,再單擊80,Sublime Text 將在這個80字符標志處放置一條豎線,編輯代碼時一行不要超過這條線。
3.縮進和取消縮進代碼塊
要縮進代碼塊,可選擇代碼塊,再選擇菜單Edit - Line - Indent或按Ctrl + ] 。要取消縮進代碼塊,可選擇菜單Edit - Line - Unindent或按Ctrl + [ 。
4.將代碼塊注釋掉
要將代碼塊注釋掉,可選擇代碼塊,再選擇菜單Edit - Comment - Toggle Comment或按Ctrl + /。要取消代碼塊注釋,再次執(zhí)行這個命令。
3. 輸出
用print()在括號中加上字符串,就可以向屏幕上輸出指定的文字。比如輸出'hello, world',用代碼實現(xiàn)如下:
>>> print('hello, world')
print()函數(shù)也可以接受多個字符串,用逗號“,”隔開,就可以連成一串輸出:
>>> print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog
print()會依次打印每個字符串,遇到逗號“,”會輸出一個空格。
print()也可以打印整數(shù),或者計算結(jié)果:
>>> print(300)
300
>>> print(100 + 200)
300
因此,我們可以把計算100 + 200的結(jié)果打印得更漂亮一點:
>>> print('100 + 200 =', 100 + 200)
100 + 200 = 300
注意,對于100 + 200,Python解釋器自動計算出結(jié)果300,但是,'100 + 200 ='是字符串而非數(shù)學公式,Python把它視為字符串。
4. 輸入
現(xiàn)在,你已經(jīng)可以用print()輸出你想要的結(jié)果了。但是,如果要讓用戶從電腦輸入一些字符怎么辦?Python提供了一個input(),可以讓用戶輸入字符串,并存放到一個變量里。比如輸入用戶的名字:
>>> name = input()
Michael
當你輸入name = input()并按下回車后,Python交互式命令行就在等待你的輸入了。這時,你可以輸入任意字符,然后按回車后完成輸入。
輸入完成后,不會有任何提示,Python交互式命令行又回到>>>狀態(tài)了。那我們剛才輸入的內(nèi)容到哪去了?答案是存放到name變量里了。可以直接輸入name查看變量內(nèi)容:
>>> name
'Michael'
什么是變量?請回憶初中數(shù)學所學的代數(shù)基礎(chǔ)知識:
設(shè)正方形的邊長為a,則正方形的面積為a x a。把邊長a看做一個變量,我們就可以根據(jù)a的值計算正方形的面積,比如:
若a=2,則面積為a x a = 2 x 2 = 4;
若a=3.5,則面積為a x a = 3.5 x 3.5 = 12.25。
在計算機程序中,變量不僅可以為整數(shù)或浮點數(shù),還可以是字符串,因此,name作為一個變量就是一個字符串。
要打印出name變量的內(nèi)容,除了直接寫name然后按回車外,還可以用print()函數(shù):
>>> print(name)
Michael
有了輸入和輸出,我們就可以把上次打印'hello, world'的程序改成有點意義的程序了:
name = input("please enter your name:")
print('hello,', name)
運行上面的程序,第一行代碼會讓用戶輸入任意字符作為自己的名字,然后存入name變量中;第二行代碼會根據(jù)用戶的名字向用戶說hello,比如輸入Michael:
$ python hello.py
please enter your name: Michael
hello, Michael
每次運行該程序,根據(jù)用戶輸入的不同,輸出結(jié)果也會不同。
在命令行下,輸入和輸出就是這么簡單。
任何計算機程序都是為了執(zhí)行一個特定的任務(wù),有了輸入,用戶才能告訴計算機程序所需的信息,有了輸出,程序運行后才能告訴用戶任務(wù)的結(jié)果。
輸入是Input,輸出是Output,因此,我們把輸入輸出統(tǒng)稱為Input/Output,或者簡寫為IO。
input()和print()是在命令行下面最基本的輸入和輸出,但是,用戶也可以通過其他更高級的圖形界面完成輸入和輸出,比如,在網(wǎng)頁上的一個文本框輸入自己的名字,點擊“確定”后在網(wǎng)頁上看到輸出信息。
下一節(jié)課開始講變量和簡單數(shù)據(jù)類型。