教學課件:《Python語言程序設計基礎(第2版)_第1頁
教學課件:《Python語言程序設計基礎(第2版)_第2頁
教學課件:《Python語言程序設計基礎(第2版)_第3頁
教學課件:《Python語言程序設計基礎(第2版)_第4頁
教學課件:《Python語言程序設計基礎(第2版)_第5頁
已閱讀5頁,還剩820頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Python語言程序設計第1章 程序設計基本方法 計算機的概念 計算機是根據指令操作數據的設備具備功能性和可編程性兩個基本特性 功能性指對數據的操作,表現為數據計算、輸入輸出處理和結果存儲等。 可編程性指它可以根據一系列指令自動地、可預測地、準確地完成操作者的意圖 計算機的概念計算機硬件所依賴的集成電路規(guī)模按照摩爾定律以指數方式增長計算機運行速度也接近幾何級數快速增加計算機所能高效支撐的功能不斷豐富發(fā)展 程序設計語言經歷了從機器語言到高級語言的發(fā)展過程,朝著更接近自然語言的方向發(fā)展。計算機的概念摩爾定律是計算機發(fā)展歷史上最重要的預測法則摩爾定律指出,單位面積集成電路上可容納晶體管的數量約每兩年

2、翻一倍。由于計算機中幾乎所有重要部件都由集成電路實現 摩爾定律(Moores Law) 第一階段:1946年到1981年,“計算機系統(tǒng)結構階段” 第二階段:1982年到2007年,“計算機網絡和視窗階段” 第三階段:2008年至今,“復雜信息系統(tǒng)階段”。 第四階段:約20年后未來的某個時期開始, “人工智能階段” 計算機技術發(fā)展水平的時代性 程序設計語言程序設計語言包括編譯執(zhí)行和解釋執(zhí)行兩種方式程序設計語言是計算機能夠理解和識別用戶操作意圖的一種交互體系,它按照特定規(guī)則組織計算機指令,使計算機能夠自動進行各種運算處理。按照程序設計語言規(guī)則組織起來的一組計算機指令稱為計算機程序。 程序設計語言概

3、述機器語言機器語言是一種二進制語言,它直接使用二進制代碼表達指令,是計算機硬件可以直接識別和執(zhí)行的程序設計語言。例如:執(zhí)行數字2和3的加法,16位計算機上的機器指令為:11010010 00111011,不同計算機結構的機器指令不同 程序設計語言概述匯編語言使用助記符與機器語言中的指令進行一一對應,在計算機發(fā)展早期幫助程序員提高編程效率 例如:執(zhí)行數字2和3的加法,匯編語言指令為:add 2, 3, result,運算結果寫入result。機器語言和匯編語言都直接操作計算機硬件并基于此設計,所以它們統(tǒng)稱為低級語言。程序設計語言概述高級語言高級語言區(qū)別于低級語言在于,高級語言是接近自然語言的一種

4、計算機程序設計語言,更容易地描述計算問題并利用計算機解決計算問題。 例如:執(zhí)行數字2和3加法的高級語言代碼為:result = 2 + 3程序設計語言概述高級語言按照計算機執(zhí)行方式的不同可分成兩類靜態(tài)語言腳本語言這里所說的執(zhí)行方式指計算機執(zhí)行一個程序的過程,靜態(tài)語言采用編譯執(zhí)行,腳本語言采用解釋執(zhí)行。 編譯和解釋編譯是將源代碼轉換成目標代碼的過程,通常,源代碼是高級語言代碼,目標代碼是機器語言代碼,執(zhí)行編譯的計算機程序稱為編譯器編譯和解釋解釋是將源代碼逐條轉換成目標代碼同時逐條運行目標代碼的過程。執(zhí)行解釋的計算機程序稱為解釋器。編譯和解釋編譯是一次性地翻譯,一旦程序被編譯,不再需要編譯程序或者

5、源代碼。對于相同源代碼,編譯所產生的目標代碼執(zhí)行速度更快。目標代碼不需要編譯器就可以運行,在同類型操作系統(tǒng)上使用靈活。編譯和解釋解釋則在每次程序運行時都需要解釋器和源代碼。解釋執(zhí)行需要保留源代碼,程序糾錯和維護十分方便。只要存在解釋器,源代碼可以在任何操作系統(tǒng)上運行,可移植性好 編譯和解釋為什么要學習計算機編程?因為“編程是件很有趣的事兒”!計算機編程計算機編程計算思維是區(qū)別于以數學為代表的邏輯思維和以物理為代表的實證思維的第三種思維模式。編程是一個求解問題的過程首先需要分析問題,抽象內容之間的交互關系設計利用計算機求解問題的確定性方法,進而通過編寫和調試代碼解決問題這是從抽象問題到解決問題的

6、完整過程。 Python語言概述Python語言的誕生Guido van RossumPython語言創(chuàng)立者2002年,Python 2.x2008年,Python 3.x使用Python語言編寫的Hello程序只有一行代碼 print(“Hello World”)第一行的“”是Python語言運行環(huán)境的提示符第二行是Python語句的執(zhí)行結果 編寫Hello程序print(Hello World)Hello World#include int main(void)printf(Hello Worldn);return 0;一般來說,同樣功能的程序,Python語言實現的代碼行數僅相當于C語言

