又大又粗又猛免费视频久久_国产理论在线播放_久久男人av资源网站免费软件_99国产精品无码

用Python 3開發(fā)簡單程序(用python做開發(fā))

python 是使用最廣泛的動態(tài)編程語言之一。它支持一組豐富的包、圖形用戶界面(Graphical User Interface,GUI)庫和Web框架,讓你能夠構(gòu)建出高效的跨平臺應(yīng)用。它是一種理想的快速應(yīng)用開發(fā)語言。如此快速的開發(fā)通常會帶來一些問題,容易導(dǎo)致代碼的整體質(zhì)量、性能和擴(kuò)展性的降低。本文將會告訴你處理此類情況的方法,并幫助你開發(fā)出更好的Python應(yīng)用。

本文是摘自《Python應(yīng)用開發(fā)實(shí)戰(zhàn)》的導(dǎo)言部分,這是一個(gè)對Python編程的回顧。正因如此,希望你最好已掌握一些關(guān)于Python語言的知識,同時(shí)也了解面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP)的概念。

?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?《Python應(yīng)用開發(fā)實(shí)戰(zhàn)》

[美] 尼納德·薩斯葉(Ninad Sathaye) 著

下面是本文內(nèi)容的組織結(jié)構(gòu):

我們將從安裝的先決條和搭建合適的Python開發(fā)環(huán)境開始。

為了給本書余下的部分定下基調(diào),下一節(jié)將會對本書的高奇幻主題做一個(gè)簡要介紹。

接下來是我們的第一個(gè)程序。這是一個(gè)簡單的基于文本的奇幻游戲,它是一個(gè)Python腳本。

我們會給游戲增加一些復(fù)雜度,然后使用簡單的函數(shù)開發(fā)出游戲的改善版本。

接下來,我們會逐漸給游戲增加更多的特性,并用面向?qū)ο蟮母拍钪匦略O(shè)計(jì)代碼。

最后會簡要提及Python的抽象基類(Abstract Base Class,ABC)。

代碼解釋會稍顯冗余。有經(jīng)驗(yàn)的讀者可以跳過這些例子直接進(jìn)入下一章,但要確保你已理解本書的主題,并復(fù)習(xí)一下ch01_ex03.py文件中的代碼。

1.1 重要提示

在閱讀本文余下的部分之前,讓我們先來了解一些事項(xiàng)。如果你尚未了解,你應(yīng)該閱讀前言,其中記錄了以下大多數(shù)事項(xiàng):

每章都有各自的一組Python源文件。盡管我們會討論大部分代碼,但是要保證你的手上有相關(guān)源文件。

源代碼可以從Packt Publishing的網(wǎng)站上進(jìn)行下載。請參照前言中相關(guān)說明。

本書中的示例代碼兼容Python 3.5.1版本。支持代碼包也提供兼容Python 2.7.9的文件。

正如前文提到的,本書需要讀者熟悉Python語言基礎(chǔ),并了解面向?qū)ο缶幊谈拍睢?/p>

本書使用一個(gè)有趣的、基于文本的游戲主題作為工具來解釋應(yīng)用開發(fā)過程的各個(gè)方面,但是這本書本身并不是關(guān)于游戲程序開發(fā)的!

本書通常不提供練習(xí)題目(如果有的話)的解決方案。

本書中提供一些外部鏈接(Uniform Resource Locator,URL)可供讀者進(jìn)行擴(kuò)展閱讀。隨著時(shí)間推移,某些鏈接可能會失效。如果出現(xiàn)這種問題,請嘗試使用恰當(dāng)?shù)年P(guān)鍵字到網(wǎng)上去搜索。

1.2 安裝的先決條件

要確保已經(jīng)安裝了必要的軟件。表1-1總結(jié)了本章和后續(xù)需要的一些基本工具。下一節(jié)中會有更詳盡的安裝說明。

