python-基礎學習筆記_第1頁
已閱讀1頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  Python 基礎學習筆記</p><p>  基于《Python語言程序設計基礎(第2版)》</p><p>  第一部分 初識Python語言</p><p>  第1章 程序設計基本方法</p><p>  1.1 計算機的概念</p><p>  計算機是根據(jù)指令操作數(shù)據(jù)的設備,具備功能性

2、和可編程性兩個基本特性。</p><p>  計算機技術發(fā)展階段:</p><p>  第一階段:1946-1981年,“計算機系統(tǒng)結構階段”。</p><p>  第二階段:1982-2007年,“計算機網(wǎng)絡和視窗階段”。</p><p>  第三階段:2008年至今,“復雜信息系統(tǒng)階段”。</p><p>  第四

3、階段:月20年后某個時期開始,“人工智能階段”。</p><p><b>  1.2程序設計語言</b></p><p>  1.2.1程序設計語言概述</p><p>  機器語言:直接使用二進制代碼表達指令,可被計算機硬件直接識別和執(zhí)行。不同計算機結構的機器指令不同。</p><p>  匯編語言:使用助記符對應機器

4、語言中的指令,可直接操作計算機硬件。不同計算機結構的匯編指令不同。</p><p>  機器語言和匯編語言都直接操作計算機硬件并基于此設計,統(tǒng)稱“低級語言”。</p><p>  高級語言:用更接近自然語言的方式描述計算問題。代碼只與編程語言有關,與計算機結構無關。</p><p>  1.2.2編譯和解釋</p><p>  高級語言按執(zhí)行

5、方式可分為采用編譯執(zhí)行的靜態(tài)語言和采用解釋執(zhí)行的腳本語言。</p><p>  編譯是將源代碼轉換成目標代碼的過程。</p><p>  解釋是將源代碼逐條轉換成目標代碼同時逐條運行目標代碼的過程。</p><p>  1.2.3計算機編程</p><p>  我學習Python的原因:</p><p>  通過編程實

6、現(xiàn)自動化,提高效率。</p><p>  通過編程了解一個新的廣闊世界。</p><p>  學習一門編程語言(重點在于練習)</p><p><b>  掌握該語言的語法</b></p><p>  結合問題設計程序結構</p><p><b>  掌握解決問題的能力</b>

7、;</p><p>  1.3Python語言概述</p><p>  1.3.1 Python語言的發(fā)展</p><p>  Python語言是一個語法簡潔、跨平臺、可擴展的開源通用腳本語言。</p><p>  Python語言誕生于1990年,創(chuàng)世人為Guido。</p><p>  2000年10月,Pytho

8、n 2.0正式發(fā)布,2010年,Python 2.x系列發(fā)布最后一版(2.7)。</p><p>  2008年12月,Python 3.0正式發(fā)布,解釋器內部采用完全面向對象的方式實現(xiàn),代價是3.x系列版本無法向下兼容2.x系列的既有語法。</p><p>  Python 2.x已經(jīng)是遺產(chǎn),Python 3.x是這個語言的現(xiàn)在和未來。</p><p>  1.3

9、.2編寫Hello程序</p><p>  print("Hello World")</p><p>  1.3.3 Python語言的特點</p><p><b>  語法簡潔</b></p><p><b>  可跨平臺</b></p><p><

10、;b>  應用廣泛</b></p><p><b>  支持中文</b></p><p>  強制可讀:通過強制縮進體現(xiàn)語句間的邏輯關系提高了程序的可讀性</p><p>  模式多樣:語法層面同時支持面向過程和面向對象兩種編程方式</p><p>  粘性擴展:通過接口和函數(shù)集成其他語言編寫的代碼&l

11、t;/p><p><b>  開源理念</b></p><p><b>  庫類豐富</b></p><p>  1.4 Python語言開發(fā)環(huán)境配置</p><p><b>  Python解釋器</b></p><p><b>  IDLE開發(fā)

12、環(huán)境</b></p><p><b>  交互式啟動</b></p><p><b>  文件式啟動</b></p><p>  Python語言集成開發(fā)環(huán)境——PyCharm</p><p>  1.5 程序的基本編寫方法</p><p>  1.5.1 IPO

13、程序編寫方法</p><p>  每個程序都有統(tǒng)一的運算模式:輸入數(shù)據(jù)、處理數(shù)據(jù)和輸出數(shù)據(jù)。這種樸素的運算模式形成了基本的程序編寫方法:IPO(Input,Process,Output)方法。</p><p>  IPO不僅是程序設計的基本方法,也是描述計算問題的方式。</p><p>  1.5.2理解問題的計算部分</p><p>  使

14、用計算機解決問題的6個步驟:</p><p><b>  分析問題</b></p><p><b>  劃分邊界</b></p><p><b>  設計算法</b></p><p><b>  編寫程序</b></p><p>&

15、lt;b>  調試測試</b></p><p><b>  升級維護</b></p><p>  第2章 Python程序解析</p><p>  2.1 Python程序語法元素分析</p><p>  Python程序包括格式框架、注釋、變量、表達式、分支語句、循環(huán)語句、函數(shù)等語法元素。</p

16、><p><b>  程序的格式框架</b></p><p>  Python語言采用嚴格的“縮進”來表明程序的格式框架,縮進表達了所屬關系</p><p>  在代碼編寫中縮進可通過Tab鍵實現(xiàn),也可用多個空格實現(xiàn),建議采用4個空格方式書寫代碼</p><p><b>  注釋</b></p&g

