Python完全新手教程

NO IMAGE

Python入門教程FROM:http://www.cnblogs.com/taowen/articles/11239.aspx作者:taowen, billrice
Lesson 1 準備好學習Python的環境
下載的地址是:
www.python.org
linux版本的我就不說了,因為如果你能夠使用linux並安裝好說明你可以一切自己搞定的。
執行環境可以是linux或者是windows:
1、linux
redhat的linux安裝上去之後一定會有python的(必須的元件),在命令列中輸入python回車。這樣就可以進入一個
>>>的提示符
2、windows
安裝好了python之後,在開始選單裡面找到Python2.3->IDLE,執行也會進入一個有
>>>提示符的視窗
開始嘗試Python
1、輸入:
welcome = “Hello!”
回車
然後又回到了>>>
2、輸入:
print welcome
回車
然後就可以看到你自己輸入的問候了。
Lesson 2 搞定環境之後的前行
Python有一個互動式的命令列,大家已經看到了吧。所以可以比較方便的學習和嘗試,不用“新建-存檔-編譯-除錯”,非常適合快速的嘗試。
一開始從變數開始(其實說變數,更準確的是物件,Python中什麼都可以理解為物件)。
變數
welcome = “hello!”
welcome就是變數名,字串就是變數的型別,hello!就是變數的內容,””表示這個變數是字串,””中間的是字串的內容。
熟悉其他語言的人,特別是編譯型別的語言,覺得沒有變數的宣告很奇怪。在python中用賦值來表示我要這麼一個變數,即使你不知道要放什麼內容,只是要先弄一個地方來放你的東西,也要這麼寫:
store = “”
不過這個還是說明了store是字串,因為””的緣故。
have a try
tmp_storage = “”
welcome = “hello!”
tmp_storage = welcome
print tmp_storage 
你會發現同樣的問候出現了。
字串
字串是用””標記的,但是用”也可以(不要說你看不出一個是雙引號,一個是單引號),兩者之間是有一丁點區別,不過你可以不用理會。其實是差不多的。字串有很多自己的操作,最常用的是這樣的:
welcome = “hello”
you = “world!”
print welcome you 
執行之後就會發現她輸出了helloworld!。
更多變數
變數還有幾種型別。

字串
列表
字典
檔案
勿庸置疑,這些都是非常非常常用的。對於數字就不用講了那就是:
radius = 10
pi = 3.14
area = pi*radius**2
print “the area is”, area 
下次講列表和字典
Lesson 3 Python中的數學結構
數學中你學什麼東西最多遍?我想根據我的一點淺薄經驗(雖然我是數學系的),學得最多的是集合,無論什麼數學書都從集合開始講起。然後講函式呢,又必然把對映再講一遍。可以說,集合和對映是數學中最基本的結構了。
Python對於資料結構非常明智的內建了兩個,回想我寫C的程式,往往是一開始就是用struct拼一個連結串列出來(重複勞動)。Python中提供了列表(list)和字典(dict)兩種資料結構。他們分別對應的原型是集合和對映。這個你應該明白了,只是表示方法有一點不一樣而已。
列表
列表的英文名是list嘛,所以我取一個名字叫
my_list = []
這個就產生了一個空的列表。然後給它賦值
my_list = [1,2]
print my_list
my_list.append(3)
print my_list 
非常容易明白的。append前面加了一個點,這個表示append是my_list方法。我實在不想又去給你解釋什麼是物件,什麼是成員方法,然後扯出一大段出來。
list是可以索引的:
print my_list[1]
不過你或許會不明白為什麼是2,而不是顯示的是1。因為索引從0開始,要輸出第一個元素:
print my_list[0]
字典
contact = {} 
這個產生了一個空字典,contact。然後往裡面填充內容:
contact={}
contact[“name”]=”taowen”
contact[“phone”]=68942443 
name就是你查字典的時候要查詢的單詞,taowen就是查到的內容。不過你現在不是查,而是在寫這個字典。同理新增了phone這個詞條。
現在新增好了,看看contact的內容,怎麼檢視?自己想辦法吧。。。
如果你悟性夠,就會發現python很多操作是通用的,既然能夠print 1, print “”, print my_list,那麼其他資料型別的變數就沒有理由不能用了。
結合列表和字典
contact_list=[]
contact1={}
contact1[‘name’]=’taowen’
contact1[‘phone’]=68942443
contact_list.append(contact1)
contact2={}
contact2[‘name’]=’god’
contact2[‘phone’]=44448888
contact_list.append(contact2) 
呵呵,夠複雜的吧。你可以想出我為什麼要用兩個contact字典呢?。。。
Lesson 4 用不同的方式來操作Python
到現在為止,我們用的都是互動式的命令列來操作的,的卻是很方便,是吧?不過,複雜一些的情況就不那麼好使了,來換一種方式來操作Python
在 IDLE中點選File->New Window,出現一個新視窗(對於linux下,你要用vim或者emacs或者pico把文字的原始檔寫好了)。為了方便,先點選File-> Save,填入my_try.py。這樣能夠讓編輯器知道在編輯python的原始檔,會把你輸入的程式碼進行一點上色的處理。
填入下面的程式碼:
i = 5
n = 0
while i>0:
    n = n   i
    i = i – 1