表1-1 安裝軟件?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?在接下來的章節(jié)中,我們需要安裝一些其他的依賴軟件。Python包管理器(pip)將會完成這項(xiàng)瑣碎的工作。

你已經(jīng)安裝了Python的必要環(huán)境或者你已經(jīng)知道如何安裝了嗎?如果是,那么請你跳過接下來的安裝說明,直接進(jìn)入本書的主題章節(jié),開始真正的實(shí)踐內(nèi)容。

安裝Python

安裝Python有兩種方法。你可以使用官方發(fā)行版本的Python或者任何一種可免費(fèi)獲取的捆綁發(fā)行版本。

1.方法1——官方發(fā)行版本

對于Linux或Mac用戶來說,你的系統(tǒng)中可能已經(jīng)安裝了Python。如果沒有,你可以使用系統(tǒng)中的包管理器進(jìn)行安裝。Windows用戶可以通過Python官方網(wǎng)站下載Install Python來安裝Python 3.5,如圖1-1所示。?

用Python 3開發(fā)簡單程序(用python做開發(fā))

圖1-1

如上面的安裝截屏所示,在安裝過程中,請確保選中“Add Python 3.5 to PATH”的選項(xiàng)。你也可以訪問Python的官方網(wǎng)站來下載特定平臺的發(fā)行版本。

2.方法2——捆綁發(fā)行版本

有很多Python免費(fèi)發(fā)行版本,這些版本捆綁了很多實(shí)用的包,包括pip和IPython。表1-2總結(jié)了一些最流行的Python發(fā)行版本,其中包括官方發(fā)行版本。

表1-2 Python發(fā)行版本?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?3.Python安裝位置

讓我們簡單說說Python的安裝位置,以及如何確保在你的終端窗口中

python

是一個(gè)可用的命令。當(dāng)然,事情可能會因情況不同而各異,這取決于你的安裝位置和你選擇的Python發(fā)行版本。

Python的官方文檔頁面有豐富的關(guān)于在不同平臺上安裝Python的信息。一旦你有超出本書所涵蓋內(nèi)容的需求時(shí),可以參考官方網(wǎng)站給你提供進(jìn)一步的幫助。

類UNIX操作系統(tǒng)

在類UNIX操作系統(tǒng)如Linux中,典型的默認(rèn)安裝路徑通常是/usr/bin/python 或者/usr/local/bin/python。

如果你使用系統(tǒng)中自帶的包管理器安裝Python,那么在終端窗口中是可以使用命令Python或者Python 3的。如果命令不可用,你需要更新系統(tǒng)環(huán)境變量PATH,使其包含Python的可執(zhí)行文件路徑。例如,你的系統(tǒng)中有Bash shell,在用戶目錄下的.bashrc文件中增加如下配置:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?用你的Python實(shí)際安裝路徑來替換/usr/bin。

Windows操作系統(tǒng)

在Windows操作系統(tǒng)中,典型的Python默認(rèn)安裝路徑如下: C:UsersnameAppData LocalProgramsPythonPython35-32 python.exe。用你的Windows用戶名替換name。根據(jù)安裝文件和操作系統(tǒng)的不同,Python的安裝路徑也可能是Python 35-64。正如前面提到的,在安裝的時(shí)候,你需要選擇“Add Python 3.5 to PATH”,以保證Python或python.exe自動被識別為命令。另外,你也可以重新運(yùn)行安裝文件并選中該選項(xiàng)。

4.驗(yàn)證Python安裝

打開終端窗口(或者是Windows操作系統(tǒng)中的命令提示符)并輸入下面的命令來驗(yàn)證Python的版本。只有安裝了Python并且該命令在終端窗口中是可用命令時(shí),那么該命令才會生效。否則,需要指定Python可執(zhí)行文件的全路徑。例如,在Linux上,如果Python安裝在/usr/bin下,你可以這樣指定/usr/bin/python:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