17、t;<p>  注釋是輔助性文字,不被執(zhí)行</p><p><b>  單行注釋:以#開頭</b></p><p><b>  #這是注釋</b></p><p>  多行注釋:以'''(3個單引號)開頭和結尾</p><p><b>  '&

18、#39;'</b></p><p><b>  這是注釋</b></p><p><b>  這也是注釋</b></p><p><b>  這還是注釋</b></p><p><b>  '''</b><

19、/p><p><b>  命名</b></p><p>  命名是為變量關聯(lián)標識符的過程,用于確保程序元素的唯一性</p><p>  標識符由字母、數(shù)字、下劃線(和漢字)等字符及其組合構成</p><p>  標識符的首字符不能是數(shù)字 ,且中間不能出現(xiàn)空格</p><p><b>  標識

20、符對大小寫敏感</b></p><p><b>  保留字</b></p><p>  保留字(Keyword)也被稱為關鍵字,是被編程語言內部定義并保留使用的標識符</p><p>  Python 的標準庫提供了一個 keyword 模塊,可以輸出當前版本的所有關鍵字:</p><p>  >>

21、;> import keyword</p><p>  >>> ls=keyword.kwlist</p><p><b>  >>> ls</b></p><p>  >>>len(ls)</p><p><b>  33</b><

22、/p><p>  Python 3 有33個保留字</p><p><b>  True</b></p><p><b>  False</b></p><p><b>  None</b></p><p><b>  and</b>&

23、lt;/p><p><b>  as</b></p><p><b>  assert</b></p><p><b>  break</b></p><p><b>  class</b></p><p><b>  con

24、tinue</b></p><p><b>  def</b></p><p><b>  del</b></p><p><b>  elif</b></p><p><b>  else</b></p><p>&l

25、t;b>  except</b></p><p><b>  finally</b></p><p><b>  for</b></p><p><b>  from</b></p><p><b>  global</b></p&

26、gt;<p><b>  if</b></p><p><b>  import</b></p><p><b>  in</b></p><p><b>  is</b></p><p><b>  lambda</b>

27、;</p><p><b>  nonlocal</b></p><p><b>  not</b></p><p><b>  or</b></p><p><b>  pass</b></p><p><b>  ra

28、ise</b></p><p><b>  return</b></p><p><b>  try</b></p><p><b>  while</b></p><p><b>  with</b></p><p>

29、<b>  yield</b></p><p><b>  字符串</b></p><p>  字符串(string)類型在程序中表示文本</p><p>  字符串是字符的序列,可以按照單個字符或字符片段進行索引</p><p>  字符串包括兩種序號體系:正向遞增序號、反向遞減序號</p&

30、gt;<p>  正向遞增序號:0~L-1</p><p>  反向遞減序號:-L~-1</p><p>  區(qū)間訪問方式:[N:M](不包含M),可以混合使用正向遞增序號和反向遞減序號</p><p>  字符串比較本質上是字符串對應Unicode編碼的比較</p><p><b>  賦值語句</b>&

31、lt;/p><p>  Python語言中,“=”表示“賦值”,將右側的計算結果賦給左側變量</p><p>  同步賦值語句:可同時給多個變量賦值</p><p>  <變量1>,…,<變量N>=<表達式1>,…,<表達式N></p><p><b>  分支語句</b>&l

32、t;/p><p>  分支語句的作用是根據(jù)判斷條件選擇程序執(zhí)行路徑</p><p>  if<條件1>:    <語句塊1></p><p>  elif<條件2>:    <語句塊2>…else:    <語句塊N></p><p><b>  循環(huán)語句</b

33、></p><p>  循環(huán)語句的作用是根據(jù)判斷條件確定一段程序是否再執(zhí)行一次或多次</p><p>  while (<條件>) :    <語句塊1><語句塊2></p><p>  for i in range(<循環(huán)次數(shù)>):    <語句塊1></p><p>

