簡介:
https://m.toutiaocdn.com/group/6809813601327514116/?app=news_article×tamp=1585618907&req_id=2020033109414701012903202229D82BE7&group_id=6809813601327514116
你曾經(jīng)想知道計算機是如何工作的嗎?盡管我們不能在一篇文章里面教會你所有的東西,但是可以通過學習如何寫出你自己的程序來獲得一個良好的開端。在這篇Python教程中,你將會學到計算機編程的基礎知識,使用對新手來 ...
媒體技術概念
你曾經(jīng)想知道計算機是如何工作的嗎?盡管我們不能在一篇文章里面教會你所有的東西,但是可以通過學習如何寫出你自己的程序來獲得一個良好的開端。在這篇Python教程中,你將會學到計算機編程的基礎知識,使用對新手來說最棒的編程語言之一。
什么是編程?
當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎么去學習呢?
所以小編準備了一份零基礎入門Python的學習資料。
注:想學習Python的小伙伴們,轉發(fā)文章+私信回復【學習】
盡可能簡單的講,編程是編寫代碼,命令計算機去完成某項任務的藝術。這里講的某項任務,可以是簡單的兩數(shù)相加,或是像把飛船送入軌道這樣的復雜任務!
一個程序里面,最小的組成部分被稱作語句(statement)——代表了對計算機做出的一條指令。
當你完成了自己的程序后,編譯器會把你寫的代碼轉換為機器碼——計算機語言的最底層。機器碼指示中央處理器工作(central processing unit),或者叫做CPU,這里面包含一些諸如加載某個值或是做數(shù)學運算的步驟。
如果你曾經(jīng)聽過某人說:“我編譯了我的程序”,那代表他們已經(jīng)把代碼轉換成了機器碼。
為什么不直接寫機器碼呢?原因很顯然,程序碼具有可讀性。下面比較了Python版的程序和其對應的機器碼:
Python代碼
print 'Hello, World!'
...
'Hello, World!'
對應的機器碼
很明顯為什么你不會想要直接編寫機器碼了。但是,確實有一些人會去寫機器碼——蘿卜白菜各有所愛嘛!
上面我們忽略了一個小問題。Python是一種解釋型語言;你并不會像上面我們暗示的那樣,把它直接編譯成為機器碼。
實際上是這樣的,Python使用一個叫做解釋器的東西。解釋器是另外一個程序,把代碼編譯成叫做二進制碼的東西,然后再程序運行的時候再轉換成機器碼。你等下會學到更多和解釋器有關的內容。
當你最終運行程序的時候,你剛編譯的那些機器碼會被加載到內存中,CPU會讀取它并執(zhí)行程序。
然而,在剛開始學習使用Python編程的時候,你并不需要完全理解編譯器的內部工作原理,但是你必須確保你已經(jīng)安裝了Python。
準備開始
如果你在使用Mac,你走運了——Python已經(jīng)預裝在Mac中了。在Mac中使用Python解釋器,打開**終端**(**Terminal.app**);你可以再應用程序/工具文件夾下找到它,或者在Spotlight中輸入,像這樣:
打開終端后,輸入下面的指令然后按下回車:
$ python
你會看到類似下面這樣的結果:
注意:如果你沒有得到上面的結果,把輸出結果復制到論壇,我們會盡力幫助你的!**
Windows
在Windows上,這一過程稍微有點復雜——但是還是要說,大部分的東西還是在Windows!上:]
首先,在瀏覽器中訪問Python官網(wǎng)的下載頁面。
滾動頁面跳過所有的Python 3.x.x版本,直接到Python 2.7.x。下載Windows安裝包(Windows installer),運行,按照指引來做,接受默認的選項。
一旦安裝包安裝完成,你就可以啟動它了。
在Windows Vista或者Windows 7上,這樣啟動:
1. 點擊左下角的開始菜單。
2. 點擊所有程序
3. 打開Python文件夾
4. 雙擊IDLE解釋器
如果你使用Windows 8,這樣啟動:
1. 點擊左下角開始菜單
2. 在搜索框中輸入IDLE
3. 點擊IDLE(Python GUI)
不管你是如何啟動解釋器的,你應該確保它能夠工作,在終端中輸入如下命令,或者是在Windows的命令提示符中輸入如下指令并按回車:
print “Hello World!”
盡管看上去并不像,但是你已經(jīng)寫完你第一個Python程序了!在學習大多數(shù)語言的時候,打印出Hello, World被認為是一個起點。
python 命令指示計算機在屏幕上輸出后面的字符——而不是在你的打印機上打?。∽⒁狻癏ello World”兩邊的引號,引號中的任何東西都被看做常規(guī)的文本兒不會被解釋為一個指令。
變量
變量,是在計算機內存中存放數(shù)據(jù)的一種方式;在你的程序中你會經(jīng)常用到它們。在一些語言中,變量有特定的類型,指明了這些變量屬于那些類。
在Python中,你不需要聲明變量的類型?,F(xiàn)在暫時不需要在意這些細節(jié);在本教程稍后的章節(jié)中你會學到關于這個內容的知識。
在解釋器中輸入如下命令并按回車:
hello = 'Hello World!'
這么做聲明了hello變量并且把Hello World賦值類了它?,F(xiàn)在,你不需要在程序中需要“Hello World”的地方輸入這個字符串了,取而代之的是,你可以使用hello這個變量。
在解釋器中輸入如下命令并按回車:
print hello
這個指令會產(chǎn)生和Hello World例子相同的結果,但是它是打印出了hello這個變量的值。
變量同樣也可以用來儲存數(shù)字。在解釋器中輸入如下命令:
x = 5
print x
y = 10
z = x + y
print z
注意:從現(xiàn)在起,你可能要輸入多行語句,只需要在每行末尾輸入回車即可**
先猜猜看上面的代碼會做些上面,再看下面的答案:
這段代碼會打印5,然后打印15.第一個print語句打印了被你賦值為5的變量x。然后它打印了y+x的結果。因為y被賦值為10,x是5,所以打印了15。
對于你生命中的絕大部分程序變量是其核心。在你學習本教程的過程中,你會對變量變得非常熟悉。
變量類型
在之前的教程中你已經(jīng)遇到了變量,但是我們并沒有仔細的介紹它。不同的變量類型存儲不同類型的值。
注意:對于全部的內建類型,請查看Python官方文檔
到目前為止,你僅僅和Python中兩個基本類型打過交道:整型(integers)和字符串型(strings),你還會遇到布爾類型(boolean),你可以用它來儲存True或者False。
下面有關于這些變量類型的一點介紹:
整型
一個整型數(shù),是一個整數(shù)。整型數(shù)的范圍,在32位機上是-2147483648 到 2147483647 ,在64位機上是 -9223372036854775808 to 9223372036854775807。
你可以像這樣簡單的輸入一個數(shù)字來創(chuàng)建整型,不需要任何引號:
foo = 5
字符串型
字符串是一串字符;你可以使用字符串來表示很多東西,從屏幕上的任何文本到整個網(wǎng)頁請求。
通過用引號包含一串字符來創(chuàng)建字符串,就像下面一樣:
布爾類型
布爾類型代表了True或False。
你通過使用大寫開頭的True或False 來創(chuàng)建布爾類型,不需要引號,就像下面這樣:
`isFoo = True`
變量兩邊沒有引號;如果你用引號包含了True,你則是創(chuàng)建了一個字符串類型!
字符串連接和整數(shù)相加
Python讓兩個字符串鉤在一起變得很容易,我們也稱之為字符串連接。你可以使用str()把一個整數(shù)類型轉換成字符串,相反,你也可以使用int()把一個字符串轉換為整型。
在你的解釋器中輸入下面指令:
'1' + '1'
1 + 1
1 + int('1')
下面解釋上面代碼做了些什么:
– 第一條語句連接了兩個字符串;引號確保了這兩個數(shù)字被當做字符串除了。結果就是”11″。
– 第二條語句把兩個數(shù)作為整數(shù)相加,結果是2.
– 最后一條語句把一個整數(shù)和另一個被轉換為整數(shù)的字符串相加,結果還是2。
if 語句
if語句檢查某個條件是不是真,如果是,則執(zhí)行一段代碼。條件語句通常是這樣的形式值 - 操作符 - 值,通常是比較兩個值。
比如,你可以使用x == 0評價一個值是不是等于0,== 是等于操作符。
下面是Python中的一些常見比較
a == b: #Checks if a and b are equal
a != b: #Checks if a and b are not equal
a > b: #Checks if a is greater than b
a < b: #Checks if a is less than b
a >= b: #Checks if a is greater than or equal to b
a <= b: #Checks if a is less than or equal to b
if語句是如下的形式:
if conditional:
do_statements_here
注意到在這里執(zhí)行某些語句 這行是如何縮進的。這是你在Python聲明代碼塊的方式。同一個代碼塊中的每一行都必須和其他所有行縮進相同的制表符或是空格;這是語言強制規(guī)定的。換句話說,不要混合使用制表符和空格。創(chuàng)建一個if語句,在解釋器中輸入如下命令:
迎接你的是神秘的提示符...;這表示解釋器在等待你輸入代碼塊的內容,按下Tab鍵,輸入第二行:
再次按下回車,你的光標回到了控制臺的最左邊。要想再輸入一個代碼塊語句,只需要再按Tab。如果你輸入完了,按下回車告訴解釋器你的代碼塊已經(jīng)完成。
看一下下面的例子:
第一條語句判斷x是不是等于10,如果是的話,打印x equals 10!。另外一個if語句判斷x是否等于y,如果是的話,打印'x equals y!'.
for循環(huán)
for循環(huán)再Python中遍歷列表中的項目并且把當前項目賦值給變量。一個列表幾乎可以是任何東西的集合!
輸入下面的代碼,并且像下面這樣縮進:
for x in range(10):
print x
在這個例子中,range(10) 生成了數(shù)字0到9的一個列表。for循環(huán)一次把范圍內的數(shù)字賦值給x。就像if語句一樣,for循環(huán)執(zhí)行它下面縮進中的每個語句。在上面的例子中,縮進的代碼塊里面只包含了一個單獨的語句。
因為print被調用了10次,對于列表中的每個項目調用一次,這個程序會打印0到9的數(shù)字。
函數(shù)
函數(shù)是可以重用的代碼塊,用來完成某個特定的代碼塊。比如說,你可以寫一個函數(shù)用來把兩個數(shù)相加,或是打印一個字符串。你可以像下面例子展示的一樣定義并調用函數(shù)。
在運行前,你可以猜猜看這個程序的輸出是什么嗎?答案見下文:
它會打印出“Hi”三次,因為for循環(huán)會調用這個hello函數(shù)三次。
縮進的代碼塊定義了你調用函數(shù)時要執(zhí)行的語句。因為print 'Hi' 是這個函數(shù)里唯一縮進的語句,所以當調用函數(shù)時也是唯一被執(zhí)行的語句,而不是下面的幾行。
你可以通過輸入結尾帶有一對括號的函數(shù)名來調用函數(shù),像之前展示的那樣,hello() 調用了你上面調用的函數(shù)。函數(shù)有點類似有圍墻的花園:它們不能看到它們那一畝三分地意外的世界。這個被稱作變量作用域。如果你想要讓一個函數(shù)和外界的數(shù)據(jù)協(xié)同工作,你需要把這些數(shù)據(jù)傳遞給函數(shù)。
使用參數(shù)(arguments)可以達到這一目的——不不不,函數(shù)之間是不會相互爭吵(argue)的!
參數(shù)是一個你傳遞給函數(shù)的一個變量;然后函數(shù)就可以在內部使用這個參數(shù)的值了。
你可以像下面這樣聲明一個帶參函數(shù):
def add(a, b):
print a + b
上面的函數(shù)定義了兩個參數(shù),a和b,放在括號里面,用逗號相互隔開。當你調用這個函數(shù)的時候,解釋器會吧a和b的值設置為你傳入變量的值。
看一下下面這個例子:
def add(a, b):
print a + b
add(1,2) # prints 3!
在上面的例子中,add(1,2) 這條語句把a和b分別設置為1和2。然后函數(shù)打印了你傳入的兩個數(shù)的和。上面的例子打印了計算結果——但是如果你想要用這個計算結果做些事情呢?如果你想要把這個函數(shù)的結果加上別的一個值呢?
為了做到這一點,你需要給你的函數(shù)加一個return 語句。
考慮如下代碼:
在上面的例子中,你的函數(shù)像之前一樣把兩數(shù)相加,但是return(返回)語句把兩數(shù)和傳回了函數(shù)調用語句。
這意味著上面的print 語句得到了add(2,2)返回的值然后把它加1,最后會給你的結果是5。
While 循環(huán)
while循環(huán)和for循環(huán)類似。for循環(huán)一直進行,直到到達列表的末尾,但是while循環(huán)會不定的循環(huán),直到給定條件的值等于False。一個while循環(huán)的典型結構是下面這樣:
while (conditional):
run_statement
通常,條件變量會在循環(huán)運行過程中更新。在解釋器中輸入下面的程序,來看看這一過程:
這個程序的行為類似于上面的for循環(huán),但是使用了while循環(huán)。這是上面程序所做的事情:
1. 給x賦值0
2. 檢查是否滿足 x < 10
3. 如果x < 10 的值是True, 執(zhí)行下面的代碼塊. 如果是 False 退出循環(huán)
4. 打印x
5. 把 x 值加1
使用while循環(huán)需要注意一件事,就是不要創(chuàng)建死循環(huán)。
在解釋器中輸入下面的程序,來看看死循環(huán)是什么樣的:
哇啊——終端瘋了吧?按Ctrl+C來終止程序吧。
剛才發(fā)生了什么?如果你仔細看,你會發(fā)現(xiàn)while循環(huán)的條件,True永遠無法變成False,所以這段代碼會以CPU能夠執(zhí)行的最快的速度打印數(shù)字。
這個故事告訴我們:當寫while循環(huán)的時候要時刻保持小心,因為你代碼里面的無限循環(huán),對于真實世界來講,不太會是什么好事!
使用True作為while循環(huán)的條件是有可能的,尤其是當你不知道要循環(huán)多少次的時候。但是你需要一些技巧來退出這個循環(huán)。
在解釋器中輸入下面的代碼:
這樣就好多了!上面的代碼會打印0到10然后退出。這里用到的技巧是break語句,它會直接跳出循環(huán)。不論出于何種原因,如果你想要在for循環(huán)中提前跳出,也可以使用這個技巧。
捕獲用戶輸入
Python中一件很酷的事情是可以非常簡便的以文本的方式獲取輸入用戶輸入。輸入是指任何從外部提供給程序的數(shù)據(jù),比如文本或者是其他會影響程序行為的指令。
在你的解釋器中輸入下面代碼:
上面的代碼首先會讓你進行輸入;一旦用戶輸入了問題的答案,程序會把它賦值給name變量。這一過程完成后,程序會連接字符串“Hello,”和變量name 的內容。
raw_input()函數(shù)是Python內建函數(shù);它完成打印從控制臺輸入字符串的工作,捕獲用戶輸入的文本,然后把它們作為函數(shù)值返回。
利用上面捕獲輸入的技術,你可以創(chuàng)建簡單的計算器。在你的解釋器中輸入下面的代碼:
首先,你捕獲了兩個用戶輸入的值然后把它們分別賦值給a和b。然后你把他們轉換成了整型并相加。
為什么要有轉換這一步呢?僅僅是因為解釋器中所有的輸入都是以字符串形式進行的,而你是希望吧兩個整數(shù)的值相加。
如果你不轉換這些字符串為整數(shù),你覺得會怎樣呢?沒錯,程序會連接你輸入的字符串,這并不是你想要的!
導入
在我們深入研究導入之前,介紹一下Python的模塊是必要的。一個模塊,是一組Python函數(shù)的集合,你希望在不同的程序中重用它們。導入一個模塊等價于從一個模塊中把所有的代碼取出來放到你自己的程序里面所以你可以在任何時候去使用他們,但是又不需要去剪切和復制,哪怕是一行代碼!
在Python社區(qū)中,存在著大量的模塊,但是目前來講,你僅會接觸到隨機數(shù)模塊(random module)。
要導入模塊,在解釋器中輸入下面的代碼:
import random
一旦導入了模塊,你就可以像下面這樣使用它了:
print random.randint(0, 100)
這將會打印0到100間隨機的整數(shù);很直觀的東西。到目前為止你已經(jīng)學到很多知識了,足以把他們揉在一個小程序里來練習一下你目前學到的知識了!
猜謎游戲
這將是你辛苦學習Python編程得到的回報。你將創(chuàng)造屬于你自己的猜謎游戲!
首先,你需要一個與在解釋器中一句一句直接執(zhí)行程序相比更好的方式。
為了做到這一點,你需要創(chuàng)建Python文件。
Mac
在Mac系統(tǒng)下創(chuàng)建Python文件,在終端中輸入下面的命令:
$ touch guess.py
$ open -t guess.py
這將會使用touch 命令創(chuàng)建一個空的guess.py 文件,然后通過open -t命令,使用默認的文本編輯器打開它,
一旦你的Python文件中有了一些內容后,你就可以在終端中輸入python guess.py 來執(zhí)行它。
Windows
在Windows系統(tǒng)下,點擊IDLE中的文件按鈕(File) 找到新建文件(New File)。你會發(fā)現(xiàn)一個文本編輯器映入眼簾,你可以在里面輸入你的新程序。
再次點擊文件按鈕,選擇保存。把文件名命名為guess.py 然后把它保存在你想要保存的地方。
運行你的程序,在菜單中選擇RunRun,就像這樣:
游戲時間!
猜謎游戲將會生成一個隨機數(shù),然后在一個循環(huán)中,反復詢問游戲者他們的猜測結果。如果用戶猜中,則結束循環(huán);否則程序會提醒用戶他們的猜測是過高還是過低并繼續(xù)詢問結果直到猜中。
import random
number = random.randint(0, 100)
上面這段程序會導入隨機數(shù)模塊,然后生成一個0到100之間的隨機數(shù)并把它儲存在變量number中。
接下來,你需要詢問游戲者他們的答案。把這些代碼加到程序的后面:
guess = raw_input('Guess the Number: ')
這段代碼,和你猜的一樣,讓用戶輸入它們的答案并且把它保存在guess變量中。記住,現(xiàn)在這個變量是一個字符串,你需要把它轉換為整型。
在程序中添加下面的代碼,就加在上面的代碼后面:
guess_int = int(guess)
這個代碼把用戶輸入的字符串轉換為整型然后賦值給guess_int變量。
下面你需要比較用戶猜測的值和隨機數(shù)的大小。
在程序結尾添加下面的代碼:
點擊菜單按鈕的RunRun Module或是在終端中輸入python guess.py 來運行程序;當程序提示你的時候,輸入數(shù)字。發(fā)生了什么?程序在你輸入數(shù)字后會把結果顯示到屏幕上然后就停止了。哎呀!
你想讓程序循環(huán)的詢問你結果直到你猜中。你需要用一個running變量來添加這個功能。
running = True
running會被用在while循環(huán)中來控制你程序的循環(huán)。當用戶輸入正確的答案,程序會把running變量賦值為False然后while就會停止。
在你讓用戶輸入結果的前面添加下面這段代碼:
下面,縮進剩下的代碼到同一層,這樣while循環(huán)才能認出它們是循環(huán)中的代碼塊。
最后,你需要添加用戶獲勝時,把running賦值為False的語句:
確保if下面的兩行代碼被縮進兩層。
運行你的程序,現(xiàn)在再試一下。你需要多少回才能猜中正確答案?
你最終的程序看上去是這個樣子的:
恭喜你——你已經(jīng)寫出了你的第一個Python程序。別不是那么難,對吧?
從這里,到何方?
現(xiàn)在你已經(jīng)完成了Python新手教程,我打賭你一定渴望一次挑戰(zhàn)。嘗試在你的程序中添加如下功能:
猜測次數(shù)統(tǒng)計
更大的隨機數(shù)產(chǎn)生范圍
一個電腦操控的游戲對手
聯(lián)系客服