Python程序設(shè)計(jì)語言(第二版)(微課版)課件 李美珊 01-06 計(jì)算機(jī)基礎(chǔ)與Python概述 - 函數(shù)_第1頁
Python程序設(shè)計(jì)語言(第二版)(微課版)課件 李美珊 01-06 計(jì)算機(jī)基礎(chǔ)與Python概述 - 函數(shù)_第2頁
Python程序設(shè)計(jì)語言(第二版)(微課版)課件 李美珊 01-06 計(jì)算機(jī)基礎(chǔ)與Python概述 - 函數(shù)_第3頁
Python程序設(shè)計(jì)語言(第二版)(微課版)課件 李美珊 01-06 計(jì)算機(jī)基礎(chǔ)與Python概述 - 函數(shù)_第4頁
Python程序設(shè)計(jì)語言(第二版)(微課版)課件 李美珊 01-06 計(jì)算機(jī)基礎(chǔ)與Python概述 - 函數(shù)_第5頁
已閱讀5頁,還剩295頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一章計(jì)算機(jī)基礎(chǔ)和Python概述學(xué)習(xí)目標(biāo)了解計(jì)算機(jī)系統(tǒng)及程序設(shè)計(jì)語言了解Python語言的發(fā)展及現(xiàn)狀、特點(diǎn)和應(yīng)用領(lǐng)域掌握Python運(yùn)行環(huán)境的安裝與配置、編碼規(guī)范、庫的使用目錄計(jì)算機(jī)基礎(chǔ)概述程序設(shè)計(jì)語言Python語言簡介重Python環(huán)境的安裝與配置重1234Python編碼規(guī)范5重難難6第三方庫的安裝(pip工具)擴(kuò)展庫的導(dǎo)入與使用7難重重知識導(dǎo)圖為什么我們需要計(jì)算機(jī)?認(rèn)識自然、分析自然規(guī)律,量化計(jì)算。引言Introduction為什么我們需要計(jì)算機(jī)?人類資源分配、人類活動(dòng)管理,優(yōu)化計(jì)算。引言Introduction為什么我們需要計(jì)算機(jī)?數(shù)學(xué)、邏輯、哲學(xué),推理演算。引言Introduction為什么我們需要計(jì)算機(jī)?網(wǎng)絡(luò)更是提供了人類多維度的溝通和更多的生活、工作模式。引言Introduction1.1計(jì)算機(jī)系統(tǒng)概述硬件系統(tǒng)主機(jī)外部設(shè)備CPU內(nèi)存儲器外存儲器輸入設(shè)備輸出設(shè)備運(yùn)算器控制器存儲器系統(tǒng)軟件應(yīng)用軟件計(jì)算機(jī)系統(tǒng)軟件系統(tǒng)計(jì)算機(jī)系統(tǒng)1.1.1馮·諾依曼結(jié)構(gòu)馮·諾依曼(JohnVonNeumann,1903~1957)

美籍匈牙利數(shù)學(xué)家。馮·諾伊曼對計(jì)算機(jī)的主要貢獻(xiàn):提出了以二進(jìn)制和存儲程序工作原理為基礎(chǔ)的現(xiàn)代計(jì)算機(jī)的體系結(jié)構(gòu)。它的特點(diǎn):1)計(jì)算機(jī)由五大基本部件:控制器、運(yùn)算器、存儲器、輸入設(shè)備、輸出設(shè)備;2)采用二進(jìn)制數(shù)表示指令和數(shù)據(jù);3)將程序和數(shù)據(jù)存放在計(jì)算機(jī)的內(nèi)存中,并讓計(jì)算機(jī)自動(dòng)執(zhí)行;4)機(jī)器以運(yùn)算器為核心,輸入輸出設(shè)備與存儲器的數(shù)據(jù)傳送通過運(yùn)算器。控制器負(fù)責(zé)整個(gè)計(jì)算處理的流程控制運(yùn)算器負(fù)責(zé)主要負(fù)責(zé)數(shù)據(jù)的計(jì)算和邏輯判斷存儲器負(fù)責(zé)存放了需要處理的數(shù)據(jù)及指令存儲程序和程序的自動(dòng)執(zhí)行1.1.2計(jì)算機(jī)硬件系統(tǒng)

計(jì)算機(jī)硬件系統(tǒng)是組成計(jì)算機(jī)系統(tǒng)的各種物理設(shè)備的總稱,是計(jì)算機(jī)系統(tǒng)的物質(zhì)基礎(chǔ),是看得見、摸得著的一些實(shí)實(shí)在在的有形實(shí)體。1.存儲器

存儲器分為主存儲器和輔助存儲器。主存可直接與CPU交換信息,輔存又叫外存。2.運(yùn)算器

運(yùn)算器是計(jì)算機(jī)中處理數(shù)據(jù)的核心部件,主要由執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算的算術(shù)邏輯單元ALU(ArithmeticLogicUnit)、存放操作數(shù)和中間結(jié)果的寄存器組以及連接各部件的數(shù)據(jù)通路組成,用以完成各種算術(shù)運(yùn)算和邏輯運(yùn)算。3.控制器

控制器是計(jì)算機(jī)中控制管理的核心部件。CPU和主存儲器是信息加工處理的主要部件,通常把這兩個(gè)部分合稱為主機(jī)。4.輸入輸出設(shè)備

輸入/輸出設(shè)備(簡稱I/O設(shè)備)又稱為外部設(shè)備,它是與計(jì)算機(jī)主機(jī)進(jìn)行信息交換,實(shí)現(xiàn)人機(jī)交互的硬件環(huán)境。1.1.3計(jì)算機(jī)軟件系統(tǒng)

軟件包括可在計(jì)算機(jī)上運(yùn)行的各種程序、數(shù)據(jù)及其有關(guān)文檔。通常把計(jì)算機(jī)軟件系統(tǒng)分為系統(tǒng)軟件和應(yīng)用軟件兩大類。1.系統(tǒng)軟件

系統(tǒng)軟件是維持計(jì)算機(jī)系統(tǒng)的正常運(yùn)行,支持用戶應(yīng)用軟件運(yùn)行的基礎(chǔ)軟件,包括操作系統(tǒng)、語言處理程序和數(shù)據(jù)庫管理系統(tǒng)等。2.應(yīng)用軟件