注意,上面的命令行中的$符號屬于終端窗口,它并不是命令本身的一部分。也就是說,實(shí)際的命令只是python -V。在Linux的終端窗口中,對普通用戶來說$或%是一個(gè)提示符。對root用戶(管理員)來說,提示符是#。類似的,在Windows系統(tǒng)中,對應(yīng)的符號是>。你要在這個(gè)符號的后面輸入實(shí)際的命令。

如果我們運(yùn)行上述命令,下面是一個(gè)可能的輸出示例:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?5.安裝pip

pip是一個(gè)軟件包管理器,它使得從官方的第三方軟件庫PyPI中安裝Python包變得十分簡單。pip在Python 2的2.7.9以上版本,以及Python 3的3.4以上版本中已經(jīng)安裝好了。如果你使用其他版本的Python,可以在https://pip.pypa.io/en/stable/installing中找到安裝說明。

在Linux操作系統(tǒng)下,pip和Python可執(zhí)行文件的默認(rèn)位置是相同的。例如,如果Python安裝在/usr/bin/python,那么pip的路徑應(yīng)該是/usr/bin/pip。在Windows操作系統(tǒng)下,pip.exe通常默認(rèn)安裝在如下位置:C:UsersnameAppDataLocalProgramsPythonPython35-32 Scriptspip.exe。正如前文提到,用你的Windows用戶名替換路徑中的name。根據(jù)安裝文件和操作系統(tǒng)的不同,Python的安裝路徑也有可能是Python 35-64。

6.安裝IPython

這是一個(gè)可選的安裝。IPython是一個(gè)增強(qiáng)版的Python解釋器。如果你使用的發(fā)行版本沒有捆綁它,那么你可以使用以下命令進(jìn)行安裝:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?安裝完成后,在終端中輸入ipython就可以啟動IPython的交互shell。Anaconda Python 3.5發(fā)行版的IPython shell截圖如下。

通常,使用Jupyter Notebook來書寫和分享交互程序是非常方便的。它是一個(gè)Web應(yīng)用程序,可以在交互環(huán)境下編寫帶有富文本、圖片、函數(shù)等內(nèi)容的Python代碼。欲獲取更多詳情,請?jiān)L問該項(xiàng)目的主頁。Jupyter Notebook可以通過以下方式進(jìn)行安裝:

用Python 3開發(fā)簡單程序(用python做開發(fā))

7.選擇集成開發(fā)環(huán)境

選擇IDE進(jìn)行開發(fā)是個(gè)人的喜好問題。簡單來說,IDE是一個(gè)旨在加快應(yīng)用程序開發(fā)的工具。它通過對開發(fā)人員最常用的工具的集成,從而讓他們能夠來快速編寫出高效的代碼。Python安裝時(shí)帶有一個(gè)叫作IDLE的程序。這是一個(gè)基礎(chǔ)的Python IDE,可供你入門時(shí)使用。對于高級的開發(fā),你可以從眾多免費(fèi)的或商業(yè)的工具中選擇一個(gè)。任何一款優(yōu)秀的Python IDE至少都具有以下幾個(gè)特點(diǎn):

具有代碼自動完成和語法高亮功能的代碼編輯器。

具有可以瀏覽文件、項(xiàng)目、函數(shù)和類的代碼瀏覽器。

具有可以交互識別問題的調(diào)試器。

集成版本控制系統(tǒng),例如Git。

你可以嘗試從一款免費(fèi)的IDE開始。下面列出部分流行的IDE。如果你只對簡單的源代碼編輯器感興趣,可以瀏覽https://wiki.python.org/moin/PythonEditors,表1-3提供了一些可供選擇的編輯器。

表1-3 可選的IDE?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?1.4 本書的主題

你讀過諸如《指環(huán)王》或托爾金的《霍比特人》等奇幻小說嗎?或者說看過根據(jù)這些小說改編的電影嗎?那么,好,這是一本高奇幻的、托爾金式的關(guān)于Python應(yīng)用開發(fā)的書籍。