7、的1/5至1/10,簡潔程度取決于程序的復雜度和規(guī)模。C語言的Hello程序 腳本語言 + 語句執(zhí)行 例1: print(“Hello World!大家好!) 例2: sum = 99999 * 99999 print(sum)Python語言的優(yōu)勢 例3: months=JanFebMarAprMayJunJulAugSepOctNovDec n = 4 monthAbbrev = months(n-1)*3:(n-1)*3+3 print(monthAbbrev)Python語言的優(yōu)勢簡潔 + 強制可讀性例4: def mean(numbers): s = 0.0 for num in n

8、umbers: s = s + num return s / len(numbers) nums = 0,1,2,3,4,5,6,7,8,9 print(mean(nums)Python語言的優(yōu)勢跨平臺 + 開源/目前有93561個開源庫,覆蓋各類計算問題例5: from random import random rnd = random()*10 print(rnd)Python語言的優(yōu)勢Python語言的優(yōu)勢:面向過程 + 面向對象靈活的介紹程序設計理念Python語言的優(yōu)勢:圖形界面Windows窗口玫瑰花Python語言的優(yōu)勢Python語言特點 Python語言是通用語言 Pytho

9、n語言是腳本語言 Python語言是開源語言 Python語言是跨平臺語言 Python語言是多模型語言Python開發(fā)環(huán)境配置安裝 到Python主頁下載并安裝Python基本開發(fā)和運行環(huán)境,網址:/downloads/ 根據操作系統(tǒng)不同選擇不同版本 下載相應的Python 3.0系列版本程序安裝安裝啟動方法1:啟動Windows命令行工具,輸入python啟動方法2:調用IDLE來啟動Python圖形化運行環(huán)境啟動方法3:按照語法格式編寫代碼,編寫可以用任何文本編輯器,保存為文件。啟動方法4:打開IDLE,點擊Ctrl+N打開一個新窗口,輸入語句并保存,使用快鍵建F5即可運行該程序啟動方法

10、5:將Python集成到Eclipse、PyCharm等面向較大規(guī)模項目開發(fā)的集成開發(fā)環(huán)境中Hello程序采用上述某個方法,執(zhí)行: 程序的基本編寫方法輸入數據處理數據輸出數據IPO程序編寫方法輸入數據輸入(Input)是一個程序的開始。程序要處理的數據有多種來源,形成了多種輸入方式,包括:文件輸入、網絡輸入、控制臺輸入、交互界面輸出、隨機數據輸入、內部參數輸入等。IPO程序編寫方法處理數據處理(Process)是程序對輸入數據進行計算產生輸出結果的過程。計算問題的處理方法統(tǒng)稱為“算法”,它是程序最重要的組成部分。可以說,算法是一個程序的靈魂。IPO程序編寫方法輸出數據輸出(Output)是程序

11、展示運算成果的方式。程序的輸出方式包括:控制臺輸出、圖形輸出、文件輸出、網絡輸出、操作系統(tǒng)內部變量輸出等。IPO程序編寫方法微實例1.1圓面積的計算輸入:圓半徑raduis處理:計算圓面積area = * radius * radius (此處,取3.1415)輸出:圓面積area IPO程序編寫方法分析問題分析問題的計算部分劃分邊界劃分問題的功能邊界設計算法設計問題的求解算法編寫程序,編寫問題的計算程序調試測試,調試和測試程序升級維護,適應問題的升級維護使用計算機解決問題 Python語言版本更迭Python語言的版本更迭 更高級別的3.0系列不兼容早期2.0系列 2008年至今,版本更迭帶

12、來大量庫函數的升級替換,Python語言的版本更迭痛苦且漫長 到今天,Python 3.x系列已經成為主流本章小結本章具體講解了計算機的基本定義、計算機的功能性和可編程性、程序設計語言分類、編譯和解釋、Python語言的歷史和發(fā)展、配置Python開發(fā)環(huán)境等內容,最后給出了Python版本的主要區(qū)別供參考。Python實例展示from PIL import Imagefrom PIL import ImageFilterim = Image.open(np.jpg)e33 = im.filter(ImageFilter.CONTOUR)e33.save(E(33).jpg)Python語言程序

13、設計第2章 Python程序實例解析溫度轉換程序實例溫度體系溫度刻畫存在不同體系,攝氏度以1標準大氣壓下水的結冰點為0度,沸點為100度,將溫度進行等分刻畫。華氏度以1標準大氣壓下水的結冰點為32度,沸點為212度,將溫度進行等分刻畫。溫度轉換實例問題:如何利用Python程序進行攝氏度和華氏度之間的轉換 步驟1:分析問題的計算部分:采用公式轉換方式解決計算問題溫度轉換實例 步驟2:確定功能 輸入:華氏或者攝氏溫度值、溫度標識 處理:溫度轉化算法 輸出:華氏或者攝氏溫度值、溫度標識 F表示華氏度,82F表示華氏82度 C表示攝氏度,28C表示攝氏28度溫度轉換實例 步驟3:設計算法根據華氏和攝

14、氏溫度定義,轉換公式如下: C = ( F 32 ) / 1.8 F = C * 1.8 + 32 其中,C表示攝氏溫度,F表示華氏溫度溫度轉換實例 步驟4:編寫程序溫度轉換實例 步驟5:調試、運行程序在系統(tǒng)命令行上運行如下命令執(zhí)行程序: C:python TempConvert.py或者:使用IDLE打開上述文件,按F5運行(推薦)輸入數值,觀察輸出Python語法元素分析程序的格式框架Python語言采用嚴格的“縮進”來表明程序的格式框架。縮進指每一行代碼開始前的空白區(qū)域,用來表示代碼之間的包含和層次關系。 1個縮進 = 4個空格用以在Python中標明代碼的層次關系縮進是Python語言

15、中表明程序框架的唯一手段程序的格式框架單層縮進 多層縮進 注釋注釋:程序員在代碼中加入的說明信息,不被計算機執(zhí)行注釋的兩種方法:單行注釋以#開頭#Here are the comments多行注釋以 開頭和結尾 This is a multiline comment used in Python命名與保留字常量:程序中值不發(fā)生改變的元素變量:程序中值發(fā)生改變或者可以發(fā)生改變的元素Python語言允許采用大寫字母、小寫字母、數字、下劃線(_)和漢字等字符及其組合給變量命名,但名字的首字符不能是數字,中間不能出現空格,長度沒有限制注意:標識符對大小寫敏感,python和Python是兩個不同的名字

16、 命名與保留字保留字,也稱為關鍵字,指被編程語言內部定義并保留使用的標識符。程序員編寫程序不能定義與保留字相同的標識符。每種程序設計語言都有一套保留字,保留字一般用來構成程序整體框架、表達關鍵值和具有結構性的復雜語義等。掌握一門編程語言首先要熟記其所對應的保留字。命名與保留字Python 3.x保留字列表 (33個)andelifimportraiseaselseinreturnassertexceptistrybreakfinallylambdawhileclassfornonlocalwithcontinuefromnotyielddefglobalorTruedelifpass Fals

17、e None 字符串Python語言中,字符串是用兩個雙引號“ ”或者單引號 括起來的一個或多個字符。Python字符串的兩種序號體系賦值語句 Python語言中,= 表示“賦值”,即將等號右側的值計算后將結果值賦給左側變量,包含等號(=)的語句稱為“賦值語句”同步賦值語句:同時給多個變量賦值 , , = , , 賦值語句例:將變量x和y交換采用單個賦值,需要3行語句:即通過一個臨時變量t緩存x的原始值,然后將y值賦給x,再將x的原始值通過t賦值給y。采用同步賦值語句,僅需要一行代碼:input()函數獲得用戶輸入之前,input()函數可以包含一些提示性文字 = input()input(請

18、輸入: )請輸入: pythonpython input(請輸入: )請輸入: 1024.2561024.256分支語句分支語句是控制程序運行的一類重要語句,它的作用是根據判斷條件選擇程序執(zhí)行路徑,使用方式如下:if : elif : . else: eval()函數eval()函數是Python語言中一個十分重要的函數,它能夠以Python表達式的方式解析并執(zhí)行字符串,將返回結果輸出x = 1eval(x + 1)2eval(1.1 + 2.2)3.3賦值語句例:將變量x和y交換采用單個賦值,需要3行語句:即通過一個臨時變量t緩存x的原始值,然后將y值賦給x,再將x的原始值通過t賦值給y。采

19、用同步賦值語句,僅需要一行代碼:輸出函數 print()函數用來輸出字符信息,或以字符形式輸出變量。 print()函數可以輸出各種類型變量的值。 print()函數通過%來選擇要輸出的變量。實例用戶輸入兩個數字,計算它們的平均數,并輸出平均數循環(huán)語句循環(huán)語句:控制程序運行,根據判斷條件或計數條件確定一段程序的運行次數遍歷循環(huán),基本過程如下for i in range (): 例如,使某一段程序連續(xù)運行10次for i in range (10): 其中,變量i用于計數turtle庫和蟒蛇繪制程序Python小蛇Python英文是蟒蛇的意思通過下面的例子,來實踐用Python語言輸出圖形效果。

20、Python蟒蛇繪制實例Python語法元素import turtleimport是一個關鍵字,用來引入一些外部庫,這里的含義是引入一個名字叫turtle的函數庫Turtle庫Turtle庫是Python語言中一個很流行的繪制圖像的函數庫使用turtle庫,同學們頭腦里需要有這樣一個概念:想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始它根據一組函數指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制了圖形def定義函數 def 用于定義函數,這段程序中,共出現兩次def關鍵詞,包含兩個函數drawSnake和main。函數是一組代碼的集合,用于表達一個功能,或

21、者說,函數表示一組代碼的歸屬,函數名稱是這段代碼的名字。 def所定義的函數在程序中未經調用不能直接執(zhí)行,需要通過函數名調用才能夠執(zhí)行。程序運行 兩個def語句定義的函數所包含語句與def行存在縮進關系,def后連續(xù)的縮進語句都是這個函數的一部分。 由于def定義的函數在程序中未經調用不會被執(zhí)行,整個程序第一條執(zhí)行的語句是main(),它表示執(zhí)行名字為main()的函數。程序運行從而,該程序跳轉到main()函數定義的一組語句中執(zhí)行,即開始執(zhí)行 turtle.setup()語句同樣的,main()函數的最后一條語句調用了drawSnake()函數,當執(zhí)行到這條語句時,程序跳轉到drawSnak

22、e()函數中運行。Python蟒蛇程序分析Python小蛇實例程序程序運行main()函數中語句,遇到setup函數Turtle中的turtle.setup()函數用于啟動一個圖形窗口,它有四個參數turtle.setup(width, height, startx, starty)分別是:啟動窗口的寬度和高度表示窗口啟動時,窗口左上角在屏幕中的坐標位置。程序我們所使用的顯示屏幕也是一個坐標系,該坐標系以左上角為原點,向左和向下分別是x軸和y軸。蟒蛇程序代碼啟動一個1300像素寬、800像素高的窗口,該窗口的左上角是屏幕的左上角。程序Turtle中的turtle.pensize()函數表示小烏

23、龜運動軌跡的寬度。它包含一個輸入參數,這里我們把它設為30像素,用pythonsize變量表示。程序Turtle中的turtle.pencolor()函數表示小烏龜運動軌跡的顏色。它包含一個輸入參數,這里我們把它設為藍色,blue,其他顏色單詞也可以使用。Turtle采用RGB方式來定義顏色,如果希望獲得和圖片中顏色一致的小蛇,請輸入turtle.pencolor(“#3B9909”)程序Turtle中的turtle.seth(angle)函數表示小烏龜啟動時運動的方向。它包含一個輸入參數,是角度值。其中,0表示向東,90度向北,180度向西,270度向南;負值表示相反方向。程序中,我們讓小烏

24、龜向-40度啟動爬行,即:向東南方向40度。090180270程序main()函數給出了小烏龜爬行的窗體大小,爬行軌跡顏色和寬度以及初始爬行的方位。最后,調用drawSnake函數啟動繪制蟒蛇功能。drawSnake函數有四個參數,根據調用時給出的參數,分別將40傳遞給rad、80給angle,5給len,15給neckradturtle.circle()函數功能turtle.circle()函數讓小烏龜沿著一個圓形爬行參數rad描述圓形軌跡半徑的位置這個半徑在小烏龜運行的左側rad遠位置處,如果rad為負值,則半徑在小烏龜運行的右側參數angle表示小烏龜沿著圓形爬行的弧度值turtle.f

25、d()函數功能turtle.fd()函數也可以用turtle.forward()表示烏龜向前直線爬行移動表示小烏龜向前直線爬行移動,它有一個參數表示爬行的距離函數的封裝Python的函數封裝蟒蛇程序功能可以分成兩類:繪制圖形前對畫筆的設置,包括顏色、尺寸、初始位置等以及繪制Python蟒蛇的功能。由于蟒蛇繪制的功能相對獨立,可以用函數來封裝函數封裝Python語言程序設計第3章 基本數據類型 數字類型數字類型程序元素:010/10,存在多種可能 表示十進制整數值10 類似人名一樣的字符串數字類型對Python語言中數字的表示和使用 進行了定義和規(guī)范數字類型Python語言包括三種數字類型整數類

26、型浮點數類型復數類型整數類型與數學中的整數概念一致,沒有取值范圍限制pow(x, y)函數:計算xy打開IDLE 程序1:pow(2,10) , pow(2,15) 程序2:pow(2, 1000) 程序3:pow(2, pow(2,15)整數類型示例 1010, 99, -217 0 x9a, -0X89 (0 x, 0X開頭表示16進制數) 0b010, -0B101 (0b, 0B開頭表示2進制數) 0o123, -0O456 (0o, 0O開頭表示8進制數)浮點數類型帶有小數點及小數的數字 Python語言中浮點數的數值范圍存在限制,小數精度也存在限制。這種限制與在不同計算機系統(tǒng)有關浮

27、點數類型浮點數類型示例 0.0, -77., -2.17 96e4, 4.3e-3, 9.6E5 (科學計數法) 科學計數法使用字母“e”或者“E”作為冪的符號,以10為基數??茖W計數法含義如下: e = a * 10b復數類型與數學中的復數概念一致, z = a + bj, a是實數部分,b是虛數部分,a和b都是浮點類型,虛數部分用j或者J標識 示例: 12.3+4j, -5.6+7j復數類型z = 1.23e-4+5.6e+89j(實部和虛部是什么?)對于復數z,可以用z.real獲得實數部分,z.imag獲得虛數部分z.real = 0.000123 z.imag = 5.6e+89數字

28、類型的操作內置的數值運算操作符三種類型存在一種逐漸“擴展”的關系: 整數 - 浮點數 - 復數 (整數是浮點數特例,浮點數是復數特例)不同數字類型之間可以進行混合運算,運算后生成結果為最寬類型123 + 4.0 = 127.0 (整數 + 浮點數 = 浮點數)內置的數值運算操作符操作符描述x + yx與y之和x - yx與y之差x * yx與y之積x / yx與y之商x / yx與y之整數商,即:不大于x與y之商的最大整數x % yx與y之商的余數,也稱為模運算-xx的負值,即:x*(-1)+xx本身x*yx的y次冪,即:xy內置的數值運算操作符數字類型之間相互運算所生成的結果是“更寬”的類型

29、,基本規(guī)則是:整數之間運算,如果數學意義上的結果是小數,結果是浮點數;整數之間運算,如果數學意義上的結果是整數,結果是整數;整數和浮點數混合運算,輸出結果是浮點數;整數或浮點數與復數運算,輸出結果是復數。內置的數值運算函數Python解釋器提供了一些內置函數,在這些內置函數之中,有6個函數與數值運算相關 函數描述abs(x)x的絕對值divmod(x, y)(x/y, x%y),輸出為二元組形式(也稱為元組類型)pow(x, y, z)(x*y)%z,.表示該參數可以省略,即:pow(x,y),它與x*y相同round(x, ndigits)對x四舍五入,保留ndigits位小數。round(

30、x)返回四舍五入的整數值max(x1, x2, , xn)x1, x2, , xn的最大值,n沒有限定min(x1, x2, , xn)x1, x2, , xn的最小值,n沒有限定數字類型的轉換函數描述int(x)將x轉換為整數,x可以是浮點數或字符串float(x)將x轉換為浮點數,x可以是整數或字符串complex(re, im)生成一個復數,實部為re,虛部為im,re可以是整數、浮點數或字符串,im可以是整數或浮點數但不能為字符串數值運算操作符可以隱式地轉換輸出結果的數字類型例如,兩個整數采用運算符“/”的除法將可能輸出浮點數結果。此外,通過內置的數字類型轉換函數可以顯式地在數字類型之

31、間進行轉換 數字類型的轉換三種類型可以相互轉換 函數:int(), float(), complex()示例: int(4.5) = 4 (直接去掉小數部分) float(4) = 4.0 (增加小數部分) complex(4) = 4 + 0J數字類型的轉換示例:complex(4.5) = 4.5 + 0J數字類型的判斷函數:type(x),返回x的類型,適用于所有類型的判斷示例:math庫的使用math庫概述math庫是Python提供的內置數學類函數庫math庫不支持復數類型math庫一共提供了4個數學常數和44個函數。44個函數共分為4類,包括:16個數值表示函數、8個冪對數函數、1

32、6個三角對數函數和4個高等特殊函數math庫概述首先使用保留字import引用該庫第一種:import math 對math庫中函數采用math.()形式使用 第二種,from math import 對math庫中函數可以直接采用()形式使用import mathmath.ceil(10.2)11from math import floorfloor(10.2)10math庫解析math庫包括4個數學常數常數數學表示描述math.pi圓周率,值為3.141592653589793math.ee自然對數,值為2.718281828459045math.inf正無窮大,負無窮大為-math.in

33、fmath.nan非浮點數標記,NaN(Not a Number)math庫解析math庫包括16個數值表示函數函數數學表示描述math.fabs(x)返回x的絕對值math.fmod(x, y)x % y返回x與y的模math.fsum(x,y,)x+y+浮點數精確求和math.ceil(x)向上取整,返回不小于x的最小整數math.floor(x)向下取證,返回不大于x的最大整數math.factorial(x)x!返回x的階乘,如果x是小數或負數,返回ValueErrormath.gcd(a, b)返回a與b的最大公約數math.frepx(x)x = m * 2e返回(m, e),當x

34、=0,返回(0.0, 0)math.ldexp(x, i)x * 2i返回x * 2i運算值,math.frepx(x)函數的反運算math.modf(x)返回x的小數和整數部分math.trunc(x)返回x的整數部分math.copysign(x, y)用數值y的正負號替換數值x的正負號math.isclose(a,b)比較a和b的相似性,返回True或Falsemath.isfinite(x)當x為無窮大,返回True;否則,返回False math.isinf(x)當x為正數或負數無窮大,返回True;否則,返回Falsemath.isnan(x)當x是NaN,返回True;否則,返回

35、Falsemath庫解析math庫中包括8個冪對數函數函數數學表示描述math.pow(x,y)xy返回x的y次冪math.exp(x)ex返回e的x次冪,e是自然對數 math.expml(x)ex-1返回e的x次冪減1math.sqrt(x)返回x的平方根math.log(x,base)math.log1p(x)返回1+x的自然對數值math.log2(x)返回x的2對數值math.log10(x)返回x的10對數值math庫解析math庫包括六個“三角雙曲函數函數數學表示描述math.degree(x)角度x的弧度值轉角度值math.radians(x)角度x的角度值轉弧度值math.h

36、ypot(x,y)返回(x,y)坐標到原點(0,0)的距離math.sin(x)sin x返回x的正弦函數值,x是弧度值math.cos(x)cos x返回x的余弦函數值,x是弧度值math.tan(x)tan x返回x的正切函數值,x是弧度值math.asin(x)arcsin x返回x的反正弦函數值,x是弧度值math.acos(x)arccos x返回x的反余弦函數值,x是弧度值 math.atan(x)arctan x返回x的反正切函數值,x是弧度值math.atan2(y,x)arctan y/x返回y/x的反正切函數值,x是弧度值math.sinh(x)sinh x返回x的雙曲正弦

37、函數值math.cosh(x)cosh x返回x的雙曲余弦函數值math.tanh(x)tanh x返回x的雙曲正切函數值math.asinh(x)arcsinh x返回x的反雙曲正弦函數值math.acosh(x)arccosh x返回x的反雙曲余弦函數值math.atanh(x)arctanh x返回x的反雙曲正切函數值math庫解析math庫包括4個高等特殊函數函數數學表示描述math.erf(x)高斯誤差函數,應用于概率論、統(tǒng)計學等領域math.erfc(x)余補高斯誤差函數,math.erfc(x)=1 - math.erf(x)math.gamma(x)伽瑪(Gamma)函數,也叫

38、歐拉第二積分函數math.lgamma(x)ln(gamma(x)伽瑪函數的自然對數實例3: 天天向上的力量實例代碼3.1: 天天向上一年365天,以第1天的能力值為基數,記為1.0,當好好學習時能力值相比前一天提高1,當沒有學習時由于遺忘等原因能力值相比前一天下降1。每天努力和每天放任,一年下來的能力值相差多少呢?實例代碼3.1: 天天向上運行結果如下,每天努力1,一年下來將提高44%,好像不多?請繼續(xù)分析。實例代碼3.1e3.1DayDayUp365.py12345#e3.1DayDayUp365.pyimport mathdayup = math.pow(1.0 + 0.001), 36

39、5) # 提高0.001daydown = math.pow(1.0 - 0.001), 365) # 放任0.001print(向上: :.2f, 向下: :.2f.format(dayup, daydown)實例代碼3.2: 天天向上一年365天,如果好好學習時能力值相比前一天提高5,當放任時相比前一天下降5。效果相差多少呢?實例代碼3.2: 天天向上運行結果如下,每天努力5,一年下來將提高6倍!這個,不容小覷了吧?實例代碼3.2e3.2DayDayUp365.py12345#e3.2DayDayUp365.pyimport mathdayup = math.pow(1.0 + 0.005

40、), 365) # 提高0.005daydown = math.pow(1.0 - 0.005), 365) # 放任0.005print(向上: :.2f, 向下: :.2f.format(dayup, daydown)實例代碼3.3: 天天向上一年365天,如果好好學習時能力值相比前一天提高1%,當放任時相比前一天下降1%。效果相差多少呢?實例代碼3.3: 天天向上運行結果如下,每天努力1%,一年下來將提高37倍。這個相當驚人吧!實例代碼3.3e3.3DayDayUp365.py123456#e3.3DayDayUp365.pyimport mathdayfactor = 0.01dayu

41、p = math.pow(1.0 + dayfactor), 365) # 提高dayfactordaydown = math.pow(1.0 - dayfactor), 365) # 放任dayfactorprint(向上: :.2f, 向下: :.2f.format(dayup, daydown)實例代碼3.4: 天天向上一年365天,一周5個工作日,如果每個工作日都很努力,可以提高1%,僅在周末放任一下,能力值每天下降1%,效果如何呢? 實例代碼3.4: 天天向上猜猜運行結果?每周努力5天,而不是每天,一年下來,水平僅是初始的4.63倍!與每天堅持所提高的237倍相去甚遠實例代碼3.4e

