<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【學習筆記】PYTHON語言程序設計(北理工 嵩天)

      1 Python基本語法元素

      1.1 程序設計基本方法

      計算機發展歷史上最重要的預測法則     摩爾定律:單位面積集成電路上可容納晶體管數量約2年翻倍 cpu/gpu、內存、硬盤、電子產品價格等都遵循此定律

      50年來計算機是唯一一個指數發展的領域

      源代碼、目標代碼(機器代碼)

      編譯、解釋

      靜態語言、腳本語言

      靜態語言編譯器一次性生成目標代碼,優化更沖份,程序運行速度更快

      腳本語言 執行程序時需要源代碼,維護更靈活


      程序的基本設計方法IPO

      I:input  文件輸入、網絡輸入、控制臺輸入、交互界面輸入、內部參數輸入

      P:process 處理

      O:output 控制臺輸出、圖形輸出、文件輸出、網絡輸出、操作系統內部輸出

      6個步驟:

      -分析問題:分析問題的計算部分,想清楚

      -劃分邊界:劃分問題的功能邊界,規劃IPO

      -設計算法:設計問題的求解算法,關注算法

      -編程

      -調試測試

      -升級維護

      3個精簡步驟:確定IPO、編程、調試運行

      計算思維(編程體現了一種抽象交互關系、自動化執行的思維模式)、邏輯思維、實證思維

      1.2 Python開發環境配置

      python 蟒蛇

      psf 擁有者,開放、開源精神

      Guido van Rossum創立

      2002年 2.x

      2008年 3.x

      python3不兼容python2

      交互式、文件式

      linux自帶python2和python3,無需安裝,不過沒有pip,要安裝apt install python3-pip

      1.3 實例1:溫度轉換

      實例1:溫度轉換

      需求:攝氏度與華氏度相互轉換

      #TempConvert.py
      TempStr = input("請輸入帶有符號的溫度值: ")
      if TempStr[-1] in ['F', 'f']:
          C = (eval(TempStr[0:-1]) - 32)/1.8
          print("轉換后的溫度是{:.2f}C".format(C))
      elif TempStr[-1] in ['C', 'c']:
          F = 1.8*eval(TempStr[0:-1]) + 32
          print("轉換后的溫度是{:.2f}F".format(F))
      else:
          print("輸入格式錯誤")
      

      1.4 Python程序語法元素分析

      程序的格式框架:

      代碼高亮 是輔助

      縮進是語法要求  一般4個空格或者1個tab  表達代碼間包含和層次關系的唯一手段

      注釋:單行注釋 #       多行注釋  ”’ ”’


      命名:給變量關聯標識符的過程

      命名大小寫敏感、首字符不能是數字、不與保留字相同

      保留字:被編程語言內部定義并保留使用的標識符 也大小寫敏感 33個

      image

      數據類型

      字符串

      用‘’或“”

      正向遞增序號、反向遞減序號  正向0開始編號

      索引: 可以使用[M]索引其中單個字符

      切片:可以使用[M:N]返回其中一段子串,從第M到第N-1個字符image

      數字類型:整數、浮點數

      列表:表示0到多個數據組成的有序序列,采用,分隔各元素,使用in判斷一個元素是否在列表中


      =   賦值主語句

      分支語句if elif else構成

      eval 評估函數 去除參數最外側引號并執行余下語句的函數

      垂直輸出hello world

      for i in “Hello World”:

         print(i)

      輸出

      x = input()

      print(eval(x)**0,eval(x)**1,eval(x)**2,eval(x)**3,eval(x)**4,eval(x)**5)

      2. Python基本圖形繪制

      2.1 深入理解Python語言

      計算機演進過程:

      1946-1981 計算機系統結構時代  計算能力問題        1981年個人pc誕生                   

      1981-2008 網絡和視窗時代  交互問題                          2008 Android誕生   標志pc轉向移動         

      2008-2016 復雜信息系統時代 數據問題                       2016年alpha go打敗人類            

      2017-  人工智能時代 人類的問題

      新計算時代  過度到人工智能時代的中間時代


      編程語言的初心

      不完全統計600多中語言    常用的也就那么20來種

      python已經在tiobe排行超過C++躍居第三

      image

      Python語言是通用語言、腳本語言、開源語言、跨平臺語言、多模型語言

      –強制可讀性

      –較少的底層語法元素

      –多種編程方式

      –支持中文字符

      –C代碼量的10%                  語法簡潔    *10

      –13萬第三方庫                  生態高產    *10

      –快速增長的計算生態 每年2萬

      –避免重復造輪子

      –開放共享

      –跨操作系統平臺

      人生苦短 我學Python

          –C/C++:C歸C  Python歸Python

          –Java:針對特定開發和崗位需求

          –HTML/CSS/JS:不可替代的前端技術,全棧能力

          -R/GO/Matlab等:特定領域

      Python是最高產的程序設計語言

          –掌握抽象并求解計算問題綜合能力的語言

          -了解產業界解決復雜計算問題方法的語言

          -享受利用編程將創新變為實現樂趣的語言

      工具決定思維:關注工具變革的力量!

      imagepython具有最龐大的生態庫,是唯一的超級語言,前進步伐不可阻擋

      2.2 實例2:Python蟒蛇繪制

      image

      2.3 模塊1: turtle庫的使用

      turtle庫基本介紹

      import 保留字 引入turtle繪圖庫 海龜繪圖體系

      turtle庫是turtle繪圖體系的Python實現  1969年誕生,主要用于程序設計入門 Python的標準庫之一 入門級的圖形繪制函數庫

      Python計算生態=標準庫+第三方庫

      庫library,包package,模塊module ,統稱模塊

      有一只海龜,其實在窗體正中心,在畫布上游走,走過的軌跡繪制的圖形,海龜由程序控制,可以變換顏色寬度


      turtle繪圖窗體布局

      turtle的一個畫布空間 最小單位是像素

      屏幕坐標系:屏幕左上角為0 0

      turtle.setup(width,height,startx,starty)后兩個可選 默認屏幕中央  并不是必須的   用來設置窗體大小和窗體左上角與屏幕左上角的相對位置


      turtle空間坐標系

      絕對坐標  海龜在屏幕中央 記為(0,0)坐標原點   turtle.goto(x,y)

      海龜坐標  以海歸的視角turtle.fd(d),turtle.bk(d),turtle.circle(r,angle) 左側r為止為中心行走angle角度的弧線


      turtle角度坐標體系

      絕對角度 改變海龜前進方向 turtle.seth(angle)image海龜角度 turtle.left(angle),turtle.right(angle)

      imageRGB色彩體系 0-255整數或 0-1 的小數

      image默認采用小數制,可切換為整數制  turtle.colormode(mode) mode為1.0或255

      2.4 turtle語法元素分析

      庫引用

      擴充Python程序功能的方式 使用import保留字完成,采用<a>.<b>()的編碼風格

      from turtle import*    缺點 函數重名   適用于短的程序

      from turtle import函數名

      可以as保留字起別名 import turtle as t    –推薦使用


      畫筆控制函數

      畫筆操作后一直有效,一般成對出現

      -turtle.penup() 別名turtle.pu() 抬起畫筆,海龜在飛行

      -turtle.pendown() 別名turtle.pd() 落下畫筆,海龜在爬行

      畫筆設置后一直有效,直到下次設置

      -turtle.pensize(width) 別名turtle.width(width)  畫筆寬度,海龜腰圍

      -turtle.pencolor(color) color為顏色字符串或rgb值 畫筆顏色,海龜在涂裝

            -顏色字符串 turtle.pencolor(“purple”)

             -rgb小數  turtle.pencolor(0.63,0.13,0.94)

             -rgb元組值  turtle.pencolor((0.63,0.13,0.94))


      運動控制函數

      控制海龜行進:走直線&走曲線

      -turtle.forward(d) 別名 turtle.fd(d)  向前行進,海龜走直線   d可以為負數

      -turtle.circle(r,extent=none) 根據半徑r繪制extent角度的弧線 r默認圓心在海龜左側r距離的位置  -extent繪制角度,默認是360度


      方向控制函數

      turtle.setheading() 別名turtle.seth() 控制海龜面對方向:絕對角度 海龜角度

      turtle.left() turtle.right()


      循環語句

      for in 保留字

      range() 產生循環計算序列 range(N) range(M,N)    0到N-1 M到N-1

      turtle.done() 運行結束 不退出  需要手工退出  去掉就自動退出了

      3. 基本數據類型

      3.1 數字類型及其操作

      整數類型:可正可負 取值無限 pow(x,y) x的y次方

      4種進制表示:10進制、二進制0b或0B開頭 0b010、8進制0o或0O、16進制0x或0X


      浮點型 10的308次方 精度達到:10的-16次方小數 即53位二進制   與數學中實數一致

      不確定尾數 (浮點數運算)不是bug  53位二進制表示浮點數的小數部分 約10的-16次方  計算機中的二進制和十進制不完全對等

      二進制表示小數,可以無限接近,但不完全相同

      0.1+0.2 結果接近0.3

      0.1+0.2 == 0.3  false    用round(x,d)處理不確定尾數   不確定位數一般發生在10的-16次方左右

      科學計數法  e或E作為冪的符號,10為基數  <a>e<b>  4.3e-3


      復數類型 z.real z.imag  獲得實部和虛部


      數值運算操作符

      x+y x-y x*y x/y x//y  +x -y x%y x**y         ps:x/y 是浮點數  別的語言中不是這樣

      二元操作符有對應的增強賦值操作符

      x op =y   x+=y x-=y x*=y x/=y x//=y x%=y x**=y

      類型間可以混合運算 結果生成為“最寬”的類型 隱式轉換  整數->浮點數->復數  如123+4.0=127.0

      數值運算函數

      abs(x) 絕對值

      divmod(x,y) 商余    divmod(10,3)  結果是二元數(3,1)

      pow(x,y[,z]) 冪余

      round(x[,d]) 四舍五入

      max(x1,x2,..)

      min(x1,x2,..)

      int(x) 顯示類型轉換,  變為整數,舍棄小數

      float(x)  轉浮點數

      complex(x)  轉復數

      3.2 實例3:天天向上的力量

      問題分析:持續的價值    一年365天每天進步1%,累計進步多少?相反,每天退步1%,累計剩下多少?如果三天打漁二天曬網呢?

      每天進步或退步0.1%

      image如果是0.5% 1%呢

      image

      如果是工作日的力量?工作日進步1%,休息日退步1%image工作日的努力要達到多少才能和每天努力1%一樣?image

      3.3 字符串類型及操作

      四種字符串表示方法:

      由一對單引號或雙引號表示單行字符串

      由一對三引號或三雙引號表示多行字符串         

      三單引號表示字符串,程序啥都不執行,相當于注釋,python實際沒有真正提供多行注釋


      [M:N:K]根據步長對字符串切片 M和N均可以缺失,表示至開頭或至結尾

      [::-1]倒序image轉義符\  \b 回退  \n 換行  \r 回車光標移動到行首

      字符串操作符

      x+y 連接兩個字符串

      n*x或x*n 復制n次字符串x

      x in s


      字符串處理函數

      len(x) 字符串長度    中英文長度都是1

      str(x) 強制類型轉換為字符串  和eval相反操作

      hex(x)  整數x轉變為8進制形式

      oct(x) 整數x轉變為16進制形式

      chr(x) 將unicode編碼返回其字符形式

      ord(x)  上面的反操作

      unicode編碼 統一字符編碼 從0到1114111(0x10FFFF) Python字符串每個字符都是unicode編碼image

      字符串處理方法

      <a>.<b>  形式 面向對象的術語 表示對象的動作

      8個字符串處理方法

      .lower() .upper()   大小寫轉換

      .split(sep=None)  字符串分割,返回一個列表    例:”a,b,c”.split(‘,’)結果是[‘a’, ‘b’, ‘c’]

      .count(sub)       字符串sub在其中出現次數

      .replace(old,new)         字符串替換

      .center(width[,fillchar])     字符串格式處理,字符串居中  例: ‘python’.center(30,’=’)  結果’============python============’

      .strip(chars)     去除字符換兩邊字符         如:’= python= ‘.strip(‘ =np’)結果’ytho’

      .join(iter) 填充字符    如:’,’.join(‘12345′)結果’1,2,3,4,5’


      字符串類型的格式化

      格式化是對字符串進行格式化表達的方式

      .format方法    用法:<模板字符串>.format(<逗號分隔的參數>)

      相當于占位信息符,只在字符串中有用image

      分為2組

      前三個參數是一組   默認填充空格左對齊

      如:            “{:=^20}”.format(“python”)     結果:           ‘=======python=======’

      如:            “{0:,.2f}”.format(12345.6789)   結果    ‘12,345.68’

      如:”{0:b} {0:c} {0:d} {0:o} {0:x} {0:X}”.format(425)           結果’110101001 ? 425 651 1a9 1A9′

      如: “{0:e} {0:E}{0:f} {0:%}”.format(3.14)  結果     ‘3.140000e+00 3.140000E+003.140000 314.000000%’

      3.4 模塊2:time庫的使用

      time庫是Python中處理時間的標準庫

      時間獲取

      time()  獲取當前時間戳,即計算機系統內部時間值,浮點數  1970年1月1日0點0分開始到當前系統以秒為單位的浮點數       如:1537763974.4934046

      ctime() 獲取當前時間,返回字符串,人類易讀  如:’Mon Sep 24 12:41:59 2018′

      gmtime() 獲取當前時間,struct_time格式,計算機易處理的格式

                  如:time.struct_time(tm_year=2018, tm_mon=9, tm_mday=24, tm_hour=4, tm_min=42, tm_sec=52, tm_wday=0, tm_yday=267, tm_isdst=0)


      時間格式化

      strftime()image格式化字符串imagestriptime()image

      程序計時

      perf_counter()imagesleep()image

      3.5 實例4:文本進度條

      問題分析:采用字符串方式打印可以動態變化的文本進度條  能在一行中逐漸變化

      刷新的本質:用后打印的字符覆蓋之前的字符

      print() 默認加換行  print( ,end=””)不換行   \r退格到行首

      idle不是主要的運行環境 所以\r功能在idle屏蔽了 用shell執image

      文本進度條 簡單的開始

      image

      文本進度條 單行動態刷新image文本進度條 實例完整效果image

      4.程序的控制結構

      4.1 分支結構

      單分支結構

      if <條件>:

          <程序1>


      二分支結構

      if <條件1>:

              <程序1>

      else:

              <程序2>


      緊湊形式:適用于簡單表達式的二分支結構

      <表達式1> if <條件> else <表達式2>

      如:

      guess = eval(input())

      print(“猜{}了”.format(“對”if guess == 99 else ”錯”))


      多分支結構

      if <條件1>:

          <程序2>

      elif <條件2>:

          <程序3

      else:

          <程序n>


      條件判斷>  >=   <   <=    ==   !=

      條件組合x and y      x or y     not x


      異常處理

      try:

          程序1

      except [NameError]:

          程序2

      try:

          程序1

      except:

          程序2

      else:

          程序3

      finally:

         程序4

      4.2 實例5:身體質量指數BMI

      問題分析:BMI是身體肥胖程度的刻畫(BODY MASS INDEX)  BMI=體重(kg)/身高的平方(m),接收用戶信息判斷身體肥胖程度imageimage

      4.3 循環結構

      for 遍歷循環

      for <循環變量> in <遍歷結構>:

          <語句塊>

      記數循環

      for I in range(5):

          print(i)

      for I in range(m:n:k):

          print(i)

      字符串遍歷循環

      for c in s:

          <語句塊>

      for c in “Python123”:
           print(c)

      列表遍歷循環ls是列表

      for item in ls:

          <語句塊>

      for item in [123,”py”,456]:
           print(item,end=’,’)

      文件遍歷循環  fi是文件標識符

      for line in fi:

         <語句塊>


      while 無限循環

      while <條件>:

         <語句>


      循環控制保留字break  continue

      循環擴展:兩種循環后面都可以加else分支  else為沒有被break退出是執行的,作為正常運行的獎勵

      4.4 模塊3:random庫使用

      random庫是使用隨機數的python標準庫

      計算機沒法產生真正的隨機數,但是可以使用梅森旋轉算法產生偽隨機數

      使用 import random


      random庫包括2類函數,常用共8個

      基本隨機數函數:seed(),random()

      括展隨機數函數:randint(),getrandbits(),uniform(),randrange(),choice(),shuffle()

      隨機數種子

      seed(a=None)    初始化給定的隨機數種子,默認為系統當前時間,例:random.seed(10) #產生種子10對應的序列 0.5714025946899135 0.4288890546751146  ..

      random()            生成一個[0.0,1.0)之間的隨機小數,例:random.random()

      為什么要使用隨機數種子呢,因為可以使用相同的隨機數種子復現程序的執行情況

      randint(a,b)        生成一個[a,b]之間的整數,例:random.randint(10,100)

      randrange(m,n[,k])    生成一個[m,n)之間以k為步長的隨機整數,例:random.random(10,100,10)

      getrandbits(k)       生成一個k比特長的隨機整數

      uniform(a,b)         生成一個[a,b]之間的隨機小數

      choice(seq)          從序列中隨機選擇一個元素,例:random.choice([1,2,3,4,5,6])

      shuffle(seq)          將序列中元素隨機排序,返回打亂后的序列,例:s=[1,2,3,4];random.shuffle(s);print(s)

      4.4 實例6:圓周率計算

      image

      蒙特卡羅方法     工程方法

      數學思維

      計算思維

      time庫perf_counter來關注程序性能

      據統計,程序80%的時間消耗在不到10%的代碼上   有點兒類似28法則

      關注循環

      5.函數和代碼復用

      5.1 函數的定義與使用

      函數定義

      函數是一段具有特定功能可復用的語句

      df <函數名>(參數):

          <函數體>

          return <返回值>

      其中參數可以是0個到多個,是占位符

      函數不經過調用是不會執行的

      函數就是IPO的實現

      函數也是一段完整代碼的封裝


      函數的參數傳遞

      可選參數傳遞:可以為參數指定默認值,變為可選參數,可選參數要放在非可選參數之后image可變參數傳遞:不確定參數有多少個imageimage

      參數傳遞的兩個方式

      默認是按照位置,可以按照名稱方式傳遞image

      函數的返回值

      return可以返回0個或多個結果

      函數可以有返回值也可以沒有

      可以有return 也可以沒有

      返回多個值的時候是返回元組類型 用() 元素用逗號分隔


      局部變量與全局變量

      函數外邊的是全局變量,里面是局部變量

      局部變量是函數內部的占位符,可能與全局變量重名單不相同

      函數運行結束后局部變量被釋放

      規則1:局部變量與全局變量是不同變量

      可以使用global保留字在函數內部使用全局變量

      image規則2:局部變量如果是組合數據類型且未被創建,等同于全局變量    組合數據類型實際是指針的原因imageimage

      lambda函數

      lambda函數返回函數名作為結果

      lambda函數是一種匿名函數,沒有名字的函數

      lambda函數用于定義一種簡單的能夠在一行內表示的函數

      是一種函數的緊湊表達形式

      <函數名> = lambda <參數>:<表達式>

      f = lambda x,y : x + y

      f(10,15)

      謹慎使用lambda函數

      用于特定的方法的參數

      一般就算是1行代碼,也建議用def方式定義

      5.2 實例7:七段數碼管繪制

      問題分析:用turtle繪制數碼管樣式的時間image

      5.3 代碼復用與函數遞歸

      代碼復用

      代碼抽象化:使用函數等方法對代碼賦予更高級別的定義

      函數對象是代碼復用的2中主要形式

      函數是在代碼層面建立了初步抽象

      對象有屬性和方法,是更高級別的抽象

      封裝


      模塊化設計

      分而治之:

      通過函數或對象封裝將程序劃分為模塊與模塊間的表達

      主程序、子程序與子程序之間的關系

      一般將子程序看作模塊,主程序看作模塊與模塊間的關系

      是一種分而治之、分層抽象、體系化的設計思想

      緊耦合:兩個部分之間交流很多,無法獨立存在

      松耦合:兩個部分之間交流很少,可以獨立存在,有各自清晰簡單的接口

      模塊化設計基本思路和原則:模塊內部緊耦合,模塊之間松耦合


      函數遞歸:函數定義中調用自身的方式

      兩個關鍵特征

      鏈條:計算過程存在遞歸鏈條

      基例:存在一個或者多個不需要再次遞歸的基例  遞歸的最末段

      類似數學歸納法,先證明第一個取值命題成立,然后第n個取值命題成立,第n+1取值命題也成立,那么命題成立

      遞歸可以理解為數學歸納法思維在編程中的體現


      函數遞歸的調用image

      函數+分支語句   :基例和鏈條分別編寫代碼

      3個小栗子imageimageimage

      5.4 模塊4:Pyinstaller庫的使用

      是第三方庫 需要安裝

      pip工具

      shell中使用使用             pyinstaller –F <文件名.py>image

      5.5 實例8:科赫雪花小包裹

      image分形幾何

      image

      6. 組合數據類型

      6.1 集合類型及操作

      集合是多個元素的無序組合,每個元素唯一,不存在相同元素

      集合元素不可更改,不能是可變數據類型,比如列表類型就不能作為元素,整數浮點數復數字符串元組類型等都是不可變數據類型

      用{}表示,元素間用逗號分隔

      建立集合用{}或者set()

      例如:B = set(“pypy123”) 結果{‘1’,’2’,’3’,’p’,’y’}

      建立空集合必須用set()


      6個集合操作符

      S | T  并

      S – T  差

      S & T 交

      S ^ T  補

      S <= T、S < T  包含與子集關系

      S >= T、S > T

      增強操作符

      S |= T

      S –= T

      S &= T

      S ^= T


      10個集合處理方法

      S.add(x)  如果x不在S中,將x元素加入S集合

      S.discard(x) 移除S中元素x,如果x不在集合S中,不報錯

      S.remove(x) 移除S中元素x,如果x不在S中,產生KeyError異常

      S.clear() 移除S中所有元素

      S.pop() 隨機返回S的一個元素,更新S,若S為空產生KeyError異常

      S.copy()  返回集合S的一個副本

      len(S) 返回個數

      x in S 判斷S中是否有元素x

      x not in S 同上相反

      set(x) 將其他類型變量x轉變為集合類型


      集合類型應用場景

      包含關系的比較

      數據去重

      image

      6.2 序列類型及操作

      序列是有先后順序的一組元素

      序列是一維元素向量,元素類型可以不同,類似C語言中的一維數組

      元素間由序號引導,通過下標訪問序列的特定元素

      序列是一個基類類型

      一般不直接用序列類型而是使用其衍生類型,比如字符串、元組、列表image序列處理函數與方法imageimage

      元組類型

      元組是一種序列類型,一旦創建就不能被修改

      使用()或者tuple()創建,元素間用逗號分隔

      可以使用或不適用小括號,比如函數返回多個返回值就是使用沒有括號的元組類型,python內部認為是一個值,是一個元組image

      元組類型繼承了序列的所有通用操作

      元組類型因為一旦定義不能修改,所以沒有特殊操作


      列表類型及操作

      列表是序列類型的擴展,十分常用

      列表是一種序列類型,創建后可以隨意修改,長度無限制,元素類型可不同image列表本質是指針,如果通過賦值語句給另外一個變量,那么實際并沒有創建一個新列表,可以類似linux的硬鏈接,[]或者函數list()才是真正創建一個列表,賦值僅僅傳遞引用image一些例子imageimage一些例子imageimage

      序列類型應用場景

      包含元組列表

      元組用于元素不改變的場景,更多用于固定場景 比如函數返回值

      列表則更加靈活,是常用的序列類型

      最主要作用:表示一組有序數據并進而操作它們

      元素遍歷 for item in lt

      數據保護 利用元組不可修改的特性image

      6.3 實例9:基本統計值計算

      問題分析:給出一組數據,給出概要理解,比如 求和、平均值、方差、中位數…

      總個數:len()

      求和:for … in

      平均值:上2個除

      方差:各數據與平均值的平方的和的平均數

      中位數:排序,取中間的或者中間2個數平均數image

      6.4 字典類型及操作

      字典類型的定義

      映射 是一種鍵(索引)和值(數據)的對應

      用{}或者dict()創建字典,鍵值對用:表示     {key:value,key2:value2…}

      type()可以檢測變量的類型

      {}可以用來聲明空字典,這就是集合類型中定義空集合不能用{}的原因image一些例子image

      6.5 模塊5:jieba庫的使用

      優秀的中文分詞第三方庫

      由于中文是連續書寫的 需要通過特定手段獲得單個詞語

      jieba庫提供3種分詞模式,最簡單只需要掌握一個函數

      通過中文詞庫方式識別確定漢字之間關聯概率 概率大的組成詞組,形成分詞效果

      除了分詞,用戶也可以添加自定義的詞組


      三種模式

      精確模式:把文本精確的切分開,不存在冗余單詞  最常用的分詞模式

      全模式:把文本中所有可能的詞語都掃描出來,存在冗余

      搜索引擎模式:更加智能,在精確模式的基礎上,對長詞再次切分,存在冗余,在某些特定場景下使用image

      6.6 實例10:文本詞頻統計

      問題分析:一篇文章,出現了哪些詞?哪些詞最多?

      中英文各一個程序:分別是哈姆雷特和三國演義

      imageimage

      7. 文件和數據格式化

      7.1 文件的使用

      文件的類型

      文本文件、二進制文件     只是展示方式,本質上都是二進制數據

      文本文件:由單一特定編碼組成的文件,如utf-8編碼   由于存在編碼,文本文件也被看為一個長字符串

      二級制文件:數據間沒有統一字符編碼,01組成,比如png avi等文件


      文件的打開和關閉

      打開->操作->關閉                    文件存儲狀態和占用狀態轉換image

      文件的打開

      <變量名> = open(<文件名>,<打開模式>)

      文件句柄

      文件路徑和名稱,使用相對路徑或者絕對路徑,同一個路徑的話就直接文件名,斜杠\是轉移字符使用反斜杠/替換,或者\\

      打開模式image

      <變量名>.close   關閉文件

      當程序退出的時候,python也會自動關閉文件


      文件內容的讀取

      <f>.read(size=-1)   讀入全部內容,如果給出參數,讀入前size長度

      <f>.readline(size=-1) 讀入一行,如果給了size,讀入該行前size長度

      <f>.readlines(hint=-1)   讀入文件所有行,以每行為元素形成列表,hint參數可選,讀入前hint行

      遍歷全文本image文件的逐行處理image

      文件寫入

      <f>.write(s)   向文件寫入一個字符串或字節流   如:f.write(“abc”)

      <f>.writelines(lines)   將一個元素全為字符串的列表寫入文件   如:ls=[‘a’,’b’,’c’],f.writelines(ls)

      <f>.seek(offset) 改變當前文件操作指針的位置,offset含義如下:0文件開頭,1-當前位置,2-文件結尾

      例子:image

      7.2 實例11:自動軌跡繪制

      問題分析:根據腳本來繪制圖形  不是寫代碼而是寫數據繪制軌跡imageimage

      自動化思維

      將數據和功能分離開來

      數據驅動

      接口化設計

      可以擴展

      擴展接口設計,增加更多控制接口

        擴展功能設計,增加弧形等更多功能

        擴展應用需求,發展自動軌跡繪制到動畫繪制

      7.3 一維數據的格式化

      一維數據:由對等關系的有序或無序數據構成,采用線性方式組織,對應列表、集合、數組等概念

      二維數據:由多個一維數據組成,是一維數據的組合形式

      多維數據:是一維或二維數據在新唯獨上擴展形成,比如中國大學排行榜加入時間維度

      高維數據:僅利用最基本的二元關系展示數據間的復雜結構,比如字典類型中的key-value形式


      操作周期image

      一維數據的表示

      如果數據間有序,使用列表類型

      如果數據間無序,使用集合類型


      一維數據的存儲imageimage一維數據的處理image類似于一個驅動imageimageimage

      7.4 二維數據的格式化和處理

      二維列表

      兩層for循環遍歷二維列表

      csv:comma-separated values  逗號分隔  國際通用   一般.csv為擴展名

      每行一個一維數據,無空行

      一般的軟件都能生成csv格式文件image

      如果每個元素缺失,逗號要保留

      表頭可以作為數據存儲,也可以令行存儲

      如果數據中包含逗號,不同的軟件有不同的約定,比如轉義符或者其他方式

      按行存或者按列存都行,一般索引習慣 ls[row][col] 先行后列,按行存


      二維數據的處理

      讀入處理imageimage

      7.5 模塊6:wordcloud庫的使用

      詞云展示的第三方庫

      wordcloud庫把詞云當作一個WordCloud對象

      wordcloud.WordCloud()代表一個文本對應的詞云

      可以根據文本中詞語出現的頻率等參數繪制詞云

      繪制詞云的形狀、尺寸、顏色都可以設定

      w = wordcloud.WordCloud()

      以WordCloud對象為基礎

      配置參數、加載文本、輸出文件

      常規方法

      w.generate(txt)  向WordCloud對象w中加載文本txt 如:w.generate(“Python and WordCloud”)

      w.to_file(filename) 將詞云輸出為圖像文件,.png或.jpg格式 如:w.to_file(“output.png”)

      繪制詞云的步驟:

      setp1:配置對象參數

      setp2:加載詞云文本

      step3:輸出詞云文件imageimage

      生成默認400*200的圖片

      wordcloud干啥了:

      a.分隔:以空格為分隔單詞

      b.統計:單詞出現次數并過濾

      c.字體:根據統計配置字號

      d.布局:顏色環境尺寸

      對象參數

      width 默認400

      height 默認200

      min_font_size 最小字號 默認4號

      max_font_size 最大字號 根據高度自動調節

      font_step 默認1,字體步進間隔

      font_path 字體路徑,默認None,如:w=wordcloud.WordCloud(font_path=”msyh.ttc”)

      max_words 指定詞云顯示的最大單詞數量,默認200   比如詞云顯示的不那么有力,可以修改這個

      stop_words 指定排除單詞 如:w=wordcloud.WordCloud(stop_words={“Python”})

      background_color  指定背景色  默認黑色

      默認顯示的矩形效果,使用mask參數可以改變image

      中文的話需要先用jieba庫分詞,中文不是空格分隔的

      7.6 實例12:政府工作報告詞云

      常規矩形詞云image不規則詞云image

      8. 程序設計方法學

      8.1 實例13:體育競技分析imageimage

      自頂向下(設計)        分而治之

      將一個總問題表達為若干個小問題組成的形式

      使用相同的方法進一步分解小問題

      解決復雜問題的有效設計方法

      自底向上(執行)     模塊化集成

      逐步組建復雜系統的有效測試方法

      分單元測試,逐步組裝imageimageimage

      8.2 Python程序設計思維

      計算思維與程序設計

      第三種人類思維特征

      邏輯思維:以推理和演繹為特征,以數學為代表,A->B,B->C,A->C

      實證思維:以實驗和驗證為特征,以物理為代表,引力波<-實驗

      計算思維:以設計和構造為特征,計算機為代表,漢諾塔遞歸

      有非常明顯的特征:抽象和自動化,抽象問題的計算過程并利用計算自動化求解(并不是抽象因果關系僅僅是抽象過程)

      1+2+..+100  高斯     vs  累計

      圓周率        高數求和   vs     蒙特卡洛方法

      漢諾塔問題   邏輯推理的2的n次方-1        vs      遞歸image

      計算思維基于計算機強大的算力和海量的數據

      抽象計算過程,關注設計和構造,而非因果

      以計算機程序設計為主要實現手段

      編程是將計算思維變為現實的手段


      計算生態與Python語言

      從開源運動說起…

      -1983年,Richard Stallman啟動GNU項目

      -1989年,GNU通用許可協議誕生,自由軟件時代到來               大教堂模式

      -1991年,Linus Torvalds發布了Linux內核                                           集市模式(成為主流)

      -1998年,網景瀏覽器開源,產生了Mozilla,開源生態逐步建立

      計算生態以開源項目為組織形式,充分利用“共識原則”和“社會他人”組織人員,在競爭發展、相互依存和迅速更迭中完成信息技術的更新換代,形成了技術的自我演進路徑。

      開源思想深入演化和發展,形成了計算生態

      計算生態是沒有頂層設計、以功能為單位、具備三個特點:競爭發展、相互依存和迅速更迭

      python

      -以開源項目為代表的大量第三方庫         Python語言提供 > 13萬個第三方庫  并以兩萬+每年的速度發展

      -庫的建設經過野蠻生長和自然選擇         同一個功能,Python語言提供2個以上第三方庫

      -庫之間相互關聯使用,依存發展             Python庫間廣泛聯系,逐級封裝

      -社區龐大,新技術更迭迅速                      Alpha Go深度學習算法采用Python語言開源

      API !=  生態

      創新:跟隨創新、集成創新、原始創新                     

      -計算生態加速科技類應用創新的重要支撐

      -發展科技產品商業價值的重要模式

      -國家科技體系安全和穩固的基礎

      刀耕火種 –> 站在巨人的肩膀上

        -編程的起點不是算法而是系統

        -變成如同搭積木,利用計算生態為主要模式

        -編程的目標是快速解決問題

      優質的計算生態  python123  由老師、產業人員共同篩選的優質生態https://python123.io/index/monthly_packages/201808


      用戶體驗與軟件產品

      實現功能 –> 關注體驗

      用戶體驗指用戶對產品建立的主管感受和認識

      關心功能實現,更要關心用戶體驗,才能做出好產品

      編程只是手段,不是目的,程序最終為人類服務

      提高用戶體驗的方法

      方法1:進度展示 

        -如果程序需要計算時間,可能產生等待,請增加進度展示

        -如果程序需要若干步驟,需要提示用戶,請增加進度展示

        -如果程序可能存在大量次數的循環,請增加進度展示

      方法2:異常處理

        -當獲得用戶輸入時候,對合規性需要檢查,需要異常處理

        -當讀寫文件時,對結果進行判斷,需要異常處理

        -當進行輸入輸出時,對運算結果進行判斷,需要異常處理

      其他方法:

        -打印輸出:特定位置,輸出程序運行的過程信息verbose

        -日志文件:對程序異常以及用戶的使用進行定期記錄

        -幫助信息:給用戶多種方式提供幫助

      軟件程序 到 軟件產品,其核心關鍵就是用戶體驗


      基本的程序設計模式

      IPO

      模塊化設計

      自頂向下設計

      配置化設計   (自動軌跡繪制實例)image

      -引擎+配置:程序執行和配置分離,將可選參數配置化

        -將程序開放變為配置文件編寫,擴展功能而不修改程序

        -關鍵在于接口設計,清晰明了,靈活擴展,這是一種更高級別的設計思路

      應用開發的四個步驟:

      1.產品定義    對應用需求充分理解和明確定義

        -產品定義,而不僅是功能定義,要考慮商業模式

      2.系統架構  以系統方式思考產品的技術實現

        -系統架構,關注數據流、模塊化、體系架構

      3.設計與實現  結合架構完成關鍵設計及系統實現

        -結合可擴展性、靈活性、是否適應未來需求變化等進行設計優化

      4.用戶體驗  從用戶角度思考應用效果

        -用戶至上,體驗優先,以用戶為中心構造軟件產品

      8.3 Python第三方庫安裝

      看見更大的Python世界

      13萬個第三方庫  全區社區 https://pypi.org

      PYPI

        -Python Package Index

        -PSF維護的展示全球Python計算生態的主站

        -學會檢索并利用PyPI,找到合適的第三方開發程序

      3種安裝方法:

        -方法1(主要方法):使用pip命令

        -方法2:集成安裝方法

        -方法3:文件安裝方法


      pip安裝方法(最主要的方法)

      pip  -h 可以查看幫助

      pip install <第三方庫名>                                 安裝

      pip install –U <第三方庫名>                           升級

      pip uninstall <第三方庫名>                            卸載

      pip download <第三方庫名>                         下載單并不安裝

      pip show <第三方庫名>                                  列出某個第三方庫的詳細信息

      pip search 關鍵詞                                             搜索第三方庫

      pip list                                                                  列出已安裝的第三方庫


      集成安裝方法

      結合安裝工具,批量安裝,不過這樣的安裝工具不多,推薦一個叫anacondaimage

      文件安裝方法

      為什么有些第三方庫用pip可以下載,單無法安裝?

        -某些第三方庫下載后,需要編譯再安裝

        -如果操作系統沒有編譯環境,則能下載單不能安裝

        -可以找編譯后的版本來安裝嗎  http://www.lfd.uci.edu/~gohlke/pythonlibs   UCI頁面  加州大學教授維護的 win系統的直接編譯后的版本

      pip install 文件

      8.4 模塊7:os庫的使用

      os庫提供通用的、基本的操作系統交互功能

      是python標準庫,由幾百個函數,包括常用路徑操作、進程管理、環境參數等幾類

        -路徑操作:os.path子庫,處理文件路徑及信息

        -進程管理:啟動系統中其他程序

        -環境參數:獲得系統軟硬件信息等參數


      路徑操作

      os.path子庫以path為入口,用于操作和處理文件路徑

      import os.path

      import os.path as opimageimageimageimage

      os庫進程管理

      os.system(command)   調用其他程序


      os庫之環境參數

      獲取或改變系統環境信息image

      8.5 實例14:第三方庫安裝腳本

      第三方庫自動安裝腳本image

      9 Python計算生態概覽

      9.1 從數據處理到人工智能

      從數據處理到人工智能的完整鏈條:數據表示->數據清洗->數據統計->數據可視化->數據挖掘->人工智能image

      Python庫之數據分析

      Numpy:表達N維數組的最基礎庫

        -Python接口使用,C語言實現,計算速度優異

        -Python數據分析及科學計算的基礎庫,支撐Pandas等

        -提供直接的矩陣運算、廣播函數、線性代數等功能image

      Pandas:Python數據分析高層次應用庫

        -提供了簡單易用的數據結構和數據分析工具

        -理解數據類型與索引的關系,操作索引即操作數據

        -Python庫最主要的數據分析功能庫,基于Numpy開發

      提供兩個數據結構:

      Series = 索引 + 一維數據

      DataFrame = 行列索引 + 二維數據image

      Scipy:數學、科學和工程計算功能庫

        -提供了一批數學算法及工程數據運算功能

        -類似Matlab,可用于傅里葉變換、信號處理等應用

        –Python最主要的科學計算功能庫,基于Numpy開發image

      Python庫之數據可視化

      Matplotlib:高質量的二維數據可視化功能庫,有大量子庫

        -提供了超過100種數據可視化展示效果

        -通過matplotlib.pyplot子庫調用各可視化效果

        -Python最主要的數據可視化功能庫,基于Numpy開發image

      Seaborn:統計類數據可視化功能庫

        -提供了一批高層次的統計類數據可視化展示效果

        -主要展示數據間分布、分類和線性關系等內容

        -基于Matplotlib開發,支持Numpy和Pandasimage

      Mayavi:三維科學計算可視化功能庫

        -提供了一批簡單易用的3D科學計算數據可視化展示效果

        -目前是Mayavi2,三維可視化最主要的第三方庫

        -支持Numpy、TVTK、Traits、Envisage等第三方庫image

      Python庫之文本處理

      PyPDF2:用來處理pdf文件的工具集

        -提供了一批處理PDF文件的計算功能

        -支持獲取信息、分隔/整合文件、加密解密等

        -完全Python語言實現,不需要額外依賴,功能穩定image

      NLTK:自然語言文本處理第三方庫

        –提供了一批簡單易用的自然語言文本處理功能

        -支持語言文本分類、標記、語法句法、語義分析等

        -最優秀的Python自然語言處理庫image

      Python-docx:創建或更新word文檔的第三方庫

        -提供創建或更新.doc .docx等文件的計算功能

        -增加并配置段落、圖片、表格、文字等,功能全面image

      Python庫之機器學習

      Scikit-learn:機器學習方法工具集

        -提供一批統一化的機器學習方法功能接口

        -提供聚類、分類、回歸、強化學習等計算功能

        -機器學習最基本且最優秀的Python第三方庫image

      TensorFlow:AlphaGo背后的機器學習計算框架

        -谷歌公司推動的開源機器學習框架

        -將數據流圖作為基礎,圖節點代表運算,邊代表張量

        -應用機器學習方法的一種方式,支撐谷歌人工智能應用image

      MXNet:基于神經網絡的深度學習計算框架

        -提供可擴展的神經網絡及深度學習計算功能

        -可用于自動駕駛、機器翻譯、語音識別等眾多領域

        -Python最重要的深度學習計算框架image

      9.2 實例15:霍蘭德人格分析雷達圖

      問題分析:

      啥是雷達圖image

      霍蘭德認為:人格興趣和職業之間有內在的對應關系

      人格分類:研究型、藝術型、社會型、企業型、傳統型、現實型

      職業:工程師、實驗員、藝術家、推銷員、記事員、社會工作者

      需求:雷達圖方式驗證霍蘭德人格分析

      輸入:各職業人群結合興趣的調研數據

      輸出:雷達圖

      展示多維數據以及繪制雷達圖的能力imageimage目標+沉浸+熟練

        -編程的目標感:尋找感興趣的目標,尋(wa)覓(jue)之

        -編程的沉浸感:尋找可實現的方法,思(zuo)考(mo)之

        -編程的熟練度:練習、練習、再練習,熟練之

      編程不是最主要的,編程的感覺才是最重要的

      9.3 從Web解析到網絡空間

      Python庫之網絡爬蟲

      Requests:最友好的網絡爬蟲庫

        -提供了簡單易用的類HTTP協議網絡爬蟲功能

        -支持連接池、SSL、Cookies、HTTP(S)代理等

        -Python最主要的頁面級網絡爬蟲功能庫image

      Scrapy:優秀的網絡爬蟲框架

        -提供了構建網絡爬蟲系統的框架功能,半成品

        -支持批量和定時頁面爬取、提供數據處理流程等

        -Python最主要且最專業的網絡爬蟲框架image

      pyspider:強大的Web頁面爬取系統

        -提供了完整的網頁爬取系統構建功能

        -支持數據庫后端、消息隊列、優先級、分布式架構等

        -Python重要的網絡爬蟲第三方庫image

      Python庫之Web信息提取

      Beautiful Soup:HTML和XML的解析庫

        -提供了解析HTML和XML等Web信息的功能

        -又名beautifulsoup4或bs4,可以加載多種解析引擎

        -常與網絡爬蟲庫搭配使用,如Scrapy、requests等image

      Re:正則表達式解析和處理功能庫

        -提供了定義和解析正則表達式的一批通用功能

        -可用于各類場景,包括定點的Web信息提取

        -Python最主要的標準庫,無需安裝image

      Python-Goose:提取文章類型Web頁面的功能庫

        -提供了對Web頁面中文章信息/視頻等元數據的提取功能

        -針對特定類型Web頁面,應用覆蓋面較廣image

      相對于bs4庫,抽象層次更加高,更加方便


      Python庫之Web網站開發

      Django:最流行的Web應用框架

        -提供了構建Web系統的基本應用框架

        -MTV模式:模型(model)、模式(Template)、視圖(Views)

        -Python最重要的Web應用框架,略微復雜的應用框架,比較適合專業的網站構建image

      Pyramid:規模適中的Web應用框架

        -提供了簡單方便構建Web系統的應用框架

        -不大不小,規模適中,適合快速構建并適度擴展類應用

        -Python產品級Web應用框架,起步簡單可擴展性好image

      Flask:Web應用開發微框架

        -提供了最簡單構建Web系統的應用框架

        -特點是:簡單、規模小、快速

      -Django > Pyramid > Flask好image

      Python庫之網絡應用開發

      WeRoBot:微信公眾號開發框架

        -提供了解析微信服務器消息及反饋消息的功能

        -建立微信機器人的重要手段image

      aip:百度AI開放平臺接口

        -提供了訪問百度AI服務的Python接口

        -語音、人臉、OCR、NLP、知識圖譜、圖像搜索等領域

        -Python百度AI應用的最主要方式image

      MyQR:二維碼生成第三方庫

        -提供了生成二維碼的系列功能

        -基本二維碼、藝術二維碼和動態二維碼image

      9.4 從人機交互到藝術設計

      Python庫之圖形用戶界面

      PyQT5:QT開放框架的Python接口

        -提供了創建QT5程序的Python API接口

        -Qt是非常成熟的跨平臺桌面應用開發系統,完備GUI

        -推薦的Python GUI開發第三方庫image

      wxPython:跨平臺GUI開發框架

        -提供了專用于Python的跨平臺GUI開發框架

        -Python最主要的圖形用戶界面image

      PyGObject:使用GTK+開發GUI的功能庫

        -提供了整合GTK+、WebKitGTK+等庫的功能

        -GTK+:跨平臺的一種GUI框架

        -實例:Anaconda采用該庫構建GUIimage

      Python庫之游戲開發

      PyGame:簡單的游戲開發功能庫

        -提供了基于SDL的簡單游戲開發功能及實現引擎

        -理解游戲對外部輸入的相應機制及角色構建和交互機制

        -Python游戲入門最主要的第三方庫image

      Panda3D:開源、跨平臺的3D渲染和游戲開發庫

        -一個3D游戲引擎,提供Python和C++兩種接口,Python接口更加全面也是該庫推薦使用的語言

        -支持很多先進特性:法線貼圖、光澤貼圖、卡通渲染等

        -由迪士尼和卡內基梅隆大學共同開發image

      cocos2d:構建2D游戲和圖形界面交互應用的框架

        -提供了基于OpenGL的游戲開發圖形渲染功能

        -支持GPU加速,采用樹形結構分層管理游戲對象類型

        -適用于2D專業級游戲開發image

      Python庫之虛擬現實

      VR Zero:在樹莓派上開發VR應用的Python庫

        -提供大量與vr開發相關的功能

        -針對樹莓派的vr開發庫,支持設備小型化,配置簡單化

        -非常適合初學者實踐vr開發及應用image

      pyovr:Oculus Rift的Python接口

        -針對Oculus VR設備的python開發庫

        -基于成熟的VR設備,提供全套文檔,工業級應用設備

        -Python+虛擬現實領域探索的一種思路image

      Vizard:基于Python的通用VR開發引擎

        -專業的企業級虛擬現實開發引擎

        -提供詳細的文檔

        -支持多種主流的VR硬件設備,具有一定的通用性image

      Python庫之圖形藝術

      Quads:迭代的藝術

        -對圖片進行四分迭代,形成像素風

        -可以生成動態或者靜態圖片

        -簡單易用,具有很高展示度image

      ascii_art:ASCII藝術庫

        -將普通圖片轉為ASCII藝術風格

        -輸出可以是純文本或彩色文本

        -可采用圖片格式輸出imageturtleimage

      9.5 實例16:玫瑰花繪制

      問題分析:imageimage

      posted @ 2019-09-03 09:58  九命貓幺  閱讀(9704)  評論(8)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区三区精品综合| 亚洲乱码国产乱码精品精| 国产午夜福利片在线观看| 视频二区国产精品职场同事| 色欲国产精品一区成人精品| 久久综合色一综合色88| 日本熟妇色xxxxx| 丰满岳乱妇一区二区三区| AV最新高清无码专区| 久久综合色之久久综合色| 久久夜色精品国产亚av| 国产久免费热视频在线观看| 热99久久这里只有精品| 国产在线一区二区不卡| 欧美激情a∨在线视频播放| 开心五月深深爱天天天操| 亚洲成人精品综合在线| 免费观看添你到高潮视频| 日韩一卡二卡三卡四卡五卡| 亚洲国产精品无码一区二区三区| 欧美国产激情18| 亚洲色大成网站www在线| 亚洲国产熟女一区二区三区| 久久国内精品自在自线91| 乱人伦人妻系列| 日韩精品一区二区亚洲专区| 色欲久久久天天天综合网精品| 男人的天堂av社区在线| 久久久久久综合网天天| 亚洲一区二区| 国产精品国产三级国快看| 老王亚洲AV综合在线观看| 国产午夜影视大全免费观看| 亚洲国产欧美在线观看片| 亚洲人成网站在线播放2019 | 少妇人妻偷人一区二区| 亚洲AV日韩精品久久久久| 国产亚洲精久久久久久久91 | 免费人成网站免费看视频| 人妻少妇久久中文字幕一区二区| 人妻无码久久精品|