34、<b>  input()函數(shù)</b></p><p>  使用input()函數(shù)從控制臺獲得用戶輸入</p><p>  input()函數(shù)以字符串類型返回結果</p><p>  <> = input("提示性文字")</p><p>  >>>input("

35、;請輸入:")</p><p><b>  eval()函數(shù)</b></p><p>  eval(<字符串>)函數(shù)的作用是間輸入的字符串變成Python語句并執(zhí)行</p><p>  x=eval(input("請輸入:"))</p><p>  Python語法允許在表達式內

36、部標記之間增加空格,適當增加空格有助于提高代碼可讀性。但應注意,不能改變與縮進相關的空格數(shù)量、不能再變量名等命名中間增加空格。</p><p><b>  print()函數(shù)</b></p><p>  print()函數(shù)可以輸出字符信息,也可以用字符的形式輸出變量</p><p>  輸出字符信息時,可以直接將待輸出內容傳遞給print()函

37、數(shù)</p><p>  輸出變量值時,print()函數(shù)用槽格式和過format()方法將變量和字符串結合到一起輸出</p><p><b>  函數(shù)</b></p><p>  函數(shù)可以理解為對一組表達特定功能表達式的封裝,將特定功能代碼編寫在一個函數(shù)里,使程序模塊化更好,便于閱讀和復用</p><p>  可通過保留

38、字def自定義函數(shù)</p><p>  2.2 對象(庫)的調用</p><p>  <a>.<b>()表示調用一個對象<a>的方法<b>(),或調用一個函數(shù)庫<a>中的函數(shù)<b>()</p><p>  面向對象編程是一種基于對象的編程范式。對象是事物的一種抽象,是一個實體,包含屬性和方法兩部

39、分。屬性是對象中的變量,方法是對象能完成的操作。</p><p>  通過保留字import引用函數(shù)庫</p><p>  import <庫名>:程序調用庫中所有函數(shù),使用庫中函數(shù)格式如下</p><p>  <庫名>.<函數(shù)名>(<函數(shù)參數(shù)>)</p><p>  import turtle

40、</p><p>  turtle.fd(100) #控制畫筆向當前行進方向前進100</p><p>  from <庫名> import :</p><p>  from <庫名> import <函數(shù)名,函數(shù)名,…,函數(shù)名>from <庫名> import *,“ * ”是通配符,表示所有函數(shù)</p>

41、;<p>  調用庫中函數(shù)不再需要使用庫名,格式如下</p><p>  <函數(shù)名>(<函數(shù)參數(shù)>)</p><p>  from turtle import *</p><p><b>  fd(100)</b></p><p>  2.3 turtle庫語法元素分析</p&

42、gt;<p>  tuetle庫是一個圖形繪制函數(shù)圖</p><p><b>  繪圖坐標體系</b></p><p>  tuetle庫繪制圖形的基本框架是一個海龜在坐標系中爬行(前進、后退、左轉、右轉),其軌跡形成了繪制圖形。</p><p>  初始位置位于坐標(0,0),行進方向為水平右方。</p><

43、p>  使用turtle.setup()函數(shù)設置主窗體的大小和位置。</p><p>  turtle.setup(width,height,startx,stary)</p><p>  width,height分別表示窗口寬度和高度,值是整數(shù)表示像素值,值時小數(shù)表示與屏幕的比例</p><p>  startx,stary分別表示窗口左側和頂部與屏幕左側和

44、頂部的像素距離,如果值是none,窗口位于屏幕水平/垂直中央</p><p>  turtle.setup(0.8,0.8)</p><p><b>  畫筆控制函數(shù)</b></p><p>  turtle.penup():抬起畫筆,之后移動畫筆不繪制形狀別名:turtle.pd()、turtle.down()</p><

45、;p>  turtle.pensize(width):設置畫筆寬度,width無參數(shù)或為None時返回當前畫筆寬度別名:turtle.width()</p><p>  turtle.pencolor():設置畫筆顏色,無參數(shù)輸入時返回當前畫筆顏色。</p><p>  (colorstring)參數(shù)表示顏色的字符串;(r,g,b)參數(shù)表示顏色對應的RGB值</p>

46、<p><b>  形狀繪制函數(shù)</b></p><p>  turtle.fd(distance):控制畫筆向當前行進方向前進distance,值為負數(shù)表示向相反方向前進別名:turtle.forward(distance)</p><p>  turtle.seth(to_angle):控制畫筆繪制方向,(to_angle)參數(shù)是絕對方向角度值(tur

47、tle庫的坐標體系以正東方向為絕對0度、正北方向為絕對90度)</p><p>  turtle.circle(radius,extent=None):根據(jù)半徑radius繪制extent角度的弧形radius值為正時,半徑在畫筆左側,值為負時,半徑在畫筆右側;extent為正時,畫筆逆時針前進,extent為負時,畫筆順時針倒退,extent不設置參數(shù)或參數(shù)為None時,繪制整圓。</p>&

48、lt;p>  第二部分 深入Python語言</p><p>  第3章 基本數(shù)據(jù)類型</p><p><b>  3.1 數(shù)字類型</b></p><p>  Python語言提供整數(shù)、浮點數(shù)、復數(shù)3種數(shù)字類型</p><p><b>  整數(shù)類型</b></p><p&

49、gt;  整數(shù)類型共有4種進制表示:十進制、二進制、八進制和十六進制</p><p>  默認情況整數(shù)采用十進制,其他進制需要增加引導符號</p><p><b>  浮點數(shù)類型</b></p><p>  浮點數(shù)類型與數(shù)學中實數(shù)的概念一致,表示帶有小數(shù)的數(shù)值</p><p>  Python語言要求所有浮點數(shù)必須帶有小

50、數(shù)部分(可以是0),一區(qū)分浮點數(shù)和證書類型</p><p>  浮點數(shù)有2中表示方法:十進制表示和科學計數(shù)法表示</p><p>  科學計數(shù)法使用字母e或E作為冪的符號,以10為基數(shù),含義如下:</p><p>  <a>e<b>=a*10b^2</p><p>  由于計算機內部采用二進制運算,浮點數(shù)進行超過15位

51、數(shù)字計算會產(chǎn)生誤差</p><p>  使用整數(shù)表達浮點數(shù)的方法是高精確度運算的基本方法之一。</p><p>  對于高精度科學計算外的絕大部分運算而言,浮點數(shù)類型已足夠可靠,一般認為浮點數(shù)類型沒有范圍限制,運算結果準確</p><p><b>  復數(shù)類型</b></p><p>  復數(shù)類型表示數(shù)學中的復數(shù)<

52、/p><p>  復數(shù)可以看作是二元有序實數(shù)對(a,b),表示為a+bj,其中a是實數(shù)部分,簡稱實部,b是虛數(shù)部分,簡稱虛部。</p><p>  Python 語言中,復數(shù)的虛部通過后綴"j"或"J"表示</p><p>  1.23e-4+5.67e+89j</p><p>  復數(shù)類型中實數(shù)部分和虛數(shù)

53、部分的數(shù)值都是浮點數(shù)類型,對于實數(shù)z,可用z.real和z.imag分別獲得它的實部和虛部</p><p>  (1.23e-4+5.67e+89j).real</p><p>  (1.23e-4+5.67e+89j).imag</p><p>  3.2 數(shù)字類型的操作</p><p>  Python 解釋器為數(shù)字類型提供數(shù)值運算操作符

54、、數(shù)值運算函數(shù)、類型轉換函數(shù)等操作方法</p><p>  內置的數(shù)值運算操作符(共9個)</p><p>  操作符運算的結果可能會改變數(shù)字類型,3種數(shù)字類型之間存在一種逐漸擴展的關系:整數(shù)→浮點數(shù)→復數(shù)</p><p>  上述9個二元數(shù)學操作符都有與之對應的增強賦值操作符</p><p>  x+=y 等價于 x=x+y</p&g

55、t;<p>  模運算(%)在編程中主要應用于具有周期規(guī)律的場景</p><p>  內置的數(shù)值運算函數(shù)(共6個)</p><p>  內置的數(shù)字類型轉換函數(shù)(共3個)</p><p>  int()函數(shù)將浮點數(shù)類型轉換為整數(shù)時,小數(shù)部分會直接被舍棄</p><p>  復數(shù)不能直接轉換為其他數(shù)字類型,可通過.real和.ima

56、g將復數(shù)的實部和虛部分別轉換</p><p>  3.3 字符串類型及其操作</p><p><b>  字符串類型的表示</b></p><p>  字符串是字符的序列表示</p><p>  單引號字符串:'單引號表示可以使用"雙引號"作為字符串的一部分'</p>&

57、lt;p>  雙引號字符串:"雙引號表示可以使用'單引號'作為字符串的一部分"</p><p>  三引號字符串:'''三引號表示可以使用"雙引號"、'單引號'作為字符串的一部分也可以換行'''</p><p>  Python 字符串提供區(qū)間訪問方式,采用[N

58、:M]格式。表示從字符串中從N到M(不包含M)的字符串,可以混合使用正向遞增序號和反向遞減序號</p><p>  反斜杠字符(\)在字符串中表示轉義</p><p><b>  \n 表示換行</b></p><p><b>  \\ 表示反斜杠</b></p><p><b>  \&

59、#39; 表示單引號</b></p><p><b>  \" 表示雙引號</b></p><p>  \t 表示制表符(Tab)</p><p>  基本的字符串操作符(共5個)</p><p>  內置的字符串處理函數(shù)(共6個)</p><p>  內置的字符串處理方法(

60、共43個,常用16個)</p><p>  在Python解釋器內部,所有數(shù)據(jù)類型都采用面向對象的方式實現(xiàn),封裝為一個類</p><p>  字符串是一個類,具有類似<a>.<b>()形式的字符串處理函數(shù),稱為方法</p><p>  3.4 字符串類型的格式化</p><p>  字符串通過format()方法進行格