print n 
你 會發現輸入:之後,自動會給縮排。而且也沒有在python中發現和C/C 中類似的{}標記也沒有pascal中的begin end;,其實縮排就是python中表示一段程式碼的從屬關係的標記方法。表示n=n 1和i=i-1這兩句都是while的。程式的執行邏輯應該不用解 釋了吧。就是執行5 4 3 2 1的結果。
執行程式碼
按F5,可能提示你沒有存檔,照著辦就是了。
發揮你的能力,計算從1到10的所有偶數的和(提示,可能沒有你想象的那麼智慧)。
Lesson 5 Python中的輸入與判斷
健全的程式大凡都需要輸入的功能,所以要學習一下簡單的輸入:
輸 入要使用的是raw_input或者input函式,區別是raw_input直接把你的輸入作為字串返回,而input則在raw_input的基礎 上把字串轉換為數字返回(如果你輸入[email protected]#$$怎麼辦?自己試試看)。我們就利用這兩個輸入函式來作一些有趣的事情。
your_name = raw_input(“please input your name:”)
hint = “welcome! %s” % your_name
print hint 
不簡單吧,還有%呢。%s表示在這個位置插入一個字串,%表示把後面提供的引數“推”入前面的字串中,所以推的結果是把%s推出去了,把your_name給填入那個地方了。printf知道吧,C中的printf就是一樣的嘛。
inputed_num = 0
while 1:
    inputed_num = input(“input a number between 1 and 10 “)
    if inputed_num >= 10:
        pass
    elif inputed_num < 1:
        pass
    else:
        break
print “hehe, don’t follow, won’t out” 
pass就是pass了,過了嘛,什麼都不幹了。break就是跳出這個while 1(無窮迴圈,1總是真的,while總是執行)。是換行,不會全部忘光了吧。
Lesson 6 Python餘興節目
程式碼: [複製到剪貼簿]   
from Tkinter import *
root = Tk()
w = Label(root, text=”Hello, world!”)
w.pack()
root.mainloop() 
呵呵,一次太超前了一點,不過也不是解釋不清楚。我乾脆也不解釋了吧。給大家增進一點興趣。
---------
還是解釋一下
fromt Tkinter import *
是引入一個模組,這個模組用來建立GUI(Graphic User Interface)視窗
Tk()建立了一個主視窗
Label()建立一個標籤
Label的第一個引數是root表明Label是在這個主視窗中的。
w.pack()是指用預設的方式把Label放置在主視窗中
root.mainloop()開始了一個迴圈,是等待你的輸入的迴圈。
Lesson 7 Python基本語法要素齊動員
現在的目的是儘量想出一個用的東西僅限於內建的變數型別和語句的一個綜合的例子,我想還是那個聯絡人表的例子吧
################
#呵呵,還忘記了講註釋
#第一個算是完整的程式
################
contact = {}
contact_list = []
while 1:
    contact[‘name’] = raw_input(“please input name: “)
    contact[‘phone’] = raw_input(“please input phone number: “)
    contact_list.append(contact.copy())
    go_on = raw_input(“continue? “)
    if go_on == “yes”:
        pass
    elif go_on == “no”:
        break
    else:
        print “you didn’t say no ”
i = 1
for contact in contact_list:
    print “%d: name=%s” % (i, contact[‘name’])
    print “%d: phone=%s” % (i, contact[‘phone’])
    i = i   1 
首先是回憶一下字串
字串既能夠用””也能夠用”。然後是很有特色的%操作,起到格式化字串的作用,前面僅僅在字串中有一個%s,現在有%d和%s兩個,分別代表插入十進位制數值和字串於%x標記的位置處。
然後是列表
列 表是順序的序列,用append在後面附加,也能構用索引值索引。所以我們完全可以用一個變數儲存len(contact_list)得到的長度,然後一 個個的遍歷,不過這裡展示了另外一種非常方便的方法。而且值得注意的是append()中的引數,我使用了contact.copy(),你可以嘗試著把 copy()給去掉,觀察結果你就知道了所謂的append是怎麼幹的了,特別是你對指標之類的東西很有感覺的話(但是在Python中是沒有指標這個概 唸的)
再來看看字典
字典是鍵(key)和值(value)的對應組合成的無序的序列。所以你存的時候要指明鍵(name或者phone),而且取的時候也是一樣的。
接下來是判斷
if 是很好用的,==表示判斷兩個是否相等,=表示把右邊的賦給左邊的。而且可以直接判斷字串是否相等,這個太方便了,如果你曾經用過strcpy()的 話,就知道了。elif是表示else if的意思,如果if不滿足就判斷elif的條件是否滿足,最後是到else中去。
迴圈是個主體
while 和for都是迴圈。不過這裡while就沒什麼說的了,又是很經典的while 1,死迴圈,然後必須在裡面用break來跳出。for和C中的for是不一樣的,for in才是一個完整的語句,指的是從一個能夠逐一取值的序列中(比如list),一個一個的取出值賦給for後面指定的變數中,直到取空,迴圈結束。其實回 想一般用C中的for的經歷,也大體如此。而且你還可以用for i in range(1,100)來指定一個範圍從多少到多少。可以說for in充分體現了python的體貼周到,用起來很直觀,不會繞彎。
接下來就是執行了,大家慢慢除錯吧。下次可能是講異常處理,因為我覺得在深入到使用各種高階的要素之前,先要學會怎麼去處理異常。最常見的異常應該是input(),然後你給出的輸入是一個無法轉換為數字的字串了,那麼我們就要來處理它。
Lesson 8 Python中的錯誤檢測
寫 程式什麼最重要?完成功能最重要。但是程式中難免要有使用者的輸入,對於這些寫的時候未可預知的因素中間可能出現的錯誤,一般稱作異常。對於異常情況的處 理,不同語言有不同的做法,比如檢查函式的返回值之類的,但是那種辦法會把程式碼弄成一團漿糊。Python在這個方面是比較先進的,我們從一個例子來看 看:
print input() 
呵呵,看不同吧。其實input是輸入,print是輸出。也就是把輸入的東西立即輸出。但是這個和
print raw_input() 
有什麼不同呢?
不同的地方是,input()會在raw_input()接收了“字串”的輸入之後進行一些處理,比如你是輸入1 2,然後輸出的就是3了,而raw_input就是原原本本的1 2的輸出了。用程式碼表示就是
eval(raw_input()) 
eval是求表示式的值,任何一個簡單的python表示式,就像1 2這樣的作為字串送入,就能把值從eval處理之後取出來。
現在你實驗一下”sdfsdf”之後,你會發現提示你
  引用: 
Traceback (most recent call last):
  File “<pyshell#4>”, line 1, in -toplevel-
    input()
  File “<string>”, line 0, in -toplevel-
NameError: name ‘sdfsdf’ is not defined 
如果輸入其他稀奇古怪的字串還可能有其他的出錯提示,我們現在要做的就是捕捉這種由使用者輸入引起的錯誤。這麼來作:
try:
    print input()
except:
    print ‘there is an error in your input’ 
這下你無論怎麼輸入都不會有什麼其他的提示了,就是自己設定的print語句作為提示。現在把try except的組合去掉,回到print input()你再嘗試一下:
1/0
這個顯然是一個錯誤,被零除的錯誤。那麼專門來捕捉一下這個錯誤:
try:
    print input()
except ZeroDivisionError:
    print ‘can not be divided by zero’ 
這下你能夠捕捉到被零除的錯誤了。然後你再嘗試其他的輸入,可能錯誤就沒有被捕捉了。所以再補上:
try:
    print input()
except ZeroDivisionError:
    print ‘can not be divided by zero’
except:
    print ‘there is an error in your input’ 
注意,捕捉所有錯誤的except必須放在所有的except的最後一位。明白了?OK
還有更多的能夠捕捉的錯誤,自己查手冊吧(暫時看不了手冊沒關係,慢慢來嘛)。以後還能夠自己raise(引發)異常呢。不過那都是比較高階的應用了,對於出錯處理從一開始就有這個印象,並牢記在心中對於以後寫大一些的軟體很有好處。

您可能感興趣的文章:

Python內建資料結構與操作符的練習題集錦Python執行的17個時新手常見錯誤小結新手該如何學python怎麼學好python?Python新手實現2048小遊戲python新手經常遇到的17個錯誤分析一篇文章入門Python生態系統(Python新手入門指導)Python 功能和特點(新手必學)新手如何快速入門Python(菜鳥必看篇)深入理解 Python 中的多執行緒 新手必看分享給Python新手們的幾道簡單練習題