應(yīng)用軟件也稱為應(yīng)用程序,是專業(yè)軟件公司針對應(yīng)用領(lǐng)域的需求,為解決某些實(shí)際問題而研制開發(fā)的程序,或由用戶根據(jù)需要編制的各種實(shí)用程序。應(yīng)用程序通常需要系統(tǒng)軟件的支持,才能在計(jì)算機(jī)硬件上有效運(yùn)行。例如,文字處理軟件、電子表格軟件、制圖軟件、網(wǎng)頁制作軟件、財(cái)務(wù)管理軟件等均屬于應(yīng)用軟件。1.2程序設(shè)計(jì)語言程序設(shè)計(jì)語言:是計(jì)算機(jī)能夠理解和識別用戶操作意圖的一種交互體系;它按照特定規(guī)則組織計(jì)算機(jī)指令,使計(jì)算機(jī)能夠自動(dòng)進(jìn)行各種運(yùn)算處理。計(jì)算機(jī)程序按照程序設(shè)計(jì)語言規(guī)則組織起來的一組計(jì)算機(jī)指令。1.2程序設(shè)計(jì)語言機(jī)器語言直接使用二進(jìn)制代碼表達(dá)指令,計(jì)算機(jī)硬件可以直接識別和執(zhí)行。匯編語言使用助記符與機(jī)器語言中的指令進(jìn)行一一對應(yīng),在計(jì)算機(jī)發(fā)展早期幫助程序員提高編程效率高級語言接近自然語言的一種計(jì)算機(jī)程序設(shè)計(jì)語言,更容易地描述計(jì)算問題并利用計(jì)算機(jī)解決計(jì)算問題。低級語言8086CPU指令系統(tǒng)機(jī)器語言和匯編語言PUSHBPMOVEBP,SPDECSPPUSHSIPUSHDIMOVEDI,0005MOVESI,0003MOVEAX,DIADDAX,SI010101011000101111101100010011000101011001010111101111110000010100000000101111100000001100000000100010111100011111000110求:5+3Pascalvari,j,k:integer;begini:=5;j:=3;k:=i+j;end高級語言:求5+3的值Cintmain(){inti,j,k;i=5;j=3;k=i+j;printf(“%d”,k)return0;}Pythoni=5j=3k=i+jprint(k)JavapublicclassAddition{publicstaticvoidmain(Stringargs[]){inti=5;intj=3;intk;k=i+j;System.out.println(k);}}1.2程序設(shè)計(jì)語言1.2程序設(shè)計(jì)語言高級語言低級語言翻譯編譯方式和解釋方式程序的執(zhí)行方式計(jì)算機(jī)編程方法1分析問題2建立數(shù)學(xué)模型3設(shè)計(jì)算法4編寫代碼01020304計(jì)算機(jī)編程方法輸入(input)處理(process)輸出(output)圓半徑r圓面積area計(jì)算圓面積:area=π*r*rr=eval(input()) area=3.14*r*r print(area) 1.3Python語言簡介荷蘭人Guido發(fā)明1989正式發(fā)布1991Python2.0發(fā)布2000Python3.0發(fā)布2008Python3.132024Python的創(chuàng)始人吉多·范羅蘇姆,在1989年的圣誕節(jié)期間,為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個(gè)新的腳本解釋程序,作為ABC語言(一種教學(xué)編程語言)的一種繼承。2025年1月TIOBE排行榜Python語言特點(diǎn)Python支持以交互模式運(yùn)行程序,包含便捷的高級數(shù)據(jù)類型,并且可以用C語言或C++來進(jìn)行擴(kuò)展,能扣快速編寫程序并即時(shí)滿足實(shí)際需求。Python既支持面向過程的編程有支持面向?qū)ο蟮木幊?,Python還支持繼承、重載,有利于代碼的復(fù)用性。Python的標(biāo)準(zhǔn)庫功能很強(qiáng)大,再加上不同應(yīng)用領(lǐng)域眾多開源的第三方程序庫,給開發(fā)者提供了很多便利。Python的語法較為簡單,容易學(xué)習(xí)容易理解,同時(shí)網(wǎng)絡(luò)上學(xué)習(xí)資源也很豐富。簡單易學(xué)

面向?qū)ο罂梢浦残砸子谑褂觅Y源豐富

免費(fèi)開源Python是FLOSS(自由/開放源碼軟件)之一,使用者只要保留版權(quán)信息即可任意使用和修改源代碼,并將其用于各個(gè)領(lǐng)域??梢栽谌魏伟惭b解釋器的計(jì)算機(jī)環(huán)境中執(zhí)行;可以不經(jīng)修改地實(shí)現(xiàn)跨平臺運(yùn)行。Python語言的應(yīng)用領(lǐng)域Python語言是一個(gè)通用編程語言,可用于編寫各領(lǐng)域的應(yīng)用程序,這為該語言提供了廣闊的應(yīng)用空間。從科學(xué)計(jì)算、數(shù)據(jù)處理到人工智能、網(wǎng)絡(luò)爬蟲、機(jī)器人等,Python語言都能夠發(fā)揮重要作用,而且很出色。Python語言的應(yīng)用領(lǐng)域誰在使用Python1.4Python環(huán)境的安裝與配置到Python主頁下載并安裝Python基本開發(fā)和運(yùn)行環(huán)境,網(wǎng)址:/downloads/

根據(jù)操作系統(tǒng)不同選擇不同版本下載相應(yīng)的Python3.0系列版本程序1.4Python環(huán)境的安裝與配置1.4Python環(huán)境的安裝與配置1.4Python環(huán)境的安裝與配置交互方式方法1:命令行式運(yùn)行Python。提示符1.4Python環(huán)境的安裝與配置交互方式方法2:調(diào)用IDLE來啟動(dòng)Python圖形化運(yùn)行環(huán)境1.4Python環(huán)境的安裝與配置文件方式:在IDLE的菜單欄中選擇“File→NewFile”選項(xiàng)1.5編碼規(guī)范(1)縮進(jìn)Python對代碼縮進(jìn)是硬性要求,嚴(yán)格使用縮進(jìn)來體現(xiàn)代碼的邏輯從屬關(guān)系。一般以4個(gè)空格為一個(gè)縮進(jìn)單位,并且同一個(gè)級別的代碼塊的縮進(jìn)量必須相同。在函數(shù)定義、類定義、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、異常處理結(jié)構(gòu)和with語句等結(jié)構(gòu)中,對應(yīng)的函數(shù)體或語句塊都必須有相應(yīng)的縮進(jìn)。python程序是依靠代碼塊的縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系的,縮進(jìn)結(jié)束就表示一個(gè)代碼塊結(jié)束了。

1.5編碼規(guī)范(2)注釋

以符號#開始,表示本行#之后的內(nèi)容為注釋。包含在一對三引號'''...'''或"""..."""之間且不屬于任何語句的內(nèi)容將被解釋器認(rèn)為是注釋。(文件方式)(4)符號

在Python語言所有的語法符號,如冒號“:”、單引號“'”、雙引號“"”和小括號()等,都必須在英文輸入法下輸入,字符串中的符號除外。(3)Python語言區(qū)分大小寫例如:Num、num、NUM是完全不同的三個(gè)名稱。1.5編碼規(guī)范(5)換行符如果一行語句太長,可以在尾部添加上反斜杠“\”來換行分成多行,但是更建議使用括號來包含多行內(nèi)容。(6)建議最好在函數(shù)定義和一段完整的功能代碼之后增加2個(gè)空行,在運(yùn)算符兩側(cè)各增加一個(gè)空格,逗號后面增加一個(gè)空格。1.6第三方庫的安裝pip命令示例說

明piplist顯示當(dāng)前已安裝的所有模塊pipinstallSomePackage[==version]在線安裝SomePackage模塊的指定版本pipinstall--upgradeSomePackage升級SomePackage模塊pipuninstallSomePackage[==version]卸載SomePackage1.6第三方庫的安裝例如:安裝常用科學(xué)計(jì)算的擴(kuò)展庫numpy1.7擴(kuò)展庫的導(dǎo)入與使用(1)語法格式:import

模塊名[as別名]>>>importmath#導(dǎo)入標(biāo)準(zhǔn)庫math>>>math.sin(0.5)#求0.5(單位是弧度)的正弦0.479425538604203>>>importrandom#導(dǎo)入標(biāo)準(zhǔn)庫random>>>n=random.randint(1,100)#獲得[1,100]區(qū)間上的隨機(jī)整數(shù)>>>importturtleast#導(dǎo)入標(biāo)準(zhǔn)庫turtle>>>t.circle(50)#繪制半徑為50的圓>>>importos.pathaspath#導(dǎo)入標(biāo)準(zhǔn)庫os.path,并設(shè)置別名為path>>>path.isfile(r'C:\windows\notepad.exe')True>>>importnumpyasnp#導(dǎo)入擴(kuò)展庫numpy,并設(shè)置別名為np>>>a=np.array((1,2,3,4))#通過模塊的別名來訪問其中的對象>>>aarray([1,2,3,4])1.7擴(kuò)展庫的導(dǎo)入與使用(2)語法格式:from

模塊名import

方法名[as別名]>>>frommathimportsin#只導(dǎo)入模塊中的指定對象,訪問速度略快>>>sin(1)0.8414709848078965>>>frommathimportsinass

#給導(dǎo)入的對象起個(gè)別名>>>s(1)0.8414709848078965>>>fromos.pathimportisfile>>>isfile(r'C:\windows\notepad.exe')True(3)語法格式:from