61、式化處理</p><p>  字符串格式化用于解決字符串和變量同時輸出時的格式安排</p><p>  format()方法的基本使用</p><p>  字符串format()方法的基本使用格式:<字模板符串>.format(<逗號分隔的參數(shù)>)</p><p>  模板字符串由一系列槽組成,用來控制修改字符串中嵌入

62、值出現(xiàn)的位置(槽用{}表示,如果{}中沒有序號,則按照出現(xiàn)順序替換)</p><p>  如需輸入{},采用{{表示{;}}表示}</p><p>  "圓周率{{{1}{2}}}是{0}".format("無理數(shù)",3.1415926,"……")</p><p>  format()方法的格式控制<

63、/p><p>  format()方法模板字符串的槽除了包括參數(shù)序號,還可包括格式控制信息。槽內部樣式:{<參數(shù)序號>:<格式控制標記>}</p><p>  格式控制標記用于控制參數(shù)顯示時的格式</p><p>  <填充>指寬度內除了參數(shù)外的字符采用什么方式表示,默認為空格</p><p>  <對齊

64、>指參數(shù)在寬度內輸出時的對齊方式</p><p>  <寬度>指當前槽的設定輸出字符寬度,若實際參數(shù)長度比設定值大,則使用參數(shù)實際長度</p><p>  <,>用于顯示數(shù)字類型的千分位分隔符</p><p>  <.精度>對于浮點數(shù),表示小數(shù)部分輸出的有效位數(shù);對于字符串,表示輸出的最大長度</p><

65、p>  <類型>表示輸出整數(shù)好浮點數(shù)類型的格式規(guī)劃。對于整數(shù)類型,</p><p><b>  b:整數(shù)的二進制;</b></p><p>  c:整數(shù)對應的Unicode字符;</p><p><b>  d:整數(shù)的十進制;</b></p><p><b>  o:整

66、數(shù)的八進制</b></p><p>  x:整數(shù)的小寫十六進制</p><p>  X:整數(shù)的大寫十六進制對于浮點數(shù)類型,</p><p>  e:浮點數(shù)對應的小寫字母e的指數(shù)形式</p><p>  E:浮點數(shù)對應的大寫字母E的指數(shù)形式</p><p>  f:浮點數(shù)的標準浮點形式</p>