更多關(guān)于J.R.R.托爾金的作品,請?jiān)L問相關(guān)網(wǎng)站。高奇幻一詞通常被用來代表交替虛幻世界中的一些列奇幻主題。

這本書帶你來到一個(gè)虛構(gòu)的世界,在那里你將開發(fā)一個(gè)基于上述主題的文本游戲。是的,即使在這個(gè)想象的世界里,你仍然可以繼續(xù)成為一個(gè)開發(fā)人員!在閱讀本書的過程中,將會有很多許多虛構(gòu)的人物陪伴著你。當(dāng)你學(xué)習(xí)Python開發(fā)的不同方面時(shí),這些人物會跟你對話,問問題,提出新的功能,甚至與敵人打架。

應(yīng)該指出的是,本書不是關(guān)于游戲應(yīng)用程序開發(fā)的。本書只是使用一個(gè)簡單的基于文本的游戲作為一種媒介,來學(xué)習(xí)Python開發(fā)的各個(gè)方面。

說一句題外話,如果你有興趣玩一個(gè)高奇幻主題的游戲,那么你有相當(dāng)多的選擇。在諸多開源的項(xiàng)目中,《韋諾之戰(zhàn)》是評價(jià)最高的、免費(fèi)的、高奇幻主題的回合制策略游戲。請?jiān)L問該游戲官網(wǎng)查看更多詳情。

了解本書人物

讓我們來認(rèn)識一下本書各章節(jié)中那些會一直陪伴你的想象中的人物,參見表1-4。

表1-4 人物說明?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?Foo先生

Foo先生是一個(gè)人類騎士,一個(gè)被描繪成守護(hù)著南部平原的大騎士。他是本書中的主要人物,并會在本書中一直與我們進(jìn)行交談?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?獸人騎士

獸人是一個(gè)類似人類的想象中的動物。在這里,他被描繪成一個(gè)敵方的士兵。獸人的坐騎是一種類似于野豬的動物。在本章中,你就將遇到這個(gè)生物?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?精靈騎士

精靈是一種超自然的神靈。精靈通常騎在一匹小馬上。他被描繪成一個(gè)友好的伙伴。你會在第6章中遇到精靈先生?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?仙子

仙子是擁有與生俱來的魔力而且十分聰明的仙女。她的魔法只在第7章(詳見O(log n))中使用過一次,用來尋找她的魔法盒。你會在第6章中第一次遇到仙子?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?侏儒

侏儒是一種矮小的、類似人類的神話中的存在。他被描繪成為Foo山的“大侏儒”。他問了很多問題。從本書第6章開始的后半部分里,你會看到侏儒的身影有了這個(gè)有趣的主題作為一個(gè)工具,讓我們通過簡單的命令行應(yīng)用程序開始我們的Python之旅。這將是一個(gè)基于文本的游戲。在接下來幾章中會增加一些復(fù)雜度,隨之而來的一些有趣的問題會不斷給你帶來挑戰(zhàn)。這本書將向你展示如何優(yōu)雅地處理這種情況。

1.4 簡單的腳本——獸人之襲V0.0.1

我們已經(jīng)安裝了必要的工具和開發(fā)環(huán)境,現(xiàn)在是時(shí)候來編寫我們的第一個(gè)Python程序了。這是一個(gè)簡單的靠碰運(yùn)氣取勝的游戲,同時(shí)也是一個(gè)命令行游戲。隨著本書內(nèi)容的不斷推進(jìn),我們會給游戲增加更多的復(fù)雜度,通過學(xué)習(xí)到的新技術(shù)來開發(fā)更加高效的程序。所以,準(zhǔn)備行動吧!

1.4.1 游戲簡介——獸人之襲v0.0.1