模塊名import

*>>>frommathimport*#導(dǎo)入標(biāo)準(zhǔn)庫math中所有對象>>>sin(3)#求正弦值0.1411200080598672本章小結(jié)本章首先簡單介紹了計(jì)算機(jī)的硬件系統(tǒng)、軟件系統(tǒng)與程序設(shè)計(jì)語言,詳細(xì)介紹了Python語言的發(fā)展及現(xiàn)狀、特點(diǎn)與應(yīng)用領(lǐng)域、Python開發(fā)環(huán)境的安裝與配置,最后講解Python語言編碼規(guī)范、第三方庫的安裝和擴(kuò)展庫的導(dǎo)入及使用。學(xué)習(xí)目標(biāo):掌握Python語言的數(shù)據(jù)類型掌握Python語言的保留字,變量的命名和賦值掌握Python語言的基本輸入輸出函數(shù)掌握Python語言表達(dá)式的運(yùn)算次序,并能夠計(jì)算出結(jié)果知識導(dǎo)圖第二章

基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式2.1引例2.2基本數(shù)據(jù)類型2.3標(biāo)識符和保留字2.4變量和賦值語句2.5基本輸入與輸出2.6運(yùn)算符和表達(dá)式2.7混合運(yùn)算和數(shù)值類型的轉(zhuǎn)換2.1引例——華氏度攝氏度轉(zhuǎn)換分析需求

利用程序進(jìn)行溫度轉(zhuǎn)換,由用戶輸入一個(gè)溫度值,程序?qū)⑥D(zhuǎn)換后的溫度輸出出來。這里要注意的是,如果輸入的是攝氏度,那程序需要轉(zhuǎn)換為華氏度輸出,如果輸入的是華氏度,那程序就要轉(zhuǎn)換成攝氏度輸出。設(shè)計(jì)算法

輸入:首先確定要輸入一個(gè)數(shù)字的溫度值,另外輸入時(shí)還要體現(xiàn)的是這個(gè)數(shù)字是攝氏度還是華氏度,因此在數(shù)字前我們加上一個(gè)字母標(biāo)識。例如用C24表示攝氏24度,F(xiàn)72表示華氏72度。也就是說,每次輸入內(nèi)容中既有溫度體系標(biāo)識,還有需要轉(zhuǎn)換的溫度值。

計(jì)算:首先要根據(jù)輸入溫度體系標(biāo)識,也就是輸入內(nèi)容中的首字符,如果首字符是C,則使用公式F=C*1.8+32計(jì)算得到華氏度,如果首字符是F,則使用公式C=(F–32)/1.8計(jì)算得到攝氏度。

輸出:輸出標(biāo)識和溫度值2.1引例——華氏度攝氏度轉(zhuǎn)換編寫程序#eg02-01.py#溫度轉(zhuǎn)換程序temperature=input('請輸入溫度標(biāo)識和溫度值:')#輸入要轉(zhuǎn)換的溫度iftemperature[0]in['c','C']:#判斷首字符是否為字母C和cf=eval(temperature[1:])*1.8+32#計(jì)算華氏度print("華氏溫度為:{:.2f}".format(f))#輸出華氏度eliftemperature[0]in['f','F']:#判斷首字符是否為字母F和fc=((eval(temperature[1:])-32)/1.8)#計(jì)算攝氏度print("攝氏溫度為:{:.2f}".format(c))#輸出攝氏度else:#首字符不是上訴四個(gè)字母時(shí)print("輸入錯(cuò)誤!請重新運(yùn)行。")#提示錯(cuò)誤信息2.1引例——華氏度攝氏度轉(zhuǎn)換輸入與編輯程序

啟動(dòng)IDLE后,選擇“File”,再選擇”NewFile“,再彈出的新窗口內(nèi)輸入以上程序,保存為eg02-01.py。運(yùn)行調(diào)試

選擇“Run”,再選擇”RunModule“。請輸入溫度標(biāo)識和溫度值:C24華氏溫度為:75.202.2基本數(shù)據(jù)類型數(shù)值類型int,float,complex文本類型str邏輯類型bool序列類型list,tuple,range集合類型set,frozenset映射類型dict二進(jìn)制類型bytes,bytearray,memoryview2.2.1數(shù)值類型----整型

整型(int)就是不帶小數(shù)點(diǎn)的數(shù)字,Python中的整數(shù)包括正整數(shù)、0和負(fù)整數(shù)。Python整數(shù)的取值范圍可是說是無限的(僅受限于運(yùn)行Python的計(jì)算機(jī)的硬件)??梢允褂靡韵逻M(jìn)制來表示整數(shù):十進(jìn)制形式

我們平時(shí)所見的整數(shù)就是十進(jìn)制形式,它由0-9十個(gè)數(shù)字組成。例如:789,-35。二進(jìn)制形式

由0和1兩個(gè)數(shù)字組成,書寫時(shí)以0b或0B開頭。例如:0b1001,-0B111。八進(jìn)制形式

八進(jìn)制整數(shù)由0-7八個(gè)數(shù)字組成,以0o或0O開頭。注意,第一個(gè)符號是數(shù)字0,第二個(gè)符號是大寫或小寫的字母“O”。例如:0o61,-0O25。十六進(jìn)制形式

由0-9十個(gè)數(shù)字和A-F(或a-f)六個(gè)字母組成,書寫時(shí)以0x或0X開頭。例如:0x2f,0X2E。2.2.1數(shù)值類型----浮點(diǎn)型

浮點(diǎn)型(float)與數(shù)學(xué)中的實(shí)數(shù)的基本類似,用來表示帶有小數(shù)的數(shù)值。Python中浮點(diǎn)數(shù)必須帶有小數(shù)部分,小數(shù)部分可以是0。浮點(diǎn)數(shù)有兩種表示方法:十進(jìn)制形式

十進(jìn)制形式就是我們平時(shí)看到的小數(shù)形式,例如12.3、123.0、0.123。

注意:書寫時(shí)必須包含一個(gè)小數(shù)點(diǎn),如上例中123.0,如果省略寫成123,就會被Python當(dāng)作整數(shù)處理。指數(shù)形式

指數(shù)形式的寫法為:aEb或aeba為尾數(shù)部分,書寫為十進(jìn)制形式;b為指數(shù)部分,書寫為十進(jìn)制整數(shù);E或e是固定的字符,用于分割尾數(shù)部分和指數(shù)部分。整個(gè)表達(dá)式等價(jià)于a×10b。例如:3.84E8=3.84×108,其中3.84是尾數(shù),8是指數(shù)。只要寫成指數(shù)形式就是浮點(diǎn)數(shù),即使它的最終值看起來像一個(gè)整數(shù)。例如:2E3等價(jià)于2000.0,2E3是一個(gè)浮點(diǎn)數(shù)。2.2.1數(shù)值類型----復(fù)數(shù)

復(fù)數(shù)(Complex)是Python的內(nèi)置類型,直接書寫即可以使用。換句話說,Python語言本身就支持復(fù)數(shù),而不需要依賴于標(biāo)準(zhǔn)庫或者第三方庫。

