




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Python,第一章 進入python3.5的精彩世界, ,前言,Python 簡介,Python 安裝,2,本節內容,進入Python編程世界,Python的官網網站: Unix衍生系統可能已經安裝了Python,在命令行對話框中鍵入“python”即可顯示版本信息。 Windows下安裝Python和安裝其他軟件一樣,很easy!,編碼方面:Python3.x默認utf-8。 語法方面有改動,數據類型方面有調整。 面向對象、異常處理和模塊等方面也有改動。 本教學使用Python3.5。,Python 下載與安裝,Python2.x vs Python 3.x,Python安裝,python
2、官網有幾個下載文件,有什么區別?,Python 3.6.0a1 - 2016-05-17Download Windows x86 web-based installerDownload Windows x86 executable installerDownload Windows x86 embeddable zip Windows x86-64 web-based installerDownload Windows x86-64 executable installerDownload Windows x86-64 embeddable zip file x86是32位,x86-64是64
3、位。 可以通過下面3種途徑獲取python: web-based installer 是需要通過聯網完成安裝的executable installer 是可執行文件(*.exe)方式安裝embeddable zip file 嵌入式版本,可以集成到其它應用中,安裝好python后,在開始菜單欄中會自動添加一個名為python3.5的文件夾,點擊該文件夾會有如圖下圖所示的一些子目錄。 IDLE是Python集成開發環境,也稱交互模式。 Python3.5是Python的命令控制臺,里面只能執行Python命令。 第三個是幫助文檔,點擊后會彈出幫助文檔。 最后一個是Python的模塊文檔。本書若無
4、特別指出,示例都是在IDLE中執行的。,進入Python編程世界,打開交互模式,如下圖所示: 若看到,則表示是在Python交互式環境下,在Python交互式環境下,只能輸入Python代碼并立刻執行。,在交互式環境下輸入print (Hello,world!),按回車,可以看到輸出了Hello,world!。如下圖,紅色箭頭指向為輸入部分,紅色框為輸出。 此處print后面帶了括號,表示print是一個函數,單引號里面的叫字符串。如果要讓Python打印出指定的文字,可以用print()函數,然后把希望打印的文字用單引號或者雙引號括起來,但不能混用單引號和雙引號。,我們該怎么去刻意犯呢? 我
5、們以前面的“Hello,world!”為示例,如果將print (Hello,world!)修改為print (Hello,world!),去掉后面的單引號,在交互模式下測試一下。 輸入語句: print (Hello,world!) 可以看到屏幕打印結果如下圖所示,這里打印意為在屏幕上輸出文本,并非通過打印機打印出來: 通過這個錯誤提示,就能很快就知道問題的原因。,溫故知新,學以致用,(1)回顧一下Python的發展歷程,起源和應用場景。 (2)在本地安裝Python最新版本,安裝好后卸載,卸載后再安裝,盡量關注一下各個步驟的細節。 (3)嘗試在不同操作系統上安裝Python。 (4)在“H
6、ell world!”示例中,嘗試將print函數拼寫錯誤,查看輸出結果。 (5)不要用電腦測試,自己想想print (1+2)的輸出結果。,Windows下運行Python程序,HelloWorld.py # -*- coding: cp936 -*- 支持漢字注釋 print Hello, world! # 我的第一個Python程序 raw_input() # 使cmd框不立刻退出 三種運行方式 打開源文件,用Python Shell運行。 雙擊源文件,用CMD運行。 在Python Shell中直接寫程序運行。,進入Python編程世界,其他的Python集成開發環境,1)開源 Pyt
7、hon Win+Win32 Extensions IPython(增強的交互式Python) IDE Studio(IDLE以及更多) Eclipse 2)商業 WingIDE(WinWare公司) Komodo(ActiveState公司),進入Python編程世界,Python學習資源,簡明Python教程,啄木鳥社區,CSDN下載,其他,htp:/,Python快速入門,輸入輸出,注釋,本 章 主 題,操作符,賦值,數據類型,縮進,循環語句,條件語句,文件操作,錯誤處理,函數,類,模塊,print輸出,注釋, print (“Hello world!“) # Python Shell提示
8、符 Hello world! abs(-4) # abs(): 內建函數,取絕對值 4 myString = Hello world! # 單引號、雙引號成對使用 print myString Hello world! myString Hello world! # 顯示結果帶引號 _ # 下劃線含義:表示最后一個表達式 Hello world!,Python快速入門,print輸出,注釋, print (“%s is %d years old.” % (“李書豪”, 26)) 李書豪 is 26 years old. # %s 字符串;%d 整型;%f 浮點型 # Python非常靈活,即使
9、將數字傳遞給%s,也不會引發嚴重后果 logFile = open(myLog, a) # 打開文件 print logFile, Python讓程序員的工作更輕松。 # 重定向輸出符號 log() # 關閉文件,Python快速入門,raw_input()輸入, userName = raw_input(輸入登錄名:) 輸入登錄名:李書豪 print 你的登錄名為, userName 你的登錄名為 李書豪 # 自動加空格 # raw_input():從用戶那里得到數據輸入; myNumber = raw_input(輸入一個數字:) 輸入一個數字:1024 print 你輸入數字的2倍是:%
10、d % (int(myNumber) * 2) 你輸入數字的2倍是:2048 # int() 字符串轉換為整型,Python快速入門,操作符,標準算術操作符:+ - * / /取整 %取余 *乘方 print -2 * 3 + 2010 / 4 * 2 print (-2 * 3) + (2010 / (4 * 2) # 括號增加可讀性 標準比較操作符: = = != 3.14 3.14 != 3.14 # 漸漸被淘汰 False 邏輯操作符:and or not (2 4) and (2 = 4) or (not (3 4 5) False # 3 4 5 等價于 3 4 and 4 5,簡
11、潔!,Python快速入門,賦值,數據類型,Python變量名規則與其他編程語言一樣,并且大小寫敏感 pptname = “Introction to Python” pptName = “Python入門” height = 1.71 age = 26 n = height n *= 100 # 等價于 n = n * 100 五種基本數字類型:int long bool float complex復數 0102 -128 0 x80 -0XA9; 12345678902010L -0 xABCDEF123456L; True False; 3.1415926 -1.2E-14 10. 32
12、.1e10; 6.54+3.21j -1.23+45.6J 0+1j 99-88j -0.142857+0j,Python快速入門,數據類型字符串,字符串:索引操作符 :切片操作符 +連接運算 *重復運算 strPython = Python strIsCool = is cool! strPython0 # 第一個字符 strPython2:5: tho P strIsCool-1 # 最后一個字符 strIsCool:2: is ! strPython + + strIsCool # n:回車 Python is cool! - * 30 -,Python快速入門,數據類型列表、元組、字典
13、,列表(list)和元組(tuple):可以看成普通的“數組” numberList = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 mixList = Li Shuhao, 26, 1.71 mixTuple = (Python, is, cool) # 元組可以看成只讀的列表,如:mixTuple0 = C+, 出錯! print mixTuple0, mixTuple1, mixTuple-1 Python is cool 字典(dictionary):由鍵值對(Key-Value)構成 myDict = name:LiShuhao, height:171, age:26
14、for mKey in myDict: print mKey, myDictmKey # 縮進: Tab,空格,Python快速入門,縮進,while循環語句,if條件語句,縮進:簡潔、可讀性好 循環語句:while while expression: # expression 條件表達式 while_suite # 根據條件循環執行的語句 條件語句:if elif else if expression1: # 藍色部分可以單獨用 if_suite elif expression2: # 綠色部分可以省略,也可以重復多個 elif_suite else expression3: # 用elif
15、,最后必須有else else_suite # Python沒有switch-case,Python快速入門,for循環語句,循環語句:for range()內建函數 Python中的for循環與傳統的for循環不太一樣,不是計數循環,更像迭代循環,如: for nItem in 123, email, homework: print nItem for nItem in range(5): # range(5)等價于1, 2, 3, 4, 5 print nItem, # print不自動換行方法:加逗號 for nChar in myString: # myString = abc pri
16、nt nChar for i in range(len(myString): # len() 字符串長度 print (%d) % (i), myStringi # 輸出:(0) a ,Python快速入門,for循環語句,循環語句:for enumerate()內建函數 # enumerate()突破約束:索引、元素雙循環 for i, nChar in enumerate(myString): print (%d) % (i), myStringi 列表解析:for語句 squared = item * 2 for item in range(5) # 0 1 4 9 16 complex
17、Tuple = (item * 2 for item in range(10) if item % 2) # 1 9 25 49 81,Python快速入門,文件操作,文件操作:open() file() readlines() close() handle = open(, access_mode = r) # 默認 r # r:讀取;w:寫入;a:添加;+:讀寫;b:二進制訪問。 = raw_input(請輸入文件名:) hFile = , r) for nLine in hFile: print nLine, h() # close()是文件對象hfile的一個屬性 # 屬性可以是數據值
18、,也可以是函數和方法,類、模塊、文件和復數等都有屬性。 # 本示例適用于較小的文件,否則占用內存太大。,Python快速入門,錯誤處理,錯誤和異常:try - except # Python編譯時會檢查語法錯誤,運行時檢測其他錯誤。 # 當遇到錯誤,Python解釋器就引發異常,并顯示詳細信息。 try: # 你打算管理的代碼段 except IOError, e: print 出錯原因, e # 程序員也可以用raise有意引發一個異常,Python快速入門,函數,函數: def function_name(arguments): # 參數可為空,可有默認值 “optional docume
19、ntation string” # 可選的函數說明語句 function_suite # 函數代碼段 return fun_obj # 可以沒有,自動返回None對象 def addMeToMe(me): # 函數示例:神奇的 + 操作 return (me + me) # 小括號不能省略 print addMeToMe(3.14) # 6.28 print addMeToMe(100) # 200 print addMeToMe(Python) # PythonPython print addMeToMe(-1, abc) # -1, abc, -1, abc,Python快速入門,類,模塊
20、,類:相關數據及邏輯的容器,構建創建真實對象的藍圖。 class className(baseClasses): “optional documentation string” # 說明性文字(可選) static_member_declarations # 靜態成員定義 method_declarations # 方法定義 模塊:一種組織形式,將有聯系的代碼組織到獨立文件中 # 模塊可以包含可執行代碼、函數和類。 import sys # 導入方法,sys為模塊名稱 sys.stdout.write(Hello world!) sys.platform # win32 sys.version
21、 # 2.6.5 (r265:79096,Python快速入門,第二章 開啟Python之旅,本章主要介紹一些Python的基本知識和一些基本概念的介紹,為后續章節學習相關內容做鋪墊。,2.1 “旅行”第一步認識程序,旅行前,我們要先熟悉地名,知道要去哪里,將會經過哪里。學習編程也一樣,在學習之前要先了解程序、調試、語法錯誤、運行錯誤、語義錯誤等。,2.1.1 程序,程序是用語言寫成的。語言分高級語言和低級語言。 高級語言翻譯成機器代碼有兩種方法:解釋和編譯。,編譯型語言則是將源代碼完整的編譯成目標代碼后才能執行。以后在執行時就不需要編譯了。下圖顯示了一個編譯器的結構。這個有點類似我們乘坐的直
22、達車,所有要乘車的人從起點上車,中途不搭載其他乘客。,2.2 數 據 類 型,Python3 中有六個標準的數據類型:Number(數字)、String(字符串)、List(列表)、Tuple(元組)、Sets(集合)、Dictionary(字典)。本節將講解Number(數字)數據類型,其它五種數據類型由后續相關章節進行介紹。 Python3支持三種不同的數值類型: 整型(int)、浮點型(float)、復數(complex)。,2.2.1 整型,整型(int),通常被稱為是整型或整數,是正或負整數,不帶小數點。 例如交互模式下輸入如下: 51 51 這里使用的就是整型。 整型加法如下: 2
23、5+25 50,整型減法: 51-50 1 整型乘法: 51*2 102 整型除法: 153/51 3.0 155/51 3.03927 此處出現除不盡的情況了。,在整數除法中,除法(/)計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數,如果只想得到整數的結果,丟棄可能的分數部分,可以使用地板除(/),整數的地板除(/)永遠是整數,即使除不盡。 改成如下寫法: 153/51 3 155/51 3,地板除(/)只取結果的整數部分,Python還提供一個余數運算,可以得到兩個整數相除的余數。如下: 153%51 0 155%51 2,2.2.2 浮點型,浮點型(float),浮點型由整數部
24、分與小數部分組成,浮點型也可以使用科學計數法表示。 先看示例: 3.3*102 336.59999999999997 按預計應該一位小數,但輸出結果卻有這么多位小數。是因為整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的,而浮點數運算則可能會有四舍五入的誤差。,如下輸入: 3.3*102+15.5 352.997 浮點除法: 153/51.0 3.0 155/51.0 3.03927 浮點地板除: 155/51.0 3.0 155%51.0 2.0,2.2.3 復數,復數( (complex),復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示,
25、 復數的實部a和虛部b都是浮點型。 Python支持復數,Python的復數我們當前階段使用或接觸的比較少,此處就不做具體的講解,讀者有一個概念即可,有興趣可以自行查閱相關資料。,2.2.4 數據類型轉換,有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,你只需要將數據類型作為函數名即可。 關于數據的類型轉換,有如下幾個函數可以使用: int(x) 將x轉換為一個整數。 float(x) 將x轉換到一個浮點數。 complex(x) 將x轉換到一個復數,實數部分為 x,虛數部分為 0。 complex(x, y) 將 x 和 y 轉換到一個復數,實數部分為 x,虛數部分為 y。x 和
26、y 是數字表達式。,int(x)示例: int(352.1) 352 float(x)示例: float(352.1) 352.1 float(int(352.1) 352.0 這里先把352.1取整得到整數352,再用float將352轉換成浮點數352.0,這樣就得到我們需要的結果。,2.2.5 常量,所謂常量就是不能變的變量,比如常用的數學常數就是一個常量。在Python中,通常用全部大寫的變量名表示常量。 Python中有兩個比較常見的常量,分別為:PI和E。 PI:數學常量 pi(圓周率,一般以來表示)。 E:數學常量 e,e即自然常數(自然常數)。 這兩個常量將會在后續章節中被使用
27、,具體的用法在使用中進行體現。,2.3 變量和關鍵字,編程語言最強大的功能之一是操縱變量的能力。變量(variable)是一個需要熟知的概念。如果你覺得數學是讓你抓狂的話,別擔心,Python中的變量很好理解。變量基本上就是代表某值的名字。,2.3.1 變量,在Python中,變量的使用環境非常寬松。沒有 在Python中,等號( = )是賦值語句,可以把任意數據類型賦值給變量。 如下為定義一個名為xiaohong的變量: xiaohong=XiaoHong 此操作解釋:xiaohong是我們創建的變量,=是賦值語句,XiaoHong是變量值,需要用引號標記。整句話的意思為:創建變量xiaoh
28、ong并賦值為XiaoHong。(注意:字符串必須以引號標記開始,并以引號標記結束。),打印變量結果: print(xiaohong) XiaoHong 在使用變量前,需要對其賦值,沒有值的變量是沒有意義的,編譯器也不會編譯通過。例如我定義一個變量為abc,不賦任何值,輸入及結果如下: abc Traceback (most recent call last): File , line 1, in abc NameError: name abc is not defined,同一個變量可以反復賦值,而且可以是不同類型的變量,輸入如下: a = 123 123 a=ABC print(a) AB
29、C 這種變量本身類型不固定的語言稱之為動態語言,與之對應的是靜態語言。靜態語言在定義變量時必須指定變量類型,如果賦值的時候類型不匹配,就會報錯。和靜態語言相比,動態語言更靈活,就是這個原因。,當不能確定變量或數據的類型時,可以借助解釋器內置的函數type進行確認。在交互模式下可以如下輸入: type(Hello,world!) type(100) type(3.0) a=test type type(a) ,請不要把賦值語句的等號等同于數學的等號。比如下面的代碼: a = 100 a = a + 200 在編程語言中,賦值語句先計算右側的表達式a + 200,得到結果300,再賦給變量a。由于
30、a之前的值是100,重新賦值后,a的值變成300。我們通過交互模式驗證,輸入如下: a=100 a=a+200 print(a) 300,理解變量在計算機內存中的表示也非常重要。當我們寫: a=ABC 時,Python解釋器干了兩件事情: (1)在內存中創建了一個ABC的字符串; (2)在內存中創建了一個名為a的變量,并把它指向ABC。 也可以把一個變量a賦值給另一個變量b,這個操作實際上是把變量b指向變量a所指向的數據,例如下面的代碼: a=ABC b=a a=XYZ print(b) 最后一行打印出變量b的內容到底是ABC呢還是XYZ?如果從數學意義上理解,就會錯誤地得出b和a相同,也應該
31、是XYZ,但實際上b的值是ABC,讓我們一行一行地執行代碼,就可以看到到底發生了什么事。,執行a = ABC,解釋器創建了字符串ABC和變量a,并把a指向ABC,如下圖所示: 執行b = a,解釋器創建了變量b,并把b指向a指向的字符串ABC,如圖2-4所示: 執行a = XYZ,解釋器創建了字符串XYZ,并把a的指向改為XYZ,但b并沒有更改,如圖2-5所示: 所以,最后打印變量b的結果自然是ABC了。,2.3.2 變量名稱,變量名可以是由數字或字符組成的任意長度的字符串,但必須以字母開頭。使用大寫字母是合法的,但變量名使用小寫字母開頭是個好主意。python是區分大小寫的。舉個例子來說,N
32、ame和name是兩個不同的變量名。交互模式中輸入如下: name=study python is happy Name=I aggree with you print(name) study python is happy print(Name) I aggree with you,下劃線“_”可以出現在變量名中。它經常用于連接多個詞組。比如happy_study, do_it_with_more_practice。交互模式輸入如下: happy_study=stay hungry stay foolish print(happy_study) stay hungry stay foolis
33、h 如果給變量取非法的名稱,解釋器顯示語法錯誤。請看下面的示例: 2wrongtest=just for test SyntaxError: invalid syntax 該示例提示語法錯誤,錯誤信息為無效的語法,原因是它不是以字母開頭。 xiaomingme=surprised SyntaxError: cant assign to operator 該示例提示語法錯誤,錯誤信息為不能做指定操作,原因為它包含了一個非法字符。, from=from SyntaxError: invalid syntax from是Python的一個關鍵字。解釋器通過關鍵字來識別程序的結構,并且它們不能用來作為
34、變量名稱。 Python3中共有33個關鍵字: False None True and as assert break class continue def del elif else except finally for from global if import in nonlocal lambda is not or pass raise return try while with yield,2.4 語 句,語句是Python解釋器可以運行的一個代碼單元,也可以理解為可以執行的命令。我們目前已經使用過了兩種語句:print打印語句和賦值語句。 賦值語句有兩個作用:一是建立新的變量,二是
35、將值賦予變量。任何變量在使用時,都必須賦值。否則,被視為不存在的變量。 advice=boss,we want have a lunch type(advice) 這個語句中的advice的類型是字符串(str)類型的。,一般的情況下,我們用狀態圖表示變量的狀態。左邊是變量的名稱,右邊是變量值,中間的箭頭指向值。狀態圖顯示了賦值語句的最終操作結果。 advice=boss,we want have a lunch money=99999999 spend=1.11111111 如上面幾條語句對應的狀態圖如下圖所示:,2.5 表 達 式,表達式是值、變量和操作符的組合。單獨一個值也被看作一個表達
36、式。單獨的變量也可以看作一個表達式。 表達式和語句一般不容易區分,很多人會將兩者混在一起。那么語句和表達式之間有什么區別? 表達式是某事,而語句是做某事,說的通俗點就是告訴計算機做什么。比如3*3是9,而print(3*3)打印出來是9。那么區別在哪里? 比如我們在交互模式下輸入如下: 3*3 9 print(3*3) 9,在交互模式下,其結果都是一樣的。但這只是因為解釋器總是把所有表達式的值打印出來而已(其內部都使用了相同的函數對結果進行呈現,后面會有細致的介紹)。一般情況下,Python不會這么做,畢竟3*3這樣的表達式并不能做什么有趣的事情,而編寫print(3*3)會有一個顯示的。 語
37、句和表達式之間的區別在賦值時會表現的更加明顯一些。因為語句不是表達式,所以沒有值可供交互式解釋器打印出來。比如在交互模式下輸入如下: a=100 10*10 100打印出9的結果。 賦值語句輸入完成后,下面立刻出現了新的提示輸入符。而表達式輸入完成后,下面立刻得到了結果。不過對于賦值語句,有些東西已經變了,變量a現在綁定了一個值100。,這個是語句特性的一般定義:它們改變了事物。比如,賦值語句改變了變量,print語句改變了屏幕顯示的內容。 賦值語句可能是任何計算機程序設計語言中最重要的語句類型,盡管現在還難以說清它們的重要性。,2.6 運算符和操作對象,運算符和操作對象是計算機中比較常見的,
38、任何的計算,都涉及到運算符和操作對象。本節將介紹Python中的運算符和操作對象。,2.6.1 什么是運算符和操作對象,運算符我知道,我們前面學習的加(+)、減(-)、乘(*)、除(/)、地板除(/)、取余(%)等都是運算符,是一些特殊符號的集合。操作對象就是由運算符連接起來的對象。 Python支持以下8種運算符: (1)算術運算符。(2)比較(關系)運算符。 (3)賦值運算符。(4)邏輯運算符。 (5)位運算符。 (6)成員運算符。 (7)身份運算符。(8)運算符優先級。,2.6.2 算術運算符,以下變量a為10,變量b為5:,交互模式下輸入: 2*32/1024/1024/1024 4.
39、0 2*64/1024/1024/10240 2*32是2的32次方,這個就是32位操作系統最大支持的內存的字節數,除以第一個1024是轉換為KB,1KB=1024B,除以第二個1024是轉換為MB,1MB=1024KB,除以第三個1024是轉換為GB,1GB=1024MB。這個結果也就意味著32位的操作系統最大只能支持4GB的內存。現在大家都趨向于選擇64位的了,64位的系統能支持多大內存,自己可以算一下。,2.6.3 比較運算符,以下變量a為10,變量b為20:,在一些地方,會看到用1代表True,0代表False,這種是正確也是合理的表示方式,這個大家更多會理解
40、為開和關的意思,就像我們物理中所學習的電流的打開和關閉一樣。后面會有更多的地方用到用1和0代表True、False的示例。 另外,在Python2中,有時可能會看到這個符號,其和!=一樣,也表示不等于,在Python3中已去除,若以后有看到運算符,那應當使用的是Python2。,2.6.4 賦值運算符,以下變量a為10,變量b為20:,2.6.5 位運算符,按位運算符是把數字看作二進制來進行計算的。Python中的按位運算法則如下。以下變量a為60,變量b為13:,2.6.6 邏輯運算符,Python語言支持邏輯運算符,以下變量a為10,變量b為20:,a=10 b=3 list=1,2,3,
41、4 print(a in list) print (b in list),2.6.7 成員運算符,Python還支持成員運算符,測試實例中包含了一系列的成員,包括字符串,列表或元組。,a=10 b=3 print(a is b) print(a is not b),2.6.8 身份運算符,身份運算符用于比較兩個對象的存儲單元,2.6.9 運算符優先級,以下表格列出了從最高到最低優先級的所有運算符:,2.7 字符串操作,字符串是 Python 中最常用的數據類型。我們可以使用引號(或)來創建字符串。 字符串可以使用操作符+,但其功能和數學中的不一樣,它會進行拼接(concatenation)操作
42、,即將前后兩個字符首尾連接起來。 如: string1=hello string2=world print(string1+string2) helloworld,如果想讓字符串之間有空格,可以建一個空字符變量,插在相應的字符串之間讓它們隔開,或是在字符串中加入相應的空格。交互模式下輸入如下: string1=hello string2=world space= print(string1+space+string2) hello world 或者 string1=hello string2= world print(string1+string2) hello world,計算機是美國人發明
43、的,因此,最早只有127個字母被編碼到計算機里,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。 在最新的Python 3版本中,字符串是以UTF-8編碼的,也就是說,Python3的字符串支持多語言。 Python2中默認的編碼格式是ASCII格式,在沒修改編碼格式時無法正確打印漢字,在讀取中文時會報錯。Python2使用中文的語法是在字符串前面加上前綴 u。,2.8 注 釋,當程序變的更大更復雜時,讀起來也更困難。程序的各部分之間緊密銜接,想依靠部分的代碼來了解整個程序要做的,是困難的。在現實中,經常會遇到一段代碼
44、,很難弄清楚它在做什么、為什么那么做。 因此,在程序中加入自然語言的筆記來解釋程序在做什么,是個不錯的主意。這種筆記稱為注釋(comments),注釋必須以符號“#”開始。 注釋可以單獨占一行,也可以放在語句行的末尾。交互模式下輸入如下: # 打印1+1的結果 print(1+1) 2 print(1+1) # 打印1+1的結果 2,比如如下的代碼中注釋與代碼重復,毫無用處: r=10 #將10賦值給r 而下面這段代碼注釋則包含了代碼中隱藏的信息,如果不加注釋,很難讓人看懂這個是什么意思(雖然在實際中可能可以根據上下文判定,但需要浪費不必要的思考時間)。 r=10 #半徑,單位是米 選擇好的變
45、量名,可以減少注釋的需要,但長名字也會讓復雜表達式更難閱讀,所以這兩者之間需要衡量舍取。,2.9 調 試,錯誤是好的,錯誤能幫助我們長進。 (1)還記得數字類型轉換嗎,若用int()轉換一個字符,會得到怎樣的結果,嘗試一下,交互模式下輸入如下: int(hello) Traceback (most recent call last): File , line 1, in int(hello) ValueError: invalid literal for int() with base 10: hello 這個是什么意思呢,開動你的大腦,思考一下。,(2)在變量和關鍵字中,若變量被命名為關鍵字
46、會怎樣,輸入如下: class=你好 SyntaxError: invalid syntax (3)在算術運算符中,若被除數為0,結果會怎樣,輸入如下: 9/0 Traceback (most recent call last): File , line 1, in 9/0 ZeroDivisionError: division by zero 跟我們學習過的數學中的一樣,被除數不能為0。,2.10 問題解答,(1)關鍵字那么多,我都記住嗎? 這個可以不用去刻意記憶,隨著你逐步的學習,會碰到一些常用關鍵字,碰多了自然就熟悉了。對于一些不常用的,碰到了再回頭看是否是屬于關鍵字。總之,關鍵字可以在
47、學習和使用中慢慢記憶。 (2)這么多運算符,都需要熟練使用嗎? 能熟練使用當然最好了,若不能都熟練使用,也要有所了解,知道怎么使用,在實際解決問題時能知道應該使用什么運算符,該怎么用。當然,也可以碰到具體問題時再詳細研究,這也是一個不錯的辦法。 (3)字符串的操作就只有這么一些嗎? 字符串還有很多的操作,這里只是一些簡單的入門操作,具體在后面的章節會有詳細介紹。,2.11 溫故知新,學以致用,1. 回顧數據類型相關概念,整型、浮點型、數據類型轉換。 2. 回顧變量和關鍵字相關概念,并嘗試記住這些關鍵字。 3. 回顧運算符和操作對象,并通過不斷調試熟悉各種運算符。 4. 回顧字符串的操作及注釋,
48、了解編碼方式,嘗試寫注釋。 5. 小萌和小智約定,明天小智送一顆糖給小萌,并從后天起,小智每天送比前一天多一倍的糖給小萌,到第16天(包含這天),小萌一共可以收到多少顆糖? 6. 小萌,運算符都學完了,我來考考你,看看你學的怎樣,用4個2以及各種運算符,你能得到最大的數是多少? 7. 結合本章所學,并查閱相關資料,看看下面的代碼的輸出結果是怎樣的,并嘗試解釋其結果。 habit=Python是一門很有用的編程語言n我想學好它 print(habit) #你認為的結果是 len(habit) #你認為的結果是,練習題,1.#輸入a,b,c,d4個整數,計算a+b-c*d的結果 2.#計算一個12
49、.5m*16.7m的矩形房間的面積和周長 3.#怎么得到9/2的小數結果 4.#python計算中7*7*7*7.可以有多少種寫法,1.#輸入a,b,c,d4個整數,計算a+b-c*d的結果 a=input(please input a nimber:) b=input(please input a number:) c=input(please input a number:) d=input(please input a number:) print (a+b-c*d) ?注意類型轉換 int() 輸出結果: please input a nimber:3 please input a n
50、umber:3 please input a number:3 please input a number:3 -3,2.#計算一個12.5m*16.7m的矩形房間的面積和周長 a=12.5 b=16.7 s=a*b c=a+a+b+b print 面積是%f,周長是%f%(s,c) 輸出結果是 面積是208.750000,周長是58.400000 3.#怎么得到9/2的小數結果 float(9/2) 4.0,第一種: 7*7*7*7 2401 第二種: pow(7,4) 2401 第三種: 7*4 24401 第四種: eval(%s*%s*%s*%s%(7,7,7,7) 2401 eval
51、參數是一個字符串, 可以把這個字符串當成表達式來求值,第三章 列表和元組,本章將引入一個新的概念:數據結構。數據結構是通過某種方式(例如對元素進行編號)組織在一起的數據元素的集合,這些元素可以是數字或者字符。在Python中,最基本的數據結構是序列(sequence)。Python包含6種內建的序列,即列表、元組、字符串、Unicode字符串、buffer對象和xrange對象。本章重點討論最常用的兩種:列表和元組。,3.1 通用序列操作,在講解列表和元組之前,本節先介紹Python中序列的通用操作,這些操作在列表和元組中都會用到。 Python中所有序列都可以進行某些特定的操作,這些操作包括
52、:索引(indexing)、分片(sliceing)、序列相加(adding)、乘法(multiplying)、成員資格、長度、最小值和最大值。本節首先講解對所有序列(包括元組和列表)都通用的操作。,3.1.1 索引,序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字,代表它在序列中的位置,或索引,第一個索引是0,第二個索引是1,依此類推。 序列中所有的元素都是有編號的從0開始遞增。可以通過編號分別對序列的元素進行訪問。,通過編號來取元素: greeting=Hello #定義變量greeting,并賦值Hello greeting0 #根據編號取元素,使用格式為在中括號中輸
53、入所取元素編號值 H greeting1 e greeting2 l 序列中的元素是從0開始從左向右依自然順序編號的,對元素的訪問可以通過編號訪問。獲取元素的方式為變量后面跟上中括號,中括號中輸入所取元素的編號值,這個格式需要記住。 這里的所指的編號就是索引,可以通過索引獲取元素。所有序列都可以通過這種方式進行索引。,交互模式下輸入如下: greeting-1 o greeting-2 l greeting-3 l greeting-4 e Python的序列也可以從右邊開始索引,最右邊的一個元素的索引為-1,向左開始遞減。 在Python中,從左向右索引稱為正數索引,從右向左稱為負數索引。使
54、用負數索引時,Python會從最后1個元素開始計數。最后一個元素的位置編號是-1。 最后一個元素的編號不是-0,這個跟數學中的概念一樣的,-0=0,-0和0都是指向第一個元素。,3.1.2 分片,索引用來對單個元素進行訪問,使用分片可以對一定范圍內的元素進行訪問,分片通過冒號相隔的兩個索引來實現。在交互模式輸入如下: number=1,2,3,4,5,6,7,8,9,10 number1:3 #取索引為第一和第二的元素 2, 3 number-3:-1 #負數表明是從右開始計數,取得倒數第三和倒數第二的元素 8, 9 分片操作既支持正數索引,也支持負數索引,并且分片操作對于提取序列的一部分是很
55、方便的。,分片操作的實現需要提供兩個索引作為邊界,第一個索引的元素是包含在分片內的,第二個則不包含在分片內。 number=1,2,3,4,5,6,7,8,9,10 number-3,-1 8, 9 試試使用索引0作為最后一個元素的下一個元素,輸入如下: number-3:0 -3代表的是倒數第三個元素,0則代表的是第一個元素,倒數第3個比第一個晚出現,既比第一個排在更后面,所以得到的結果是空序列。, number0: #從第一個元素開始輸出,輸出全部結果 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 number:0 #最后一個元素為第一個,輸出為空 number:3 #取得前
56、3個元素 1, 2, 3 若需要輸出整個序列,可以將兩個索引都設置為空。輸入如下: number: #取得整個數組 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,進行分片的時候,分片的開始和結束點都需要指定(不管是直接還是間接),用這種方式取連續的元素是沒有問題的,但是若要取序列中不連續的元素就會比較麻煩了或是不能操作。比如要取序列number中的所有奇數,以一個序列展示出來,用前面的方法就不能實現了。 對于這種情況,Python為我們提供了另外一個參數步長(step length),該參數通常是隱式設置的。在普通的分片中,步長是1分片操作就是按照這個步長逐個遍歷序列的元素,遍歷
57、后返回開始和結束點之間的所有元素,也可以理解為默認步長是1,既沒有設置步長時,步長隱式設置值為1。,輸入如下: number0:10:1 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 分片包含了另外一個數字。這種方式就是步長的顯式設置。這個看起來和隱式設置步長沒有什么區別,得到結果和之前也是一樣的。但是若將步長設置為比1大的數,那結果會怎樣呢?輸入如下: number0:10:2 1, 3, 5, 7, 9 由上面輸出結果我們看到,對于number序列,設置步長為2時,得到的結果就是我們前面想要的奇數序列。 步長設置為大于1的數,那會得到一個跳過某些元素的序列。例如我們上面設置的
58、步長為2,得到的序列是從開始到結束每隔1個的元素序列。,比如還可以如下進行使用: number0:10:3 1, 4, 7, 10 number2:6:3 3, 6 number2:5:3 3 number1:5:3 2, 5 對于一個正數步長,Python會從序列的頭部開始向右提取元素,直到最后一個元素;而對于負數步長,則是從序列的尾部開始向左提取元素,直到第一個元素。正數步長,必須讓開始點小于結束點;而負數步長,則必須讓開始點大于結束點。,3.1.3 序列相加,通過使用加號可以進行序列的連接操作,輸入如下: 1,2,3+4,5,6 1, 2, 3, 4, 5, 6 a=1,2 b=5,6
59、a+b 1, 2, 5, 6 s=hello, w=world s+w hello,world,數字序列可以和數字序列通過加號連接,連接后的結果還是數字序列,字符串序列也可以通過加號連接,連接后的結果還是字符串序列。那數字序列是否可以和字符序列相加呢?結果是怎樣的,是數字序列還是字符串序列?,輸入如下: 1,2+hello Traceback (most recent call last): File , line 1, in 1,2+hello TypeError: can only concatenate list (not str) to list type(1,2)# 取得1,2的類型為list type(hello)# 取得hello的類型為字符串 數字序列和字符串序列是不能通過加號連接的。 只有類型相同的序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 承包地轉包合同協議書
- 燒烤店合同解除協議書
- 考科目二協議書
- 退出入股協議書
- 費用資助協議書
- 藥品上市協議書
- 土地置換及建設協議書
- 茶葉代賣協議書
- 紙廠銷毀協議書
- 未施工合同解除協議書
- 學校食堂“三同三公開”制度實施方案
- 危化品駕駛員押運員安全培訓
- 2025年福建福州地鐵集團有限公司招聘筆試參考題庫含答案解析
- 肝硬化行TIPS術后整體護理查房
- 人工智能在新聞媒體領域的應用
- 【MOOC】儒家倫理-南京大學 中國大學慕課MOOC答案
- 銀保部三年規劃
- 2024治安調解協議書樣式
- 零工市場(驛站)運營管理 投標方案(技術方案)
- 小學二年級數學找規律練習題及答案
- 智研咨詢重磅發布:2024年中國航運行業供需態勢、市場現狀及發展前景預測報告
評論
0/150
提交評論