在人類和他們的敵人之間的戰(zhàn)爭中,獸人就是第一個(gè)到來的敵人。一支巨大的獸人軍隊(duì)正在向人類的聚集地進(jìn)發(fā)。他們幾乎摧毀了行進(jìn)道路上的一切。人類不同種族的首領(lǐng)們聯(lián)起手來擊敗他們最強(qiáng)大的敵人,來共同為他們的偉大時(shí)代而戰(zhàn)斗。人們都被召集起來參加了軍隊(duì)。Foo先生,一個(gè)保衛(wèi)南部平原的勇敢騎士,穿過一片未知的茂密森林,開始長途跋涉,向東部進(jìn)發(fā)。兩天兩夜,他小心翼翼地穿過茂密的樹林。在路上,他發(fā)現(xiàn)了一個(gè)小的孤立定居點(diǎn)。因?yàn)槠诘脑颍偌由弦Ma(bǔ)充糧食儲備,他決定繞道而行。當(dāng)他走進(jìn)村莊時(shí),他看見了五個(gè)木屋,如圖1-2所示。周圍沒有發(fā)現(xiàn)任何人。猶豫之后,他決定走進(jìn)其中一間木屋……?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?1.4.2 問題說明

你正在設(shè)計(jì)一個(gè)簡單的游戲,游戲中玩家需要為Foo先生選擇一個(gè)木屋。這些木屋是隨機(jī)被同伴或敵人占據(jù)的。同時(shí),有些木屋仍有可能是空閑的。如果選擇的是一個(gè)被敵人所占據(jù)的木屋,那么玩家就輸?shù)舯荣?。如果是另外的兩種場景,那么玩家就贏得比賽。

1.4.3 偽代碼——0.0.1版本

現(xiàn)在游戲的目標(biāo)已經(jīng)明確了,請打開你最喜歡的編輯器,并記錄下主要的步驟。通常這被稱作偽代碼。

當(dāng)用戶希望一直玩這個(gè)游戲時(shí):

  • 打印游戲的任務(wù);
  • 創(chuàng)建一個(gè)木屋的列表;
  • 在5個(gè)木屋中隨機(jī)分配敵人、同伴或空閑類型;
  • 提示用戶選擇一個(gè)木屋的編號;
  • 如果選中敵人占據(jù)的木屋,打印“你輸了”;
  • 否則,打印“你贏了”。

正如你所注意到的,代碼的關(guān)鍵部分就是讓同伴或者敵人隨機(jī)占據(jù)木屋,并且保持剩下的木屋是未被占據(jù)的空閑狀態(tài)。我們要如何實(shí)現(xiàn)呢?讓我們用Python解釋器來快速地解決這個(gè)問題。如果你安裝了IPython,啟動IPython解釋器;否則,就通過在終端窗口中輸入 python 命令來使用默認(rèn)的Python解釋器。首先,我們需要一個(gè)Python list來保存所有木屋占有者的類型。接下來,我們將使用內(nèi)置 random模塊并調(diào)用 random.choice 來從列表中隨機(jī)取得一個(gè)元素。代碼如下面的屏幕截圖所示:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?現(xiàn)在,我們只需要編寫其他的條件代碼即可。接下來,讓我們來查看一下代碼。

1.4.4 代碼查看

從為本章提供的補(bǔ)充代碼包中下載源代碼文件 ch01_ex01.py 。文件擴(kuò)展名 .py 表明它是一個(gè)Python文件。在Python編輯器或你選擇的一款I(lǐng)DE中打開它。建議在閱讀以下討論時(shí),請保持隨時(shí)能查看該文件。通常能夠?yàn)g覽完整的代碼會讓你更容易且更好地理解它。觀察下面的代碼片段,它只是上文提到的文件中的 if __name__ == ‘__main__’ 條件代碼塊中的一小部分。

如果你安裝的是Python 2.7.9的話,支持代碼包中有一個(gè)單獨(dú)的Python 2.7.9兼容源代碼文件。?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?讓我們來看一下上面截圖的代碼片段。

前兩行代碼導(dǎo)入了兩個(gè)內(nèi)置模塊,從而獲得這些模塊中提供的功能。 textwrap 模塊為命令行中的消息提供了很好的格式打印功能。