復(fù)數(shù)由實(shí)部(real)和虛部(imag)構(gòu)成,在Python中,復(fù)數(shù)的虛部以j或者J作為后綴,具體格式為:a+bja表示實(shí)部,b表示虛部。例如:5+0.6j就是一個(gè)復(fù)數(shù)。2.2.2字符串類型Python中的字符串必須由單引號(')、雙引號(")、三引號('''或""")包圍,字符串的開始和結(jié)束必須為相同類型的引號。格式為:‘字符串內(nèi)容’

“字符串內(nèi)容”

'''字符串內(nèi)容''‘或"""字符串內(nèi)容"""

字符串的內(nèi)容可以包含英文字母、標(biāo)點(diǎn)、特殊符號、中文、日文等計(jì)算機(jī)系統(tǒng)中所支持的所有文字。例如:"12345"、'123abc'、"佳木斯大學(xué)“Python語言中三引號通常用來處理長字符串,如程序中有大段文本內(nèi)容需要定義成字符串時(shí)可以使用,也經(jīng)常用于對多行內(nèi)容進(jìn)行注釋時(shí)。2.2.2字符串類型Python中的字符串是以unicode編碼存儲的字節(jié)數(shù)組。因此,字符串中的中文字符和英文字符都算1個(gè)字符。字符串有兩種取值順序,如右圖所示。如果需要從字符串中獲得子字符串,可以使用[頭下標(biāo):尾下標(biāo)]的格式來截取相應(yīng)的字符串,其中下標(biāo)從0起始,可以使用正數(shù)和負(fù)數(shù),下標(biāo)可以為空表示取到頭或尾。2.2.2字符串類型Python字符串使用單引號和雙引號沒有區(qū)別。當(dāng)字符串內(nèi)容中出現(xiàn)引號時(shí),我們需要進(jìn)行特殊處理,否則Python會解析出錯(cuò),>>>print('I'mallears')#執(zhí)行后系統(tǒng)提示語法錯(cuò)誤

SyntaxError:invalidsyntax們需要進(jìn)行特殊處理,否則Python會解析出錯(cuò)

解決該問題的方法有兩種:對引號進(jìn)行轉(zhuǎn)義

在引號前面添加反斜杠“\”就可以對引號進(jìn)行轉(zhuǎn)義,讓Python把它作為普通文本對待。使用不同的引號包圍字符串

如果字符串內(nèi)容中出現(xiàn)了單引號,那么我們可以使用雙引號包圍字符串,反之亦然。2.2.3邏輯類型Python語言提供了邏輯(bool)類型來表示真(對)或假(錯(cuò)),比如表達(dá)式3>2,這個(gè)表達(dá)式是正確的,在計(jì)算機(jī)程序中稱之為真(對),Python語言使用True來代表;而表達(dá)式2>3,這個(gè)表達(dá)式是錯(cuò)誤的,在計(jì)算機(jī)程序中稱之為假(錯(cuò)),Python語言使用False來代表。True和False都是Python語言中的關(guān)鍵字,輸入時(shí)一定要注意字母的大小寫,否則解釋器會報(bào)錯(cuò)。2.2.4其他常用數(shù)據(jù)類型列表(list)

列表中元素的數(shù)據(jù)類型可以不相同,它支持?jǐn)?shù)字,字符串甚至可以包含列表。列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。

列表的格式為:[元素1,元素2,…]元組(tuple)

元組與列表類似,元組中元素的數(shù)據(jù)類型可以不相同,元組也是有序的,也可以被截取。不同之處在于元組的元素不能修改。

元組的格式為:(元素1,元素2,…)2.2.4其他常用數(shù)據(jù)類型集合類型(set)

集合類似于數(shù)學(xué)中的集合概念,是由0個(gè)或數(shù)個(gè)數(shù)據(jù)項(xiàng)的無索引無序組合。集合中的元素不可重復(fù),元素類型不能是可變的數(shù)據(jù)類型。

集合的格式為:{元素1,元素2,…}字典類型(dict)

字典是一種映射類型,使用{}標(biāo)識,元素的形式是“鍵-值”,鍵必須使用不可變數(shù)據(jù)類型,可以通過引用鍵名來訪問元素,字典中元素是無序的。字節(jié)符類型(bytes)

字節(jié)符以二進(jìn)制形式來存儲數(shù)據(jù),和字符串類似,也適用單引號、雙引號、三引號作為定界符。如果字符串的內(nèi)容都是ASCII字符,那么直接在字符串前面添加b前綴就可以轉(zhuǎn)換成字節(jié)符類型。2.3.1標(biāo)識符Python中標(biāo)識符的主要作用就是作為變量、函數(shù)、類、模塊以及其他對象的名稱。

標(biāo)識符的命名要遵循以下的命令規(guī)則:標(biāo)識符是由大寫小寫字母、下劃線、數(shù)字和漢字組成,但首字符不能是數(shù)字,長度沒有限制。標(biāo)識符不能和Python中的保留字相同。Python語言中,標(biāo)識符中的字母是嚴(yán)格區(qū)分大小寫的,NAME、Name和name是三個(gè)不同的標(biāo)識符。Python語言中,以下劃線開頭的標(biāo)識符有特殊含義,例如:以單下劃線開頭的標(biāo)識符,表示不能直接訪問的類屬性;以雙下劃線開頭的標(biāo)識符表示類的私有成員;以雙下劃線作為開頭和結(jié)尾的標(biāo)識符是專用標(biāo)識符。故應(yīng)避免定義下劃線開頭的標(biāo)識符。2.3.2保留關(guān)鍵字andexecnotFalseassertfinallyorNonebreakforpassTrueclassfromprint

continueglobalraise

defifreturn

delimporttry

elifinwhile

elseiswith

exceptlambdayield

2.4變量和賦值語句變量

變量可以是任意數(shù)據(jù)類型。變量名要遵循標(biāo)識符的命名規(guī)則,變量值是變量中保存的數(shù)據(jù),可以被多次修改。賦值語句

在編程語言中,將數(shù)據(jù)放入變量的過程叫做賦值。

格式為:變量=表達(dá)式>>>pi=3.1415926#將圓周率賦值給變量pi>>>str="佳木斯大學(xué)"#將Python教程的地址賦值給變量str>>>flag=True#將布爾值賦值給變量flag>>>print(pi,str,flag)3.1415926佳木斯大學(xué)True值運(yùn)算符。格式為:變量=表達(dá)式2.4變量和賦值語句鏈?zhǔn)劫x值語句

鏈?zhǔn)劫x值用于同一個(gè)對象賦值給多個(gè)變量。>>>a=b=c=24#變量a,b,c的值都是24復(fù)合賦值語句復(fù)合賦值運(yùn)算符名稱功能+=加法賦值運(yùn)算符c+=a等效于c=c+a-=減法賦值運(yùn)算符c-=a等效于c=c-a*=乘法賦值運(yùn)算符c*=a等效于c=c*a/=除法賦值運(yùn)算符c/=a等效于c=c/a%=取模賦值運(yùn)算符c%=a等效于c=c%a**=冪賦值運(yùn)算符c**=a等效于c=c**a//=取整除賦值運(yùn)算符c//=a等效于c=c//a2.4變量和賦值語句序列解包賦值

格式為:變量1,變量2,…,變量n=表達(dá)式1,表達(dá)式2,…,表達(dá)式n

需要注意的是,賦值符號兩端數(shù)量必須一致。>>>one=10>>>two=20>>>A,B=one,two>>>print(A,B)10202.5基本輸入與輸出輸入語句input()是Python的內(nèi)置函數(shù),用于從控制臺讀取用戶輸入的內(nèi)容。input()函數(shù)總是以字符串的形式來處理用戶輸入的內(nèi)容,所以用戶輸入的內(nèi)容可以包含任何字符。

格式:變量=input(提示信息)

說明:input()函數(shù)把用戶輸入的任何字符作為一個(gè)字符串,存儲到變量中。提示信息會在用戶輸入前顯示在控制臺上,提示用戶應(yīng)該輸入的內(nèi)容。提示信息部分可以不寫,那樣在輸入前就不會有提示信息。>>>name=input("Enteryourname:")#利用input()輸入姓名:Enteryourname:陳銘>>>print("Hello,",name)#輸出歡迎消息。Hello,陳銘2.5基本輸入與輸出輸出語句格式:print(value1,value2,…,sep='',end='\n')

說明:1.value1,value2,…是需要輸出的內(nèi)容,可以是變量和值,一次可以輸出多個(gè),中間使用逗號間隔。2.以上使用print()函數(shù)輸出多項(xiàng)時(shí),顯示的輸出內(nèi)容默認(rèn)以空格分隔,如果希望改變?yōu)槠渌姆指舴枺尤雜ep參數(shù)進(jìn)行設(shè)置。3.end參數(shù)的默認(rèn)值是“\n”,這個(gè)“\n”就表示換行。如果希望print()函數(shù)輸出之后不進(jìn)行換行,需要對end參數(shù)重新設(shè)置。2.5基本輸入與輸出輸出語句>>>stu_name='陳銘'>>>stu_age=19>>>print("姓名:",stu_name,"年齡:",stu_age)姓名:陳銘年齡:19>>>print("姓名:",stu_name,"年齡:",stu_age,sep='|')姓名:|陳銘|年齡:|192.6運(yùn)算符和表達(dá)式運(yùn)算符功能說明+兩個(gè)對象相加,正號、字符串合并與連接,列表、元祖-兩個(gè)對象相減,相反數(shù),集合差集*兩個(gè)對象相乘,序列重復(fù)/真除法//求整商%求余數(shù),字符串格式化**求冪運(yùn)算>,>=,<,<=,==,!=比較大小,比較集合的包含關(guān)系or邏輯或運(yùn)算and邏輯與運(yùn)算not邏輯非運(yùn)算in成員測試is對象統(tǒng)一性測試&,|,^集合交集,集合并集,對稱差集@矩陣相乘運(yùn)算符2.6運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符及表達(dá)式“+”運(yùn)算符可用于算術(shù)加法,也可用于字符串、元組、列表的連接不同類型的對象之間的相加或連接可能會出現(xiàn)異常。>>>60+3494>>>(7,8,9)+(10,)(7,8,9,10)>>>'abc'+'456''abc456'>>>True+562.6運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符及表達(dá)式“-”運(yùn)算符可用于算術(shù)減法,也可用于相反數(shù)。>>>60-3426>>>--11“*”運(yùn)算符可用于算術(shù)乘法,也可以用于字符串、元組、列表這幾個(gè)序列類型與整數(shù)的乘法,生成新的序列對象。>>>2*3.14*637.68>>>(1,2,3)*2(1,2,3,1,2,3)>>>'hello!'*3'hello!hello!hello!'2.6運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符及表達(dá)式“/”和“//”運(yùn)算符分別表示算術(shù)除法和算術(shù)求整商。>>>7.0/23.5>>>7.0//23.0>>>15//43>>>-15//4-42.6運(yùn)算符和表達(dá)式算術(shù)運(yùn)算符及表達(dá)式“%”運(yùn)算符可用于整數(shù)或?qū)崝?shù)的求余運(yùn)算,也可以用于字符串格式化。>>>10%31>>>-10%32>>>'%c,%s,%d'%(97,97,97)'a,97,97'“**”運(yùn)算符表示冪運(yùn)算。和內(nèi)置函數(shù)pow()作用相同。>>>2**382.6運(yùn)算符和表達(dá)式關(guān)系運(yùn)算符及表達(dá)式

關(guān)系運(yùn)算符用于對常量、變量或表達(dá)式的結(jié)果進(jìn)行大小比較。如果這種比較是成立的,則返回True(真),反之則返回False(假)。>>>25>36False>>>2<4<6True>>>'one'>'five'True>>>False<TrueTrue>>>[2,3,4]<[2,3,5]True2.6運(yùn)算符和表達(dá)式邏輯運(yùn)算符及表達(dá)式

邏輯運(yùn)算符包含邏輯與運(yùn)算符“and”、邏輯或運(yùn)算符“or”和邏輯非運(yùn)算符“not”。邏輯運(yùn)算符“and”和“or”可以用來操作任何類型的表達(dá)式,因此邏輯運(yùn)算的結(jié)果也不一定是bool類型,它也可以是任意類型。而邏輯運(yùn)算符“not”一定會返回bool類型。>>>14>6and30>50False>>>20and1010>>>20or1020>>>1notin{1,3,5}False>>>notFalseTrue2.7混合運(yùn)算和數(shù)值類型的轉(zhuǎn)換

當(dāng)多個(gè)運(yùn)算符同時(shí)出現(xiàn)在一個(gè)表達(dá)式中時(shí),我們稱之為混合運(yùn)算?;旌线\(yùn)算中先執(zhí)行哪個(gè)運(yùn)算符,后執(zhí)行哪個(gè)運(yùn)算符,就是運(yùn)算符的優(yōu)先級。Python支持幾十種運(yùn)算符,被劃分成十九個(gè)優(yōu)先級,同一級別上有多個(gè)運(yùn)算符,需要按運(yùn)算符的結(jié)合性來判斷運(yùn)算的次序,表2.5列出了運(yùn)算符的優(yōu)先級和結(jié)合性。Python中大部分運(yùn)算符都具有左結(jié)合性;只有乘方運(yùn)算符、取反運(yùn)算符、符號運(yùn)算符、按位與運(yùn)算符、邏輯非運(yùn)算符具有右結(jié)合性。

混合運(yùn)算的規(guī)則是:一個(gè)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符時(shí),Python會先比較各個(gè)運(yùn)算符的優(yōu)先級,按照優(yōu)先級從高到低的次序執(zhí)行;當(dāng)運(yùn)算符的優(yōu)先級相同時(shí),再根據(jù)結(jié)合性決定是自左向右還是自右向左執(zhí)行,當(dāng)執(zhí)行完所有的運(yùn)算符后,就會得到最終的結(jié)果。2.7混合運(yùn)算和數(shù)值類型的轉(zhuǎn)換運(yùn)算符說明Python運(yùn)算符優(yōu)先級結(jié)合性小括號()19(最高)無索引運(yùn)算符x[i]或x[i1:i2[:i3]]18左屬性訪問x.attribute17左乘方**16右按位取反~15右符號運(yùn)算符+(正號)、-(相反數(shù))14右乘除*、/、//、%13左加減+、-12左位移>>、<<11左按位與&10右按位異或^9左按位或|8左比較運(yùn)算符==、!=、>、>=、<、<=7左is運(yùn)算符is、isnot6左in運(yùn)算符in、notin5左邏輯非not4右邏輯與and3左邏輯或or2左逗號運(yùn)算符exp1,exp21(最低)左2.7混合運(yùn)算和數(shù)值類型的轉(zhuǎn)換

隱式轉(zhuǎn)換,是Python自動(dòng)進(jìn)行的轉(zhuǎn)換,常常發(fā)生在數(shù)值類型的算術(shù)運(yùn)算中,隱式轉(zhuǎn)換的順序?yàn)檫壿嬵愋?、整?shù)類型、浮點(diǎn)類型。>>>value_1=5+True>>>print(value_1)6>>>value_2=5.0+False>>>print(value_2)5.0>>>value_3=2*4.5>>>print(value_3)9.02.7混合運(yùn)算和數(shù)值類型的轉(zhuǎn)換

顯示轉(zhuǎn)換不是Python自動(dòng)進(jìn)行的轉(zhuǎn)換,需要使用者使用特定的格式來實(shí)現(xiàn)類型轉(zhuǎn)換。整數(shù)類型和浮點(diǎn)類型的顯示轉(zhuǎn)換——int、float>>>int(14.56)#直接舍棄掉小數(shù)部分14>>>float(8)#轉(zhuǎn)換為浮點(diǎn)數(shù)8.08.0>>>float('2021.0')2021.0字符串類型的顯示轉(zhuǎn)換——str>>>'年齡:'+str(18)'年齡:18'本章小結(jié)

本章首先介紹了Python語言的基本數(shù)據(jù)類型,然后介紹了Python語言的標(biāo)識符和系統(tǒng)保留字,詳細(xì)介紹了Python語言的變量以及變量的賦值,Python語言的基本輸入輸出函數(shù)的格式和使用,最后講解了Python語言的運(yùn)算符和表達(dá)式以及混合運(yùn)算,數(shù)據(jù)類型的轉(zhuǎn)換。主講教師:姓名學(xué)習(xí)目標(biāo)掌握Python中的關(guān)系運(yùn)算符和邏輯運(yùn)算符掌握單選擇、雙選擇、多選擇結(jié)構(gòu)的用法掌握if語句嵌套的用法掌握for循環(huán)的使用方法掌握while循環(huán)的使用方法掌握break和continue的使用方法學(xué)會random庫的使用方法學(xué)習(xí)重點(diǎn)利用關(guān)系運(yùn)算符和邏輯運(yùn)算符構(gòu)造條件表達(dá)式,掌握單選擇、雙選擇、多選擇結(jié)構(gòu)的用法、語句結(jié)構(gòu)、執(zhí)行過程以及if語句的嵌套用法,掌握for循環(huán)和while循環(huán)結(jié)構(gòu)的用法、語句結(jié)構(gòu)、執(zhí)行過程,掌握break和continue的使用方法,理解random庫的使用方法。學(xué)習(xí)難點(diǎn)if語句的嵌套循環(huán)的嵌套random庫的使用方法知識導(dǎo)圖3.1條件表達(dá)式在選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中,都需要根據(jù)條件表達(dá)式的值來確定下一步的執(zhí)行流程。而在條件表達(dá)式中經(jīng)常會用到關(guān)系運(yùn)算符和邏輯運(yùn)算符。條件表達(dá)式的值只要不是False、0(或000j等)、空值None、空列表、空元組、空集合、空字典、空字符串、空range對象或其他空迭代對象,Python解釋器均認(rèn)為與True等價(jià)。從這個(gè)意義上來講,所有的Python合法表達(dá)式都可以作為條件表達(dá)式,包括含有函數(shù)調(diào)用的表達(dá)式。3.1.1關(guān)系運(yùn)算符Python語言中的關(guān)系運(yùn)算符如表3.1所示(假設(shè)a=1,b=2)。表3.1Python語言中的關(guān)系運(yùn)算符3.1.1關(guān)系運(yùn)算符Python語言中的關(guān)系運(yùn)算符最大的特點(diǎn)是可以連用,這非常類似數(shù)學(xué)中的寫法,與日常的理解完全一致。使用關(guān)系運(yùn)算符的前提是操作數(shù)之間必須可以比較大小,如在一個(gè)字符串和一個(gè)數(shù)值之間比較大小就沒有意義,Python語言不支持這樣的運(yùn)算。3.1.1關(guān)系運(yùn)算符【例3-1】關(guān)系運(yùn)算符應(yīng)用舉例>>>a,b=1,2>>>0<a<b#表示a>0并且a<b,結(jié)果為TrueTrue>>>a==b#表示a和b的值是否相等,結(jié)果為FalseFalse>>>a>"BC"#數(shù)值不可與字符串比較大小,語句報(bào)錯(cuò)Traceback(mostrecentcalllast):File"<pyshell#11>",line1,in<module>a>"BC"#數(shù)值不可與字符串比較大小,語句報(bào)錯(cuò)TypeError:'>'notsupportedbetweeninstancesof'int'and'str'>>>"ABC">"ab"#字符串按照字符的unicode編碼比較,結(jié)果為FalseFalse>>>"Python"<"python"#字符串按照字符的unicode編碼比較,結(jié)果為TrueTrue3.1.1關(guān)系運(yùn)算符另外,在Python語法中,條件表達(dá)式中不允許使用賦值運(yùn)算符“=”,避免了誤將關(guān)系運(yùn)算“==”寫成賦值運(yùn)算符“=”帶來的麻煩。在條件表達(dá)式中使用賦值運(yùn)算符“=”將拋出異常,提示語法錯(cuò)誤。>>>ifa=3:#條件表達(dá)式中出現(xiàn)賦值運(yùn)算符,拋出異常SyntaxError:invalidsyntax3.1.2邏輯運(yùn)算符當(dāng)使用條件表達(dá)式的時(shí)候往往還需要借助邏輯運(yùn)算符and(并且)、or(或者)和not(取反)?!纠?-2】邏輯運(yùn)算符應(yīng)用舉例>>>a,b=1,2>>>a>1andb<10#表示a>1并且b<10,結(jié)果為FalseFalse>>>a>1orb<10#表示a>1或者b<10,結(jié)果為TrueTrue>>>not(a>1andb<10)#表示a>1并且b<10結(jié)果取反,結(jié)果為TrueTrue關(guān)系運(yùn)算符、邏輯運(yùn)算符都具有短路求值或惰性求值的特點(diǎn),可能不會對所有表達(dá)式進(jìn)行求值,而是只計(jì)算必須計(jì)算的表達(dá)式的值。3.1.3條件表達(dá)式使用各種運(yùn)算符可以構(gòu)建不同的條件表達(dá)式,例如:(1)假設(shè)有整數(shù)x,表示x為一個(gè)奇數(shù)。x%2==1(2)假設(shè)有整數(shù)x,表示x是3的倍數(shù)并且個(gè)位上的數(shù)字為3。x%5==0andx%10==3(3)假設(shè)有三條線段,長度分別為a、b、c,表示a、b、c能構(gòu)成一個(gè)三角形。(a+b>c)and(b+c>a)and(a+c>b)(4)假設(shè)有某個(gè)年份year,那么表示year是閏年的條件是:如果year是4的倍數(shù)且不是100的倍數(shù),或者year是400的倍數(shù),那么year即為閏年。(year%4==0)and(year%100!=0)or(year%400==0)3.2選擇結(jié)構(gòu)常見的選擇結(jié)構(gòu)有單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)、多分支選擇結(jié)構(gòu)及嵌套的分支結(jié)構(gòu)。另外,循環(huán)結(jié)構(gòu)和異常處理結(jié)構(gòu)中也可以帶有else子句,可以看作特殊形式的選擇結(jié)構(gòu),在3.3循環(huán)結(jié)構(gòu)中會有介紹。3.2.1單分支選擇結(jié)構(gòu)單分支選擇結(jié)構(gòu)是最簡單的一種選擇結(jié)構(gòu),語法如下所示。if表達(dá)式:

語句塊【注意】(1)當(dāng)表達(dá)式的值為True或其他與True等價(jià)的值時(shí),表示條件滿足,語句塊被執(zhí)行,否則該語句塊不被執(zhí)行,而是繼續(xù)執(zhí)行后面的其它代碼。在這里,語句塊有可能被執(zhí)行,也有可能不會被執(zhí)行,依賴于條件表達(dá)式的判斷結(jié)果。3.2.1單分支選擇結(jié)構(gòu)(2)其中表達(dá)式后面的冒號“:”是不可缺少的,表示一個(gè)語句塊的開始,并且語句塊必須做相應(yīng)的縮進(jìn),一般是以4個(gè)空格為縮進(jìn)單位。后面的幾種形式的選擇機(jī)構(gòu)和循環(huán)結(jié)構(gòu)中的“:”也都是必不可少的。(3)在Python語言中代碼的縮進(jìn)非常重要,縮進(jìn)是體現(xiàn)代碼邏輯關(guān)系的重要方式,所以在編寫語句塊的時(shí)候,務(wù)必注意代碼縮進(jìn),且同一個(gè)代碼塊必須保證相同的縮進(jìn)量。3.2.1單分支選擇結(jié)構(gòu)【例3-3】從鍵盤輸入兩個(gè)整數(shù)a和b,比較a和b的大小,并輸出a和b,其中a為輸入的兩個(gè)整數(shù)中的較大者?!緟⒖即a】a=int(input("請輸入整數(shù)a:"))b=int(input("請輸入整數(shù)b:"))print("輸入值a={},b={}".format(a,b))ifa<b:a,b=b,aprint("比較后的值a={},b={}".format(a,b))運(yùn)行結(jié)果1:請輸入整數(shù)a:1請輸入整數(shù)b:2輸入值a=1,b=2比較后的值a=2,b=1

運(yùn)行結(jié)果2:請輸入整數(shù)a:2請輸入整數(shù)b:1輸入值a=2,b=1比較后的值a=2,b=13.2.2雙分支選擇結(jié)構(gòu)

我們在解決很多問題的時(shí)候,可能有兩種結(jié)果需要處理,因此可以引入雙分支結(jié)構(gòu),其語法格式如下:if條件表達(dá)式:語句塊1else:

語句塊2

當(dāng)條件表達(dá)式的值為True時(shí)執(zhí)行語句塊1,否則執(zhí)行語句塊2。這里的語句塊1和語句塊2在一次運(yùn)行過程中有且只有一個(gè)能被執(zhí)行。3.2.2雙分支選擇結(jié)構(gòu)【例3-4】宋代才子蘇軾寫過一首詞《菩薩蠻·夏閨怨》,詞句如下:

柳庭風(fēng)靜人眠晝,晝眠人靜風(fēng)庭柳。

香汗薄衫涼,涼衫薄汗香。

手紅冰碗藕,藕碗冰紅手。

郎笑藕絲長,長絲藕笑郎。

這是一首著名的回文詞,你能編寫一段代碼來判斷用戶輸入的字符串是否為回文嗎?3.2.2雙分支選擇結(jié)構(gòu)【參考代碼】str=input("請輸入字符串:")if(str==str[::-1]):print(str+"為回文串")else:print(str+"不是回文串")運(yùn)行結(jié)果1:請輸入字符串:abcdeabcde不是回文串

運(yùn)行結(jié)果2:請輸入字符串:abcbaabcba為回文串3.2.2雙分支選擇結(jié)構(gòu)【例3-5】輸入任意三個(gè)正數(shù)a、b、c,判斷a、b、c能否作為三角形的三條邊,如果能則求出三角形的面積。importmatha=float(input("請輸入三角形的邊長a:"))b=float(input("請輸入三角形的邊長b:"))c=float(input("請輸入三角形的邊長c:"))if(a+b>candb+c>aanda+c>b):p=(a+b+c)/2area=math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形的面積為:{:.2f}".format(area))else:print("用戶輸入數(shù)據(jù)有誤!“)運(yùn)行結(jié)果1:請輸入三角形的邊長a:1請輸入三角形的邊長b:2請輸入三角形的邊長c:3用戶輸入數(shù)據(jù)有誤!

運(yùn)行結(jié)果2:請輸入三角形的邊長a:3請輸入三角形的邊長b:4請輸入三角形的邊長c:5三角形的面積為:6.003.2.2雙分支選擇結(jié)構(gòu)

另外,Python還提供了一個(gè)三元運(yùn)算符,并且在三元運(yùn)算符構(gòu)成的表達(dá)式中還可以嵌套三元運(yùn)算符,可以實(shí)現(xiàn)與選擇結(jié)構(gòu)相似的效果。語法為語句1if條件表達(dá)式else語句2

當(dāng)條件表達(dá)式的值與True等價(jià)時(shí),表達(dá)式的值為語句1,否則表達(dá)式的值為語句2。另外,語句1和語句2本身也可以是復(fù)雜表達(dá)式,也可以包含函數(shù)調(diào)用,甚至可以是三元運(yùn)算符構(gòu)成的表達(dá)式。這個(gè)結(jié)構(gòu)的表達(dá)式也具有惰性求值的特點(diǎn)。3.2.3多分支選擇結(jié)構(gòu)有的時(shí)候情況比較復(fù)雜,程序的分支會多余兩條,那么就需要引入多分支結(jié)構(gòu),多分支選擇結(jié)構(gòu)的語法為:If條件表達(dá)式1:語句塊1elif表達(dá)式2:語句塊2elif表達(dá)式3:語句塊3……else:

語句塊n其中,elif是elseif的縮寫3.2.3多分支選擇結(jié)構(gòu)【例3-7】根據(jù)用戶的身高和體重,計(jì)算用戶的BMI指數(shù),并給出相應(yīng)的健康建議。BMI指數(shù),即身體質(zhì)量指數(shù),是利用體重(kg)除以身高(m)的平方得出的數(shù)字[BMI=體重(kg)÷身高2(m)],是目前國際上常用的衡量人體胖瘦程度以及是否健康的一個(gè)標(biāo)準(zhǔn)。下面先來看看標(biāo)準(zhǔn)BMI數(shù)值:

過輕:低于18.5;

正常:18.5~23.9;

過重:24~27.9;

肥胖:28~32;

過于肥胖:32以上。3.2.3多分支選擇結(jié)構(gòu)【參考代碼】height=eval(input("請輸入您的身高(m):"))weight=eval(input("請輸入您的體重(kg):"))BMI=weight/height/heightprint("您的BMI指數(shù)是:{:.1f}".format(BMI))ifBMI<18.5:print("您的體型偏瘦,要多吃多運(yùn)動(dòng)哦!")elif18.5<=BMI<24:print("您的體型正常,繼續(xù)保持喲!")elif24<BMI<28:print("您的體型偏胖,有發(fā)福跡象!")elif28<BMI<32:print("不要悲傷,您是個(gè)迷人的胖子!")else:print("什么也不說了,您照照鏡子就知道了.....")運(yùn)行結(jié)果1:請輸入您的身高(m):1.8請輸入您的體重(kg):75您的BMI指數(shù)是:23.1您的體型正常,繼續(xù)保持喲!3.2.4pass語句pass是空語句,是為了保持程序結(jié)構(gòu)的完整性,一般用做占位語句,保證格式完整,保證語義完整。age=int(input("請輸入你的年齡:"))ifage<12:print("嬰幼兒")elifage<18:print("青少年")elifage<30:print("成年人")elifage<50:#稱呼未定else:print("老年人")3.2.4pass語句當(dāng)年齡大于等于30并且小于50時(shí),我們沒有使用print()語句,而是使用了一個(gè)注釋,希望以后再處理成年人的情況。我們希望當(dāng)Python執(zhí)行到該elif分支時(shí),會跳過注釋,什么都不執(zhí)行,但是Python提供了一種更加專業(yè)的做法,就是空語句pass,pass是Python中的關(guān)鍵字,用來讓解釋器跳過此處,什么都不做。就像上面的情況,有時(shí)候程序需要占一個(gè)位置,或者放一條語句,但又不希望這條語句做任何事情,此時(shí)就可以通過pass語句來實(shí)現(xiàn),使用pass語句比使用注釋更加優(yōu)雅。3.2.4pass語句age=int(input("請輸入你的年齡:"))ifage<12:print("嬰幼兒")elifage<18:print("青少年")elifage<30:print("成年人")elifage<50:passelse:print("老年人")3.2.4pass語句另外,pass語句在循環(huán)結(jié)構(gòu)和函數(shù)中也有應(yīng)用,在循環(huán)中,pass也常用于為復(fù)合語句編寫一個(gè)空的主體,比如你想要一個(gè)while語句無限次循環(huán),每次迭代時(shí)不需要任何操作,你可以這樣寫:whileTrue:pass在函數(shù)中,當(dāng)編寫一個(gè)程序時(shí),你還沒有完成執(zhí)行語句部分的思路,這時(shí)你可以用pass語句來占位,也可以當(dāng)做是一個(gè)標(biāo)記,是過后來完成的代碼。比如下面這樣:defiplaypython():pass3.3循環(huán)結(jié)構(gòu)Python主要有for循環(huán)和while循環(huán)兩種形式的循環(huán)結(jié)構(gòu),多個(gè)循環(huán)可以嵌套使用。并且還經(jīng)常和選擇結(jié)構(gòu)嵌套使用來實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯。while循環(huán)一般用于循環(huán)次數(shù)難以提前確定的情況,當(dāng)然也可以用于循環(huán)次數(shù)確定的情況;for循環(huán)一般用于循環(huán)次數(shù)可以提前確定的情況,尤其適用于枚舉或遍歷序列或迭代對象中元素的場合。3.3.1可迭代對象可循環(huán)選代的對象稱為可迭代對象,迭代器和生成器函數(shù)是可迭代對象,在Python中提供了定義選代器和生成器的協(xié)議和方法。相對于序列,可送代對象僅在迭代時(shí)產(chǎn)生數(shù)據(jù),故可以節(jié)省內(nèi)存空問。Python語言提供了若干內(nèi)置可迭代對象,例如range、map、filter、enumetate、zip;在標(biāo)準(zhǔn)庫itertools模塊中包含各種迭代器,這些迭代器非常高效,且內(nèi)存消耗小。迭代器既可以單獨(dú)使用,也可以組合使用。在Python中,實(shí)現(xiàn)了__iter__()的對象是可迭代對象。在collections.abc模塊中定義了抽象基類Iterable,使用內(nèi)置的isinstance()可以判斷一個(gè)對象是否為可迭代對象。序列對象都是可選代對象,生成器函數(shù)和生成器表達(dá)式也是可迭代對象。3.3.2range對象range()是Python語言中的一個(gè)內(nèi)置函數(shù),調(diào)用這個(gè)函數(shù)就能產(chǎn)生一個(gè)可迭代序列,一般形式為:range(start,stop[,step])

range返回的數(shù)字序列從start開始,到stop結(jié)束(但不包含stop),如果制定了可選的步長step,則序列按照步長step增加,即range()可生成滿足條件的數(shù),具體來說是返回一個(gè)從start開始到小于stop的相鄰數(shù)的差為step的等差數(shù)列可迭代序列,結(jié)果中包含start一直到小于stop的整數(shù),range()對象的參數(shù)必須為整數(shù)(可以是內(nèi)置的int或任何實(shí)現(xiàn)了__index__特殊方法的對象)。如果省略step參數(shù),其默認(rèn)值為1。如果省略start參數(shù),其默認(rèn)值為0,如果step為零則會引發(fā)ValueError。3.3.2range對象因此適合放在for語句的首部,range()函數(shù)有以下幾種不同的調(diào)用方式:(1)range(n),range(n)得到的迭代序列為:0,1,2,3,……,n-1。例如,range(100)表示序0,1,2,3,...,99。當(dāng)n≤0的時(shí)候序列為空。(2)range(m,n),range(m,n)得到的迭代序列為:m,m+1,m+2,……,n-1。例如,range(11,16)表示序列11,12,13,14,15,當(dāng)m≥n的時(shí)候序列i為空。(3)range(m,n,d),range(m,n,d)得到的迭代序列為:m,m+d,m+2d,……,n-1,按步長值d遞增,如果d為負(fù)則遞減,直至那個(gè)最接近但不包括n的等差值。因此,range(11,16,2)表示序列:11,13,15,range(15,4,3)表示序列:15,12,9,6,這里的d可以是正整數(shù),也可以是負(fù)整數(shù),正數(shù)表示增量,而負(fù)數(shù)表示減量,也有可能出現(xiàn)空序列的情況。3.3.2range對象一定注意,在很多種情況下,range()函數(shù)返回的對象的行為都很像一個(gè)列表,但是它確實(shí)不是一個(gè)列表,它只是在迭代的情況下返回指定索引的值,但是它并不會在內(nèi)存中真正產(chǎn)生一個(gè)列表對象,這樣也是為了節(jié)約內(nèi)存空間。例如:>>>range(1,10)range(1,10)>>>print(range(1,10))range(1,10)>>>list(range(1,10))[1,2,3,4,5,6,7,8,9]3.3.2range對象更多的range()舉例如下:>>>list(range(10))#從0開始到10[0,1,2,3,4,5,6,7,8,9]>>>list(range(1,11))#從1開始到11[1,2,3,4,5,6,7,8,9,10]>>>list(range(0,30,5))#步長為5[0,5,10,15,20,25]>>>list(range(0,10,3))#步長為3[0,3,6,9]>>>list(range(0,-10,-1))#負(fù)數(shù)[0,-1,-2,-3,-4,-5,-6,-7,-8,-9]3.3.3while語句while是一個(gè)預(yù)測試的循環(huán),while在循環(huán)開始前并不知道重復(fù)執(zhí)行循環(huán)語句序列的次數(shù),while語句按不同條件執(zhí)行循環(huán)語句(塊)零次或多次。while語句中,用一個(gè)表示邏輯條件的表達(dá)式來控制循環(huán),當(dāng)條件成立的時(shí)候反復(fù)執(zhí)會循環(huán)體,直到條件不成立的時(shí)候循環(huán)結(jié)束。while語句的語法格式比較簡單,如下所示:while條件表達(dá)式:語句塊[else:else子句代碼塊]3.3.3while語句說明:(1)while循環(huán)語句的執(zhí)行過程如下,如圖3-3所示:①計(jì)算條件表達(dá)式。②如果條件表達(dá)式的結(jié)果為True,控制將轉(zhuǎn)到循環(huán)語句(塊),即進(jìn)入循環(huán)體。當(dāng)?shù)竭_(dá)循環(huán)語句序列的結(jié)束點(diǎn)時(shí)循環(huán)體轉(zhuǎn)①,即控制轉(zhuǎn)到while語句的開始,繼續(xù)循環(huán)。③如果條件表達(dá)式的結(jié)果為False,退出while循環(huán),即控制轉(zhuǎn)到while循環(huán)語句的后繼語句。(2)條件表達(dá)式是每次進(jìn)入循環(huán)之前進(jìn)行判斷的條件,可以為關(guān)系表達(dá)式或邏輯表達(dá)式,其運(yùn)算結(jié)果為True(真)或False(假),在條件表達(dá)式中必須包含控制循環(huán)的變量。3.3.3while語句(3)循環(huán)體語句序列可以是一條語句,也可以是多條語句。(4)在循環(huán)語句序列中至少應(yīng)包含改變循環(huán)條件的語句,以使循環(huán)趨于結(jié)束,避免“死循環(huán)”。(5)同樣,這里條件表達(dá)式后的“:”不可省略,語句塊注意縮進(jìn)。(6)對于帶有else子句的循環(huán)結(jié)構(gòu)如果循環(huán)因?yàn)闂l件表達(dá)式不成立或序列遍歷結(jié)束而自然結(jié)束時(shí)則執(zhí)行else結(jié)構(gòu)中的語句,如果循環(huán)是因?yàn)閳?zhí)行了break語句而導(dǎo)致循環(huán)提前結(jié)束則不會執(zhí)行else中的語句。3.3.3while語句【例3-8】編寫程序,輸出2000年至2500年間的所有閏年,要求每行輸出8個(gè)。y=2001count=0flag=Truewhileflag:ify%4==0andy%100!=0ory%400==0:ifcount%8==0:print()print(y,end='')y+=1count+=1else:y+=1ify==2500:flag=False運(yùn)行結(jié)果:20042008201220162020202420282032203620402044204820522056206020642068207220762080208420882092209621042108211221162120212421282132213621402144214821522156216021642168217221762180218421882192219622042208221222162220222422282232223622402244224822522256226022642268227222762280228422882292229623042308231223162320232423282332233623402344234823522356236023642368237223762380238423882392239624002404240824122416242024242428243224362440244424482452245624602464246824722476248024842488249224963.3.3while語句【例3-9】我國有13億人口,如果按人口年增長0.8%計(jì)算,多少年后將達(dá)到26億?【參考代碼】n=13y=0whilen<26:y+=1n=n*(1+0.008)print(y

溫馨提示

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

最新文檔

評論

0/150

提交評論