67、<p>  %:浮點數(shù)的百分形式</p><p>  第4章 程序的控制結構</p><p>  4.1 程序的基本結構</p><p><b>  程序流程圖</b></p><p>  起止框表示一個程序的開始和結束</p><p>  判斷框判斷一個條件是否成立,并根據(jù)判斷結果不

68、同選擇不同的執(zhí)行路徑</p><p>  處理框表示一組處理過程</p><p>  輸入/輸出框表示數(shù)據(jù)輸入或結果輸出</p><p>  注釋框增加程序的解釋</p><p>  流向線以帶箭頭的直線或曲線形式指示程序的執(zhí)行路徑</p><p>  連接點將多個流程圖連接到一起</p><p&g

69、t;<b>  程序的基本結構</b></p><p>  程序有3種基本結構組成:順序結構、分支結構和循環(huán)結構</p><p>  順序結構:程序按照線性順序依次執(zhí)行</p><p>  分支結構:程序根據(jù)條件判斷結果而選擇不同向前執(zhí)行路徑的一種運行方式(分支結構包括單分支結構和二分支結構;p97)</p><p> 

70、 循環(huán)結構:程序根據(jù)條件判斷結果向后反復執(zhí)行(根據(jù)觸發(fā)條件不同,循環(huán)結構包括條件循環(huán)和遍歷循環(huán))</p><p>  4.2 程序的分支結構</p><p>  單分支機構:if語句</p><p><b>  if語句語法格式:</b></p><p><b>  if <條件>:</b&g

71、t;</p><p><b>  <語句塊></b></p><p>  語句塊是if條件滿足后執(zhí)行的一個或多個語句序列</p><p>  語句塊中語句通過與if所在行形成縮進表達包含關系</p><p>  if語句首先評估條件的結果值,若為Ture則執(zhí)行語句塊中的語句序列;若為False則跳過語句塊中的

72、語句</p><p>  if語句中條件部分可以使用任何能夠產(chǎn)生Ture或False的語句或函數(shù)</p><p>  形成判斷條件最常見的方式是采用關系操作符</p><p>  Python使用"="表示賦值語句,使用"=="表示等于</p><p>  二分支結構:if-else語句</p&g

73、t;<p>  if-else語句語法格式:</p><p><b>  if <條件>:</b></p><p><b>  <語句塊1></b></p><p>  else <條件>:</p><p><b>  <語句塊2&g

74、t;</b></p><p>  二分支語句用于區(qū)分條件的兩種可能</p><p>  if條件滿足時執(zhí)行語句塊1</p><p>  if條件不滿足時執(zhí)行語句塊2</p><p>  二分支結構的簡潔表達(適合通過判斷返回特定值)</p><p>  <表達式1> if <條件>

75、else <表達式2></p><p>  表達式1/2一般是數(shù)字類型或字符串類型的一個值</p><p>  多分支結構:if-elif-else語句</p><p>  if-elif-else語句語法格式:</p><p><b>  if <條件1>:</b></p><

76、;p><b>  <語句塊1></b></p><p>  elif <條件2>:</p><p><b>  <語句塊2></b></p><p><b>  ...</b></p><p><b>  else:</

77、b></p><p><b>  <語句塊N></b></p><p>  Python依次評估尋找第一個結果為Ture的條件,執(zhí)行該條件下的語句并跳過整個if-elif-else結構,執(zhí)行后面的語句</p><p>  如果沒有任何條件成立,執(zhí)行else下面的語句塊</p><p>  else語句是

78、可選的</p><p>  4.3 程序的循環(huán)結構</p><p>  遍歷循環(huán):for語句</p><p><b>  for語句語法格式</b></p><p>  for <循環(huán)變量> in <遍歷結構>:</p><p><b>  <語句塊>

79、</b></p><p>  遍歷循環(huán)可以理解為從遍歷結構中中逐一提取元素,放在循環(huán)變量中,對于所提取的每個元素執(zhí)行一次語句塊</p><p><b>  循環(huán)N次:</b></p><p>  for i in rang(N):</p><p><b>  <語句塊></b>

80、;</p><p><b>  遍歷文件的每一行:</b></p><p>  for line in fi:</p><p><b>  <語句塊></b></p><p><b>  遍歷字符串s</b></p><p>  for c

81、in s:</p><p><b>  <語句塊></b></p><p><b>  遍歷列表ls</b></p><p>  for item in ls:</p><p><b>  <語句塊></b></p><p>&l

82、t;b>  遍歷循環(huán)的擴展模式</b></p><p>  for <循環(huán)變量> in <遍歷結構>:</p><p><b>  <語句塊1></b></p><p><b>  else:</b></p><p><b>  <

83、;語句塊2></b></p><p>  當for循環(huán)正常執(zhí)行后,程序會繼續(xù)執(zhí)行else語句</p><p>  遍歷循環(huán):while語句</p><p>  while語句語法格式</p><p>  while <條件>:</p><p><b>  <語句塊>&

84、lt;/b></p><p>  當條件判斷為Ture時,循環(huán)體重復執(zhí)行語句塊中的語句;當條件為Flase時,循環(huán)終止,執(zhí)行與while同級別縮進的后續(xù)語句</p><p><b>  無限循環(huán)的擴展模式</b></p><p>  while <條件>:</p><p><b>  <

85、語句塊1></b></p><p><b>  else:</b></p><p><b>  <語句塊2></b></p><p>  當while循環(huán)正常執(zhí)行后,程序會繼續(xù)執(zhí)行else語句中的內容,else語句只在循環(huán)正常執(zhí)行后才執(zhí)行</p><p>  循環(huán)保留字

