掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
不論是經(jīng)驗豐富的老程序員,還是沒有經(jīng)驗的新手,Python 都是一個非常好的編程語言。
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的都昌網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
Python 是一個非常流行的編程語言,它可以用于創(chuàng)建桌面應(yīng)用程序、3D 圖形、視頻游戲、甚至是網(wǎng)站。它是非常好的首選編程語言,因為它易于學(xué)習(xí),不像一些復(fù)雜的語言,比如,C、 C++、 或 Java。 即使如此, Python 依然也是強大且健壯的,足以創(chuàng)建高級的應(yīng)用程序,并且?guī)缀踹m用于所有使用電腦的行業(yè)。不論是經(jīng)驗豐富的老程序員,還是沒有經(jīng)驗的新手,Python 都是一個非常好的編程語言。
在學(xué)習(xí) Python 之前,你需要先去安裝它:
Linux: 如果你使用的是 Linux 系統(tǒng), Python 是已經(jīng)包含在里面了。但是,你如果確定要使用 Python 3 。應(yīng)該去檢查一下你安裝的 Python 版本,打開一個終端窗口并輸入:
python3 -V
如果提示該命令沒有找到,你需要從你的包管理器中去安裝 Python 3。
MacOS: 如果你使用的是一臺 Mac,可以看上面 Linux 的介紹來確認(rèn)是否安裝了 Python 3。MacOS 沒有內(nèi)置的包管理器,因此,如果發(fā)現(xiàn)沒有安裝 Python 3,可以從 python.org/downloads/mac-osx 安裝它。即使 macOS 已經(jīng)安裝了 Python 2,你還是應(yīng)該學(xué)習(xí) Python 3。
Windows: 微軟 Windows 當(dāng)前是沒有安裝 Python 的。從 python.org/downloads/windows 安裝它。在安裝向?qū)е幸欢ㄒx擇 Add Python to PATH 來將 Python 執(zhí)行程序放到搜索路徑。
在 Python 中寫程序,你需要準(zhǔn)備一個文本編輯器,使用一個集成開發(fā)環(huán)境(IDE)是非常實用的。IDE 在一個文本編輯器中集成了一些方便而有用的 Python 功能。IDLE 3 和 NINJA-IDE 是你可以考慮的兩種選擇:
Python 自帶的一個基本的 IDE 叫做 IDLE。
IDLE
它有關(guān)鍵字高亮功能,可以幫助你檢測拼寫錯誤,并且有一個“運行”按鈕可以很容易地快速測試代碼。
要使用它:
idle3。cmd 啟動 Windows 命令提示符,然后輸入 C:\Windows\py.exe。Ninja-IDE 是一個優(yōu)秀的 Python IDE。它有關(guān)鍵字高亮功能可以幫助你檢測拼寫錯誤、引號和括號補全以避免語法錯誤,行號(在調(diào)試時很有幫助)、縮進標(biāo)記,以及運行按鈕可以很容易地進行快速代碼測試。
Ninja-IDE
要使用它:
python 為 python3。Ninja-IDE 中的 Python3
關(guān)鍵字可以告訴 Python 你想要做什么。不論是在 IDLE 還是在 Ninja 中,轉(zhuǎn)到 File 菜單并創(chuàng)建一個新文件。對于 Ninja 用戶:不要創(chuàng)建一個新項目,僅創(chuàng)建一個新文件。
在你的新的空文件中,在 IDLE 或 Ninja 中輸入以下內(nèi)容:
print("Hello world.")
在 Ninja 中運行文件
關(guān)鍵字 print 告訴 Python 去打印輸出在圓括號中引用的文本內(nèi)容。
雖然,這并不是特別刺激。在其內(nèi)部, Python 只能訪問基本的關(guān)鍵字,像 print、 help,最基本的數(shù)學(xué)函數(shù),等等。
可以使用 import 關(guān)鍵字加載更多的關(guān)鍵字。在 IDLE 或 Ninja 中開始一個新文件,命名為 pen.py。
警告:不要命名你的文件名為 turtle.py,因為名為 turtle.py 的文件是包含在你正在控制的 turtle (海龜)程序中的。命名你的文件名為 turtle.py ,將會把 Python 搞糊涂,因為它會認(rèn)為你將導(dǎo)入你自己的文件。
在你的文件中輸入下列的代碼,然后運行它:
import turtle
Turtle 是一個非常有趣的模塊,試著這樣做:
turtle.begin_fill()turtle.forward(100)turtle.left(90)turtle.forward(100)turtle.left(90)turtle.forward(100)turtle.left(90)turtle.forward(100)turtle.end_fill()
看一看你現(xiàn)在用 turtle 模塊畫出了一個什么形狀。
要擦除你的海龜畫圖區(qū),使用 turtle.clear() 關(guān)鍵字。想想看,使用 turtle.color("blue") 關(guān)鍵字會出現(xiàn)什么情況?
嘗試更復(fù)雜的代碼:
import turtle as timport timet.color("blue")t.begin_fill()counter=0while counter < 4:t.forward(100)t.left(90)counter = counter+1t.end_fill()time.sleep(5)
運行完你的腳本后,是時候探索更有趣的模塊了。
想學(xué)習(xí)更多的 Python 關(guān)鍵字,和用圖形編程的高級特性,讓我們來關(guān)注于一個游戲邏輯。在這個教程中,我們還將學(xué)習(xí)一些關(guān)于計算機程序是如何構(gòu)建基于文本的游戲的相關(guān)知識,在游戲里面計算機和玩家擲一個虛擬骰子,其中擲的最高的是贏家。
在寫代碼之前,最重要的事情是考慮怎么去寫。在他們寫代碼 之前,許多程序員是先 寫簡單的文檔,這樣,他們就有一個編程的目標(biāo)。如果你想給這個程序?qū)憘€文檔的話,這個游戲看起來應(yīng)該是這樣的:
這是一個簡單的游戲,但是,文檔會告訴你需要做的事很多。例如,它告訴你寫這個游戲需要下列的組件:
很少有程序,一開始就包含其所有的功能,因此,它們的初始版本僅實現(xiàn)最基本的功能。首先是幾個定義:
變量是一個經(jīng)常要改變的值,它在 Python 中使用的非常多。每當(dāng)你需要你的程序去“記住”一些事情的時候,你就要使用一個變量。事實上,運行于代碼中的信息都保存在變量中。例如,在數(shù)學(xué)方程式 x + 5 = 20 中,變量是 x ,因為字母 x 是一個變量占位符。
整數(shù)是一個數(shù)字, 它可以是正數(shù)也可以是負(fù)數(shù)。例如,1 和 -1 都是整數(shù),因此,14、21,甚至 10947 都是。
在 Python 中變量創(chuàng)建和使用是非常容易的。這個擲骰子游戲的初始版使用了兩個變量: player 和 ai。
在命名為 dice_alpha.py 的新文件中輸入下列代碼:
import randomplayer = random.randint(1,6)ai = random.randint(1,6)if player > ai :print("You win") # notice indentationelse:print("You lose")
啟動你的游戲,確保它能工作。
這個游戲的基本版本已經(jīng)工作的非常好了。它實現(xiàn)了游戲的基本目標(biāo),但是,它看起來不像是一個游戲。玩家不知道他們搖了什么,電腦也不知道搖了什么,并且,即使玩家還想玩但是游戲已經(jīng)結(jié)束了。
這是軟件的初始版本(通常稱為 alpha 版)。現(xiàn)在你已經(jīng)確信實現(xiàn)了游戲的主要部分(擲一個骰子),是時候該加入到程序中了。
在你的游戲的第二個版本中(稱為 beta 版),將做一些改進,讓它看起來像一個游戲。
不要只告訴玩家他們是贏是輸,他們更感興趣的是他們擲的結(jié)果。在你的代碼中嘗試做如下的改變:
player = random.randint(1,6)print("You rolled " + player)ai = random.randint(1,6)print("The computer rolled " + ai)
現(xiàn)在,如果你運行這個游戲,它將崩潰,因為 Python 認(rèn)為你在嘗試做數(shù)學(xué)運算。它認(rèn)為你試圖在 player 變量上加字母 You rolled ,而保存在其中的是數(shù)字。
你必須告訴 Python 處理在 player 和 ai 變量中的數(shù)字,就像它們是一個句子中的單詞(一個字符串)而不是一個數(shù)學(xué)方程式中的一個數(shù)字(一個整數(shù))。
在你的代碼中做如下的改變:
player = random.randint(1,6)print("You rolled " + str(player) )ai = random.randint(1,6)print("The computer rolled " + str(ai) )
現(xiàn)在運行你的游戲?qū)⒖吹皆摻Y(jié)果。
計算機運行的非??臁H擞袝r可以很快,但是在游戲中,產(chǎn)生懸念往往更好。你可以使用 Python 的 time 函數(shù),在這個緊張時刻讓你的游戲慢下來。
import randomimport timeplayer = random.randint(1,6)print("You rolled " + str(player) )ai = random.randint(1,6)print("The computer rolls...." )time.sleep(2)print("The computer has rolled a " + str(player) )if player > ai :print("You win") # notice indentationelse:print("You lose")
啟動你的游戲去測試變化。
如果你多玩幾次你的游戲,你就會發(fā)現(xiàn),即使你的游戲看起來運行很正確,它實際上是有一個 bug 在里面:當(dāng)玩家和電腦搖出相同的數(shù)字的時候,它就不知道該怎么辦了。
去檢查一個值是否與另一個值相等,Python 使用 ==。那是個“雙”等號標(biāo)記,不是一個。如果你僅使用一個,Python 認(rèn)為你嘗試去創(chuàng)建一個新變量,但是,實際上你是去嘗試做數(shù)學(xué)運算。
當(dāng)你想有比兩個選項(即,贏或輸)更多的選擇時,你可以使用 Python 的 elif 關(guān)鍵字,它的意思是“否則,如果”。這允許你的代碼去檢查,是否在“許多”結(jié)果中有一個是 true, 而不是只檢查“一個”是 true。
像這樣修改你的代碼:
if player > ai :print("You win") # notice indentationelif player == ai:print("Tie game.")else:print("You lose")
多運行你的游戲幾次,去看一下你能否和電腦搖出一個平局。
你的擲骰子游戲的 beta 版的功能和感覺比起 alpha 版更像游戲了,對于最終版,讓我們來創(chuàng)建你的第一個 Python 函數(shù)。
函數(shù)是可以作為一個獨立的單元來調(diào)用的一組代碼的集合。函數(shù)是非常重要的,因為,大多數(shù)應(yīng)用程序里面都有許多代碼,但不是所有的代碼都只運行一次。函數(shù)可以啟用應(yīng)用程序并控制什么時候可以發(fā)生什么事情。
將你的代碼變成這樣:
import randomimport timedef dice():player = random.randint(1,6)print("You rolled " + str(player) )ai = random.randint(1,6)print("The computer rolls...." )time.sleep(2)print("The computer has rolled a " + str(player) )if player > ai :print("You win") # notice indentationelse:print("You lose")print("Quit? Y/N")cont = input()if cont == "Y" or cont == "y":exit()elif cont == "N" or cont == "n":passelse:print("I did not understand that. Playing again.")
游戲的這個版本,在他們玩游戲之后會詢問玩家是否退出。如果他們用一個 Y 或 y 去響應(yīng), Python 就會調(diào)用它的 exit 函數(shù)去退出游戲。
更重要的是,你將創(chuàng)建一個稱為 dice 的你自己的函數(shù)。這個 dice 函數(shù)并不會立即運行,事實上,如果在這個階段你嘗試去運行你的游戲,它不會崩潰,但它也不會正式運行。要讓 dice 函數(shù)真正運行起來做一些事情,你必須在你的代碼中去調(diào)用它。
在你的現(xiàn)有代碼下面增加這個循環(huán),前兩行就是上文中的前兩行,不需要再次輸入,并且要注意哪些需要縮進哪些不需要。要注意縮進格式。
else:print("I did not understand that. Playing again.")# main loopwhile True:print("Press return to roll your die.")roll = input()dice()
while True 代碼塊首先運行。因為 True 被定義為總是真,這個代碼塊將一直運行,直到 Python 告訴它退出為止。
while True 代碼塊是一個循環(huán)。它首先提示用戶去啟動這個游戲,然后它調(diào)用你的 dice 函數(shù)。這就是游戲的開始。當(dāng) dice 函數(shù)運行結(jié)束,根據(jù)玩家的回答,你的循環(huán)再次運行或退出它。
使用循環(huán)來運行程序是編寫應(yīng)用程序最常用的方法。循環(huán)確保應(yīng)用程序保持長時間的可用,以便計算機用戶使用應(yīng)用程序中的函數(shù)。
現(xiàn)在,你已經(jīng)知道了 Python 編程的基礎(chǔ)知識。這個系列的下一篇文章將描述怎么使用 PyGame 去編寫一個視頻游戲,一個比 turtle 模塊有更多功能的模塊,但它也更復(fù)雜一些。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流