if條件塊 if __name__ == ‘__main__’ ,只有當(dāng)該文件作為一個(gè)獨(dú)立的腳本運(yùn)行時(shí)才會被調(diào)用。換句話說,如果在其他文件中導(dǎo)入此文件,那么在條件塊中的代碼將不會被執(zhí)行。

現(xiàn)在,讓我們看看這個(gè)條件塊中的代碼。首先,我們會初始化一些變量。如前面所示的那樣, occupants 列表存儲了木屋占有人的類型。

最后幾行代碼只是對終端窗口中打印的文本進(jìn)行格式化。變量 dotted_line 是一個(gè)字符串,它是由72個(gè)連字符組成的一條長線。

代碼中的ASCII轉(zhuǎn)義序列是用來用粗體打印文本。序列033[1m表示使用粗體文本,033[0m表示返回到正常的打印樣式。

接下來的幾行代碼主要是在控制臺中打印關(guān)于游戲的進(jìn)一步信息:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?讓我們看一看上面截圖中的代碼:

變量msg是一個(gè)非常長的變量。這也是textwrap被時(shí)常用到的地方。

使用textwrap.fill會讓每行以72個(gè)字符長度的方式來對消息進(jìn)行顯示,長度是通過前面代碼中定義的變量width來指定的。

現(xiàn)在,讓我們來看看下面的while循環(huán)吧。

對于Python 2.7.9來說,在上面的第一個(gè)示例代碼中唯一需要修改的是將調(diào)用內(nèi)置函數(shù)input的地方替換成raw_input:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?最外層的循環(huán)讓玩家可以選擇重新開始游戲。

通過使用 random.choice ,我們可以隨機(jī)從 occupants 列表中挑選一個(gè)占有者,然后把它增加到小木屋的列表中。這個(gè)之前有過說明。

內(nèi)置的 input 函數(shù)用一個(gè)整數(shù)來接受用戶選擇的一個(gè)小木屋編號。變量 idx 用來存儲一個(gè)數(shù)字。

接下來,通過打印明細(xì)來表明占有者的信息。最后,根據(jù)與小木屋編號對應(yīng)的列表項(xiàng)來確定贏家。需要注意的是,huts 列表的索引是從0開始的。因此,根據(jù)選定的小木屋編號 idx 來取得相應(yīng)的列表項(xiàng)時(shí),我們需要使用 idx-1 作為列表的索引。

1.4.5 運(yùn)行獸人之襲v0.0.1

假設(shè)你的系統(tǒng)環(huán)境變量PATH中已經(jīng)包含了Python(可能是Python或者Python 3)的話,那么可以通過以下方式在命令行運(yùn)行該程序:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

??僅此而已!請玩玩這個(gè)游戲,并嘗試選擇正確的木屋來解救Foo先生吧!下面的Linux終端窗口的快照顯示了程序的運(yùn)行情況:?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?本文摘自《Python應(yīng)用開發(fā)實(shí)戰(zhàn)》?

用Python 3開發(fā)簡單程序(用python做開發(fā))

?《Python應(yīng)用開發(fā)實(shí)戰(zhàn)》

[美] 尼納德·薩斯葉(Ninad Sathaye) 著

?用Python 3.5構(gòu)建健壯的、可重用的、高效的應(yīng)用程序 ;輕松奇幻的學(xué)習(xí)主線,解決Python開發(fā)中遇到的實(shí)際問題

本書使用一個(gè)生動有趣的、基于文本的游戲主題作為講解內(nèi)容來介紹Python應(yīng)用開發(fā)過程的各個(gè)方面。全書共10章,涉及簡單應(yīng)用開發(fā)、模塊化、打包和發(fā)布應(yīng)用的代碼、文檔規(guī)范、單元測試、重構(gòu)、設(shè)計(jì)模式、性能監(jiān)測、性能優(yōu)化、GUI應(yīng)用、MVC框架等方方面面的軟件開發(fā)知識和技能。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
在線咨詢
分享本頁
返回頂部