86、:break和continue</p><p>  break用來跳出最內層for或while循環(huán),脫離該循環(huán)后程序從循環(huán)代碼后繼續(xù)執(zhí)行</p><p>  continue用來結束當前當次循環(huán),即跳出循環(huán)體中下面尚未執(zhí)行的語句,但不跳出當前循環(huán)</p><p>  for s in "BIT":</p><p>  fo

87、r i in rang(2):</p><p>  print(s,end="")</p><p>  if s=="I":</p><p><b>  break</b></p><p><b>  >>>BBTT</b></p>

88、;<p>  break語句與continue語句的區(qū)別是,break語句結束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立;continue語句只結束本次循環(huán),而不終止整個循環(huán)的執(zhí)行</p><p>  for循環(huán)和while循環(huán)中都有一個else擴展用法。else語句僅在循環(huán)正常遍歷了所有內容或由于條件不成立而結束循環(huán)的條件下執(zhí)行。</p><p>  for s in &

89、quot;PYTHON":</p><p>  if s =="T":</p><p><b>  continue</b></p><p>  print(s,end="")</p><p><b>  else:</b></p>&

90、lt;p>  print("正常退出")</p><p><b>  >>></b></p><p>  PYHON 正常退出</p><p>  for s in "PYTHON":</p><p>  if s =="T":</

91、p><p><b>  break</b></p><p>  print(s,end="")</p><p><b>  else:</b></p><p>  print("正常退出")</p><p><b>  >&

92、gt;></b></p><p><b>  PY</b></p><p>  4.4 random庫的使用</p><p>  random庫采用梅森旋轉算法生成偽隨機數(shù)序列,可用于除隨機性要求更高的加解密算法外的大多數(shù)工程應用</p><p>  Python內置的random庫主要用于產(chǎn)生各種分布

93、的偽隨機數(shù)序列</p><p>  random庫提供9個常用函數(shù)</p><p>  生成隨機數(shù)之前可通過seed()函數(shù)指定隨機數(shù)種子,隨機數(shù)種子一般是一個整數(shù),只要種子相同,每次生成的隨機數(shù)序列也相同</p><p>  4.5 程序的異常處理</p><p>  Python通過try、except等保留字提供異常處理功能</p

94、><p>  異常處理:try-except語句</p><p>  Python使用try-except語句實現(xiàn)異常處理</p><p><b>  try:</b></p><p><b>  <語句塊1></b></p><p>  except <異常類

95、型>:</p><p><b>  <語句塊2></b></p><p><b>  異常的高級用法</b></p><p>  try-except語句可以支持多個except語句</p><p><b>  try:</b></p><

96、p><b>  <語句塊1></b></p><p>  except <異常類型1>:</p><p><b>  <語句塊2></b></p><p><b>  ...</b></p><p>  except <異常類型N

97、>:</p><p><b>  <語句塊N+1></b></p><p>  except <異常類型N+!>:</p><p><b>  <語句塊N+2></b></p><p>  異常語句還可以與else和finally保留字配合使用</p&

98、gt;<p><b>  try:</b></p><p><b>  <語句塊1>:</b></p><p>  except <異常類型1>:</p><p><b>  <語句塊2></b></p><p><b&g

99、t;  else:</b></p><p><b>  <語句塊3></b></p><p><b>  finally:</b></p><p><b>  <語句塊4></b></p><p>  第5章 函數(shù)和代碼復用</p>

100、;<p>  5.1 函數(shù)的基本使用</p><p><b>  函數(shù)的定義</b></p><p>  函數(shù)是一段具有特定功能的、可重用的語句組</p><p>  使用函數(shù)主要有兩個目的:降低編程難度和代碼重用</p><p>  Python使用def保留字定義一個函數(shù)</p><

101、p>  def<函數(shù)名>(<參數(shù)列表>):</p><p><b>  <函數(shù)體></b></p><p>  return<返回值列表></p><p>  函數(shù)名可以是任何有效的Python標識符</p><p>  參數(shù)列表是調用該函數(shù)是傳遞給它的值,可以有零個

102、(保留圓括號)、一個或多個(用逗號分隔)</p><p>  函數(shù)體是函數(shù)每次被調用是執(zhí)行的代碼</p><p>  當需要返回值時使用保留字return和返回值劉表,否則函數(shù)可以沒有return語句,在函數(shù)體結束時將控制權返回給調用者</p><p>  函數(shù)調用和執(zhí)行的一般形式</p><p>  <函數(shù)名>(<參數(shù)列表

103、>)</p><p><b>  函數(shù)的調用過程</b></p><p>  調用程序在調用處暫停執(zhí)行</p><p>  在調用時將實參復制給形參</p><p><b>  執(zhí)行函數(shù)體語句</b></p><p>  函數(shù)調用結束給出返回值,程序回到調用前的暫停處繼

104、續(xù)執(zhí)行</p><p><b>  lambda函數(shù)</b></p><p>  lambda函數(shù)又稱匿名函數(shù),將函數(shù)名作為函數(shù)結果返回</p><p>  <函數(shù)名>=lambda<參數(shù)列表>:<表達式></p><p>  lambda函數(shù)與正常函數(shù)一樣,等價于下面表達式:<