42、3.4DayDayUp365.py12345678#e3.4DayDayUp365.pydayup, dayfactor = 1.0, 0.01for i in range(365):if i % 7 in 6, 0:#周六周日dayup = dayup * (1 - dayfactor)else:dayup = dayup * (1 + dayfactor)print(向上5天向下2天的力量: :.2f.format(dayup)實例代碼3.5: 天天向上如果對實例代碼3.4的結果感到意外,那自然會產生如下問題:每周工作5天,休息2天,休息日水平下降0.01,工作日要努力到什么程度一年后的水

43、平才與每天努力1%所取得的效果一樣呢?實例代碼3.5: 天天向上如果每周連續(xù)努力5天,休息2天,為了達到每天努力1%所達到的的水平,則就需要在工作日將提高的程度達到約2%,即要努力1倍才僅是為了休息2天。這就是天天向上的力量! 實例代碼3.5e3.5DayDayUp365.py12345678910111213#e3.5DayDayUp365.pydef dayUP(df):dayup = 0.01for i in range(365):if i % 7 in 6, 0:dayup = dayup * (1 -0.01 df)else:dayup = dayup * (1 + df)retur

44、n dayupdayfacotr = 0.01while (dayUP(dayfactor)37.78): dayfactor += 0.001print(每天的努力參數是: :.3f.format(dayfactor)字符串類型及其操作字符串類型字符串是用雙引號或者單引號括起來的一個或多個字符。字符串可以保存在變量中,也可以單獨存在。可以用type()函數測試一個字符串的類型字符串類型 Python語言轉義符: 輸出帶有引號的字符串,可以使用轉義符使用 輸出帶有轉移符的字符串字符串類型字符串是一個字符序列:字符串最左端位置標記為0,依次增加。字符串中的編號叫做“索引”字符串類型單個索引輔助訪

45、問字符串中的特定位置 格式為字符串類型Python中字符串索引從0開始,一個長度為L的字符串最后一個字符的位置是L-1Python同時允許使用負數從字符串右邊末尾向左邊進行反向索引,最右側索引值是-1字符串類型可以通過兩個索引值確定一個位置范圍,返回這個范圍的子串 格式: :start和end都是整數型數值,這個子序列從索引start開始直到索引end結束,但不包括end位置。字符串類型字符串之間可以通過+或*進行連接加法操作(+)將兩個字符串連接成為一個新的字符串乘法操作(*)生成一個由其本身字符串重復連接而成的字符串字符串類型len()函數能否返回一個字符串的長度字符串類型的轉換大多數數據

46、類型都可以通過str()函數轉換為字符串字符串使用實例輸入一個月份數字,返回對應月份名稱縮寫 這個問題的IPO模式是: 輸入:輸入一個表示月份的數字(1-12) 處理:利用字符串基本操作實現該功能 輸出:輸入數字對應月份名稱的縮寫字符串使用實例將所有月份名稱縮寫存儲在字符串中在字符串中截取適當的子串來查找特定月份 找出在哪里切割子串 每個月份的縮寫都由3個字母組成,如果pos表示一個月份的第一個字母,則monthspos:pos+3表 示這個月份的縮寫,即: monthAbbrev = monthspos:pos+3字符串使用實例 月份 字符串中位置Jan 1 0Feb 2 3Mar 3 6A

47、pr 4 9字符串使用實例可以通過 for 和 in 組成的循環(huán)來遍歷字符串中每個字符格式如下: for in : 操作字符串的操作用轉義符可以在字符串中表達一些不可直接打印的信息例如:用n表示換行 字符串HellonWorldnnGoodbye 32n 用print()函數打印后的輸出效果如下:HelloWorldGoodbye 32字符串的操作內置的字符串處理函數操作含義+連接*重復 索引 : 剪切l(wèi)en()長度.upper()字符串中字母大寫.lower()字符串中字母小寫.strip()去兩邊空格及去指定字符.split()按指定字符分割字符串為數組.join()連接兩個字符串序列.f

48、ind()搜索指定字符串.replace()字符串替換for in 字符串迭代內置的字符串處理函數微實例3.2:愷撒密碼。凱撒密碼是古羅馬凱撒大帝用來對軍事情報進行加密的算法,它采用了替換方法對信息中的每一個英文字符循環(huán)替換為字母表序列該字符后面第三個字符,對應關系如下:原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C原文字符P,其密文字符C滿足如下條件:C = ( P + 3 ) mod 26解密方法反之,滿足:P = ( C

49、 3 ) mod 26內置的字符串處理函數微實例3.2m3.2 CaesarCode.py1234567plaincode = input(請輸入明文: )for p in plaincode: if ord(a) = ord(p) 請輸入明文: python is an excellent language.sbwkrq lv dq hafhoohqw odqjxdjh.微實例運行結果如下:內置的字符串處理方法方法描述str.lower()返回字符串str的副本,全部字符小寫str.upper()返回字符串str的副本,全部字符大寫str.islower() 當str所有字符都是小寫時,返回

50、True,否則Falsestr.isprintable()當str所有字符都是可打印的,返回True,否則Falsestr. isnumeric()當str所有字符都是字符時,返回True,否則Falsestr.isspace() 當str所有字符都是空格,返回True,否則Falsestr.endswith(suffix,start,end)strstart: end 以suffix結尾返回True,否則返回Falsestr.startswith(prefix, start, end) strstart: end 以suffix開始返回True,否則返回Falsestr.split(sep=

51、None, maxsplit=-1)返回一個列表,由str根據sep被分割的部分構成str.count(sub,start,end)返回strstart: end中sub子串出現的次數str.replace(old, new, count)返回字符串str的副本,所有old子串被替換為new,如果count給出,則前count次old出現被替換str.center(width, fillchar)字符串居中函數,詳見函數定義str.strip(chars) 返回字符串str的副本,在其左側和右側去掉chars中列出的字符str.zfill(width) 返回字符串str的副本,長度為width

52、,不足部分在左側添0 str.format()返回字符串str的一種排版格式,3.6節(jié)將詳細介紹str.join(iterable)返回一個新字符串,由組合數據類型(見第6章)iterable變量的每個元素組成,元素間用str分割字符串類型的格式化 format()方法的基本使用字符串format()方法的基本使用格式是:.format() format()方法的基本使用 format()方法的格式控制format()方法中模板字符串的槽除了包括參數序號,還可以包括格式控制信息。此時,槽的內部樣式如下:: 其中,格式控制標記用來控制參數顯示時的格式 。格式控制標記包括:,6個字段,這些字段都是

53、可選的,可以組合使用,這里按照使用方式逐一介紹。文本進度條簡單的開始利用print()函數實現簡單的非刷新文本進度條基本思想是按照任務執(zhí)行百分比將整個任務劃分為100個單位,每執(zhí)行N%輸出一次進度條。每一行輸出包含進度百分比,代表已完成的部分(*)和未完成的部分(.)的兩種字符,以及一個跟隨完成度前進的小箭頭,風格如下:%10 *-.簡單的開始實例代碼4.1e4.1TextProgressBar.py12345678910#e4.1TextProgressBar.pyimport timescale = 10print(-執(zhí)行開始-)for i in range(scale+1): a, b

54、= * * i,. * (scale - i) c = (i/scale)*100 print(%:3.0f- .format (c, a, b) time.sleep(0.1)print(-執(zhí)行結束-)簡單的開始-執(zhí)行開始-% 0 -.%10 *-.%20 *-.%30 *-.%40 *-.%50 *-.%60 *-.%70 *-.%80 *-.%90 *-.%100*-執(zhí)行結束-程序的輸出效果如下圖: 單行動態(tài)刷新實例代碼4.2e4.2TextProgressBar.py12345#e4.2TextProgressBar.pyimport timefor i in range(101):

55、print(r:2%.format(i), end=) time.sleep(0.05)單行動態(tài)刷新 0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25% 26% 27% 28% 29% 30% 31% 32% 33% 34% 35% 36% 37% 38% 39% 40% 41% 42% 43% 44% 45% 46% 47% 48% 49% 50% 51% 52% 53% 54% 55% 56% 57% 58% 59% 60% 61% 62% 63% 64%

56、 65% 66% 67% 68% 69% 70% 71% 72% 73% 74% 75% 76% 77% 78% 79% 80% 81% 82% 83% 84% 85% 86% 87% 88% 89% 90% 91% 92% 93% 94% 95% 96% 97% 98% 99%100%上述程序在IDLE中的執(zhí)行效果如下。為什么輸出沒有單行刷新呢?這是因為IDLE本身屏蔽了單行刷新功能,如果希望獲得刷新效果,請使用控制臺命令行執(zhí)行e4.2TextProgressBar.py程序。以Windows系統(tǒng)為例,啟動命令行工具(system32cmd.exe),選擇到e4.2TextProgressB

57、ar.py文件所在目錄執(zhí)行 帶刷新的文本進度條實例代碼4.3e4.3TextProgressBar.py12345678910111213#e4.3TextProgressBar.pyimport timescale = 50print(執(zhí)行開始.center(scale/2,-)t = time.clock()for i in range(scale+1): a = * * i b = . * (scale - i) c = (i/scale)*100 t -= time.clock() print(r:3.0f%-:.2fs.format(c,a,b,-t),end=) time.slee

58、p(0.05)print(n+執(zhí)行結束.center(scale/2,-)帶刷新的文本進度條采用命令行的執(zhí)行上述文件,效果如下::python e4.3TextProgressBar.py-執(zhí)行開始-100%*- 65.71s-執(zhí)行結束-五花八門的進度條設計函數設計名稱趨勢設計函數LinerConstantf(x) = xEarly PauseSpeeds upf(x) = x+(1-sin(x*2+/2)/-8Late PauseSlows downf(x) = x+(1-sin(x*2+/2)/8Slow WavyConstantf(x) = x+sin(x*5)/20Fast WavyC

59、onstantf(x) = x+sin(x*20)/80PowerSpeeds upf(x) = (x+(1-x)*0.03)2Inverse PowerSlows downf(x) = 1+(1-x)1.5 *-1Fast PowerSpeeds upf(x) = (x+(1-x)/2)8Inv. Fast PowerSlows downf(x) = 1+(1-x)3 *-1Python語言程序設計第4章 程序的控制結構程序的基本結構程序的流程圖程序流程圖用一系列圖形、流程線和文字說明描述程序的基本操作和控制流程,它是程序分析和過程描述的最基本方式。流程圖的基本元素包括7種程序的流程圖程序流

60、程圖示例:由連接點A連接的一個程序 程序的基本結構順序結構是程序的基礎,但單一的順序結構不可能解決所有問題。程序由三種基本結構組成:順序結構分支結構循環(huán)結構這些基本結構都有一個入口和一個出口。任何程序都由這三種基本結構組合而成程序的基本結構順序結構是程序按照線性順序依次執(zhí)行的一種運行方式,其中語句塊1S1和語句塊S2表示一個或一組順序執(zhí)行的語句 程序的基本結構分支結構是程序根據條件判斷結果而選擇不同向前執(zhí)行路徑的一種運行方式,包括單分支結構和二分支結構。由二分支結構會組合形成多分支結構 程序的基本結構循環(huán)結構是程序根據條件判斷結果向后反復執(zhí)行的一種運行方式,根據循環(huán)體觸發(fā)條件不同,包括條件循環(huán)

溫馨提示

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

評論

0/150

提交評論