105、/p><p>  def<函數(shù)名>(<參數(shù)列表>):</p><p>  return<表達式></p><p>  lambda函數(shù)用于定義簡單的、能夠在一行內表示的函數(shù),返回一個函數(shù)類型</p><p>  f=lambda q,w,e,r:q+w+e+r</p><p>  f(1

106、,2,3,4)</p><p><b>  10</b></p><p>  lambda函數(shù)用于需要函數(shù)對象的場景</p><p>  5.2 函數(shù)的參數(shù)傳遞</p><p>  函數(shù)可定義可選參數(shù),使用參數(shù)的位置或名稱傳遞參數(shù)值,根據(jù)函數(shù)中變量的不同作用域有不同的函數(shù)返回值方式</p><p>

107、;  可選參數(shù)和可變數(shù)量參數(shù)</p><p>  函數(shù)定義時部分參數(shù)可直接為存在默認值的參數(shù)指定默認值,當函數(shù)被調用時如果沒有傳入對應的參數(shù)值則使用函數(shù)定義時的的默認值替代</p><p>  默認參數(shù)必須指向不變對象</p><p>  函數(shù)調用時需要按順序輸入?yún)?shù),可選參數(shù)必須定義在非可選參數(shù)后</p><p>  dfe r(str,t

108、imes=2):</p><p>  print(str*times)</p><p><b>  r("T")</b></p><p><b>  TT</b></p><p><b>  r("T")</b></p>&

109、lt;p><b>  TTTT</b></p><p>  函數(shù)定義時可設計可變數(shù)量參數(shù),通過在參數(shù)前加星號(*)實現(xiàn)</p><p>  帶有星號的可變參數(shù)只能出現(xiàn)在參數(shù)列表最后,調用時這些參數(shù)被單指元組類型傳遞到函數(shù)中</p><p>  def vfunc(a,*b)</p><p>  print(type

110、(b)</p><p>  for n in b:</p><p><b>  a+=n</b></p><p><b>  return a</b></p><p>  vfunc(1,2,3,4,5)</p><p>  <class 'tuple'

111、></p><p>  15 #1+2=3;3+3=6;6+4=10;10+5=15</p><p>  參數(shù)的位置和名稱傳遞</p><p>  函數(shù)定義時實參默認采用按照位置順序的方式傳遞給函數(shù),這種方式在參數(shù)很多的情況下可讀性較差</p><p>  Python提供了按照形參名稱輸入實參的方式,調用函數(shù)時指定參數(shù)名稱,參數(shù)之間的

112、順序可任意調整</p><p><b>  函數(shù)的返回值</b></p><p>  return語句用來退出函數(shù)并將程序返回到函數(shù)被調用的位置繼續(xù)執(zhí)行</p><p>  return語句可同時將0個、1個或多個函數(shù)運算后的結果返回給函數(shù)被調用的位置</p><p>  函數(shù)可以沒有return,此時函數(shù)不返回值<

113、;/p><p>  函數(shù)也可以用return返回多個值,多個值以元組類型保存</p><p>  def func(a,b):</p><p>  return b,a</p><p>  s=func("t",2)</p><p>  print(s,type(s))</p><p

114、>  (2, 't') <class 'tuple'></p><p>  5.4 datetime庫的使用</p><p>  Python時間處理的標準函數(shù)庫datetime提供里一批顯示日期和時間的格式化方法。</p><p>  datetime庫概述</p><p>  dateti

115、me庫可以從系統(tǒng)中獲得時間,并以用戶選擇的格式輸出</p><p>  datetime庫以格林威治時間為基礎,每天由3600*24秒精準定義datetime庫以類的方式提供多種日期和時間</p><p>  datetime.date:日期表示類,坑人表示年、月、日等。</p><p>  datetime.time:時間表示類,可表示小時、分鐘、秒、毫秒等。&

116、lt;/p><p>  datetime.datetime:日期和時間表示類,功能覆蓋date和time類。</p><p>  datetime.timedelta:與時間間隔有關的類。</p><p>  datetime.tzinfo:與時區(qū)有關的信息表示類。</p><p>  datetime庫解析(datetime類)</p&g

117、t;<p>  datetime.datetime類的使用方式是首先創(chuàng)建一個datetime對象,然后通過對象的方法和屬性顯示時間創(chuàng)建datetime對象的3種方法:</p><p>  datetime.now():返回一個datetime類型,表示當前日期和時間,精確到毫秒</p><p>  >>>from datetime import datet

118、ime</p><p>  >>>now=datetime.now()</p><p><b>  >>>now</b></p><p>  datetime.datetime(2018, 5, 13, 16, 49, 38, 627464)</p><p>  datetime.ut

119、cnow():返回一個datetime類型,表示當前日期和時間的UTC(世界標準時間)表示,精確到毫秒</p><p>  >>>from datetime import datetime</p><p>  >>>utcnow=datetime.now()</p><p><b>  >>>utcno

120、w</b></p><p>  datetime.datetime(2018, 5, 13, 8, 53, 59, 788612)</p><p>  直接使用datetime()構造一個日期和時間對象:datetime(Y,M,D,hour=0,minute=0,second=0,microsecond=0)</p><p>  >>>

121、;some=datetime(2018,5,13,17,0,0,0)</p><p><b>  >>>some</b></p><p>  datetime.datetime(2018, 5, 13, 17, 0)</p><p>  -創(chuàng)建datetime對象后,可利用該對象的屬性顯示時間(以上述“some”為例)<

122、;/p><p>  datetime類的常用屬性</p><p>  datetime類的常用時間格式化方法</p><p>  strftime()方法用于輸出特定格式時間</p><p>  >>>some=datetime(2018,5,13,17,0,0,0)</p><p>  >>

123、>some.strftime("%Y年%m月%d日,%H時%M分%S秒")</p><p>  '2018年05月13日,17時00分00秒'</p><p>  >>>print('今天是{0:%Y}年{0:%m}月{0:%d}日'.format(some))</p><p>  今天是2

124、018年05月13日</p><p>  5.5 代碼復用和模塊化設計</p><p>  當代編程語言從代碼層面采用函數(shù)和對象兩種抽象方式,分別對應面向過程和面向對象兩種編程思想</p><p>  函數(shù)是程序的一種基本抽象方式,它將一系列代碼組織起來通過命名提供其他程序使用,任何其他代碼只有輸入?yún)?shù)即可調用函數(shù),更新函數(shù)功能時,所有被調用處的功能都被更新。<

125、;/p><p>  對象是程序的一中高級抽象方式,它將程序代碼組織為更高級的類。對象包括表征對象特征的屬性和代表對象操作的方法。</p><p>  模塊化設計值通過函數(shù)或對象的封裝功能將程序劃分成主程序、子程序和子程序間關系的表達。</p><p>  模塊化設計的兩個基本要求:</p><p>  緊耦合:盡可能合理劃分功能塊,功能塊內部耦合

126、緊密</p><p>  松耦合:模塊間關系盡可能簡單,功能塊之間耦合度低</p><p><b>  5.6 函數(shù)的遞歸</b></p><p>  遞歸的定義:函數(shù)定義中調用函數(shù)自身的方式稱為遞歸</p><p>  數(shù)學經(jīng)典遞歸案例——階乘</p><p>  n!=n(n-1)(n-2).

127、..(1)</p><p>  n!=1 (n=0)n!=n(n-1)! (otherwise)</p><p><b>  遞歸的兩個關鍵特征</b></p><p>  存在一個或多個基例,基例不需要再次遞歸,是確定的表達式</p><p>  所有遞歸鏈要以一個或多個基例結尾</p><p&g

128、t;<b>  遞歸的使用方法</b></p><p>  def fact(n):</p><p><b>  if n==0:</b></p><p><b>  return 1</b></p><p><b>  else:</b></p&g

129、t;<p>  return n*fact(n-1)</p><p>  num=eval(input('請輸入一個整數(shù):'))</p><p>  print(fact(abs(int(num))))</p><p>  使用遞歸一定要注意基例的構建,否則遞歸無法返回</p><p>  5.7 科赫曲線繪制&

130、lt;/p><p>  科赫曲線屬于分形幾何分支,它的繪制過程體現(xiàn)了遞歸思想</p><p>  from turtle import *</p><p>  def koch(size,n):</p><p><b>  if n==0:</b></p><p><b>  fd(size

131、)</b></p><p><b>  else:</b></p><p>  for angle in [0,60,-120,60]:</p><p>  left(angle)</p><p>  koch(size/3,n-1) # 遞歸</p><p>  def main(s

132、ize,level):</p><p>  setup(600,600) # 設置主窗體大小</p><p>  speed(0) # 設置畫筆速度,(1~10)</p><p>  hideturtle() # 隱藏turtle箭頭</p><p><b>  penup()</b></p><p&

133、gt;  goto(-150,50)</p><p><b>  pendown()</b></p><p>  pensize(1) # 設置畫筆尺寸</p><p>  koch(size,level)</p><p>  right(120)</p><p>  koch(size,leve

134、l)</p><p>  right(120)</p><p>  koch(size,level)</p><p>  main(300,3)</p><p>  5.8 Python內置函數(shù)</p><p>  Python提供68個內置函數(shù)</p><p><b>  abs()

135、</b></p><p><b>  all()</b></p><p><b>  any()</b></p><p><b>  asci()</b></p><p><b>  bin()</b></p><p>

136、<b>  bool()</b></p><p><b>  chr()</b></p><p><b>  complex()</b></p><p><b>  dict()</b></p><p><b>  divmod()</b&

137、gt;</p><p><b>  eval()</b></p><p><b>  float()</b></p><p><b>  hash()</b></p><p><b>  hex()</b></p><p><

138、b>  id()</b></p><p><b>  input()</b></p><p><b>  int()</b></p><p><b>  len()</b></p><p><b>  list()</b></p&g

139、t;<p><b>  max()</b></p><p><b>  min()</b></p><p><b>  oct()</b></p><p><b>  open()</b></p><p><b>  ord()&l

140、t;/b></p><p><b>  pow()</b></p><p><b>  print()</b></p><p><b>  range()</b></p><p>  reversed()</p><p><b>  ro

141、und()</b></p><p><b>  set()</b></p><p><b>  sorted()</b></p><p><b>  str()</b></p><p><b>  tuple()</b></p>

142、<p><b>  type()</b></p><p><b>  zip()</b></p><p><b>  bytes()</b></p><p><b>  delattr()</b></p><p>  bytearray()<

143、;/p><p>  callable()</p><p>  classmethod()</p><p><b>  compile()</b></p><p><b>  dir()</b></p><p><b>  exec()</b></p&g

144、t;<p>  enumerate()</p><p><b>  filter()</b></p><p><b>  format()</b></p><p>  frozenset()</p><p><b>  getattr()</b></p>

145、;<p><b>  globals()</b></p><p><b>  hasattr()</b></p><p><b>  help()</b></p><p>  isinstance()</p><p>  issubclass()</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論