Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第2章-Python程序設(shè)計基礎(chǔ)-2.1程序基本流程控制_第1頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第2章-Python程序設(shè)計基礎(chǔ)-2.1程序基本流程控制_第2頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第2章-Python程序設(shè)計基礎(chǔ)-2.1程序基本流程控制_第3頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第2章-Python程序設(shè)計基礎(chǔ)-2.1程序基本流程控制_第4頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第2章-Python程序設(shè)計基礎(chǔ)-2.1程序基本流程控制_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python財經(jīng)應(yīng)用:編程基礎(chǔ)、數(shù)據(jù)分析與可視化第二章Python程序設(shè)計基礎(chǔ)中國農(nóng)業(yè)大學(xué)李輝Python

程序設(shè)計基礎(chǔ)本章節(jié)系統(tǒng)介紹

Python程序設(shè)計核心知識,包括程序基本流程控制、典型序列數(shù)據(jù)結(jié)構(gòu)、函數(shù)與函數(shù)式編程、面向?qū)ο蟪绦蛟O(shè)計的關(guān)鍵概念及實踐應(yīng)用。利用選擇和循環(huán)結(jié)構(gòu)語句搭配break、continue等控制語句,可處理復(fù)雜業(yè)務(wù)邏輯與優(yōu)化數(shù)據(jù)流程。典型序列數(shù)據(jù)結(jié)構(gòu)(列表、元組、字典、集合)為財經(jīng)數(shù)據(jù)存儲、查詢、轉(zhuǎn)換提供靈活工具,在股票數(shù)據(jù)處理分析中表現(xiàn)突出。函數(shù)與函數(shù)式編程注重代碼復(fù)用和模塊化,自定義及匿名函數(shù)助力高效財務(wù)評估與投資建議系統(tǒng)。面向?qū)ο蟪绦蛟O(shè)計借類和繼承機制,為構(gòu)建復(fù)雜財經(jīng)數(shù)據(jù)處理系統(tǒng)提供結(jié)構(gòu)化方案。綜合應(yīng)用案例(股票交易模擬器、個人財務(wù)評估系統(tǒng)、財經(jīng)數(shù)據(jù)處理系統(tǒng))展現(xiàn)實際財經(jīng)場景下編程技術(shù)應(yīng)用,助力分析師實現(xiàn)數(shù)據(jù)驅(qū)動決策支持。01

程序基本流程控制02

典型序列數(shù)據(jù)結(jié)構(gòu)03

函數(shù)與函數(shù)式編程04

面向?qū)ο蟪绦蛟O(shè)計01

程序基本流程控制02

典型序列數(shù)據(jù)結(jié)構(gòu)03

函數(shù)與函數(shù)式編程04

面向?qū)ο蟪绦蛟O(shè)計2.1

程序基本流程控制第二章Python程序設(shè)計基礎(chǔ)程序基本流程控制

程序設(shè)計時,通常有順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)。順序結(jié)構(gòu)是程序執(zhí)行的基礎(chǔ),按照語句的先后順序依次執(zhí)行。在財經(jīng)數(shù)據(jù)分析中,數(shù)據(jù)的預(yù)處理步驟通常采用順序結(jié)構(gòu),例如數(shù)據(jù)的讀取、清洗和初步轉(zhuǎn)換等操作。選擇結(jié)構(gòu)根據(jù)條件判斷結(jié)果選擇執(zhí)行不同的代碼塊,是實現(xiàn)復(fù)雜邏輯的核心。在財經(jīng)分析中,選擇結(jié)構(gòu)常用于根據(jù)不同的財務(wù)指標或市場條件執(zhí)行不同的分析策略。循環(huán)結(jié)構(gòu)用于重復(fù)執(zhí)行某段代碼,直到滿足特定條件。在處理批量數(shù)據(jù)或?qū)崟r監(jiān)控數(shù)據(jù)時,循環(huán)結(jié)構(gòu)是不可或缺的工具。順序結(jié)構(gòu)并不能滿足所有編程需求,例如在計算員工提成時,我們通常根據(jù)銷售額來設(shè)定不同的提成比例:如果銷售額超過100萬元,則提成比例為8%;若未達到,則提成比例為5%。到了下個月初,我們需要依據(jù)每位員工的銷售業(yè)績來確定其提成比例,這就涉及選擇結(jié)構(gòu)(也稱為分支結(jié)構(gòu))。在這種結(jié)構(gòu)中,會根據(jù)條件表達式的真假(True或False)來決定執(zhí)行哪一段特定的代碼。只有滿足條件的分支會被執(zhí)行,而其他分支將被跳過。這種基于條件判斷來選擇執(zhí)行路徑的結(jié)構(gòu),是編程中常見的邏輯控制方式之一。選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),根據(jù)判斷條件表達式是否成立(True或False)決定下一步選擇執(zhí)行特定的代碼。在Python語言中,條件語句使用關(guān)鍵字if、elif、else來表示,基本語法格式如下:在Python中,條件表達式的值只要不是False、0(或0.0、0j等)、""、()、[]、{}、空值(None)、空對象,Python解釋器均認為其與True等價,也就是說,所有Python合法表達式(算術(shù)表達式、關(guān)系表達式、邏輯表達式等,包括單個常量、變量或函數(shù))都可以作為條件表達式。選擇結(jié)構(gòu)分為單分支結(jié)構(gòu)、多分支結(jié)構(gòu)、嵌套分支結(jié)構(gòu)等多種形式。if條件表達式1:if-語句塊1[elif條件表達式2:elif-語句塊2else:else-語句塊3]其中,冒號(:)是語句塊開始標記,[]內(nèi)為可選項。選擇結(jié)構(gòu)語句——單分支結(jié)構(gòu)單分支結(jié)構(gòu)的語法格式如下:功能:如果if條件表達式的結(jié)果為真,則執(zhí)行if之后的語句塊,然后執(zhí)行分支結(jié)構(gòu)以外的語句;如果if條件表達式的結(jié)果為假,則不執(zhí)行其后面的語句塊,直接執(zhí)行分支結(jié)構(gòu)以外的語句。語句塊中可以包含多條語句。Python程序是依靠代碼塊的縮進體現(xiàn)代碼之間的邏輯關(guān)系的。行尾的冒號表示縮進的開始,縮進結(jié)束就表示一個代碼塊結(jié)束了。整個if結(jié)構(gòu)就是一個復(fù)合語句。同一級別的語句塊的縮進量必須相同。注意:if條件表達式的最后一定不能漏掉符號“:”,否則會出錯;符號“:”之后的語句塊中的語句必須縮進,否則會出錯。if條件表達式:語句塊選擇結(jié)構(gòu)語句——單分支結(jié)構(gòu)

【例2-1】單分支判斷應(yīng)用:根據(jù)現(xiàn)金管理制度,某企業(yè)每日留存的庫存現(xiàn)金限額不超過3000元,如果庫存現(xiàn)金超過限額,需要把超出限額部分于當日終了前交存開戶銀行。輸入出納當日盤點現(xiàn)金總額,判斷庫存現(xiàn)金是否超額。limit=3000amount=eval(input('輸入出納當日盤點現(xiàn)金總額:'))ifamount>limit:print(f'庫存現(xiàn)金超出限額,須交存銀行{amount-limit}元。')else:print('庫存現(xiàn)金未超出限額,無須交存銀行。')運行結(jié)果如下:輸入出納當日盤點現(xiàn)金總額:4500庫存現(xiàn)金超出限額,須交存銀行1500元。選擇結(jié)構(gòu)語句——雙分支結(jié)構(gòu)雙分支結(jié)構(gòu)的語法格式如下:功能:若if條件表達式的結(jié)果為真(True),則執(zhí)行緊隨其后的語句塊1,并跳過else之后的語句塊2,直接繼續(xù)執(zhí)行分支結(jié)構(gòu)之外的后續(xù)語句。反之,如果if條件表達式的結(jié)果為假(False),則忽略if后的語句塊1,轉(zhuǎn)而執(zhí)行else后的語句塊2,完成之后同樣繼續(xù)執(zhí)行分支結(jié)構(gòu)之外的其他語句。注意:一個if語句最多只能擁有一個else子句,且else子句必須是整條語句的最后一個子句,else沒有條件。其中else不能單獨使用,它必須和保留字if一起使用。在程序中使用if-else語句時,如果出現(xiàn)if語句多于else語句的情況,那么該else語句將會根據(jù)縮進確定該else語句屬于哪個if語句。if條件表達式:語句塊1else:語句塊2選擇結(jié)構(gòu)語句——雙分支結(jié)構(gòu)

【例2-2】雙分支判斷應(yīng)用:根據(jù)現(xiàn)金管理制度,某企業(yè)每日留存的庫存現(xiàn)金限額不超過3000元,如果庫存現(xiàn)金超過限額,需要把超出限額部分于當日終了前交存開戶銀行。輸入出納當日盤點現(xiàn)金總額,判斷庫存現(xiàn)金是否超額。limit=3000amount=eval(input('輸入出納當日盤點現(xiàn)金總額:'))ifamount>limit:print(f'庫存現(xiàn)金超出限額,須交存銀行{amount-limit}元。')else:print('庫存現(xiàn)金未超出限額,無須交存銀行。')運行結(jié)果如下:輸入出納當日盤點現(xiàn)金總額:2500庫存現(xiàn)金未超出限額,無須交存銀行。功能:如果if條件表達式1的結(jié)果為真,則執(zhí)行語句塊1,然后忽略后面的elif和else語句,直接執(zhí)行分支結(jié)構(gòu)以外的語句;如果elif條件表達式2的結(jié)果為真,則執(zhí)行語句塊2,然后直接執(zhí)行分支結(jié)構(gòu)以外的語句……如果前n-1個條件表達式都不為真,則執(zhí)行語句塊n,然后直接執(zhí)行分支結(jié)構(gòu)以外的語句。使用if-elif-else語句時,條件表達式可以是一個單純的布爾值或變量,也可以是比較表達式或邏輯表達式,如果條件表達式為真,執(zhí)行語句;而如果條件表達式為假,則跳過該語句,進行下一個elif的判斷,只有在所有條件表達式都為假的情況下,才會執(zhí)行else中的語句。選擇結(jié)構(gòu)語句——多分支結(jié)構(gòu)語法格式如下:if條件表達式1:if語句塊1elif條件表達式2:elif語句塊2elif條件表達式3:elif語句塊3[else:else語句塊4]選擇結(jié)構(gòu)語句——多分支結(jié)構(gòu)【例2-3】多分支判斷應(yīng)用:惠農(nóng)公司采用直線法(月折舊額=固定資產(chǎn)原值×(1-殘值率)/(預(yù)計使用年限×12))計提折舊,其固定資產(chǎn)折舊規(guī)定如表所示。請輸入設(shè)備的類型和價格,然后計算資產(chǎn)折舊額。資產(chǎn)類型預(yù)計使用年限/年殘值率/%房屋建筑物505生產(chǎn)設(shè)備105辦公設(shè)備33其他設(shè)備53選擇結(jié)構(gòu)語句——多分支結(jié)構(gòu)實現(xiàn)代碼如下:

price=eval(input('請輸入固定資產(chǎn)的價格:'))FAtype=input('請輸入設(shè)備類型:')ifFAtype=='房屋建筑物':year=50rate=0.05elifFAtype=='生產(chǎn)設(shè)備':year=10rate=0.05elifFAtype=='辦公設(shè)備':year=3rate=0.03else:year=5rate=0.03dep=round(price*(1-rate)/year/12,2)print('資產(chǎn)月折舊額為:',dep)選擇結(jié)構(gòu)語句——多分支結(jié)構(gòu)運行結(jié)果如下:請輸入固定資產(chǎn)的價格:8000請輸入設(shè)備類型:生產(chǎn)設(shè)備資產(chǎn)月折舊額為:63.33需要注意的是if和elif都需要判斷條件表達式的真假,而else則不需要判斷;另外,elif和else都必須與if一起使用,不能單獨使用。選擇結(jié)構(gòu)語句——嵌套分支結(jié)構(gòu)多分支結(jié)構(gòu)也可以使用嵌套分支結(jié)構(gòu)實現(xiàn)。語法格式如下:上述格式中,外層的if塊中嵌套了一個if-else結(jié)構(gòu),外層的else塊中嵌套了一個if結(jié)構(gòu)。if條件表達式1:語句塊1if條件表達式:語句塊2else:語句塊3else:if條件表達式4:語句塊4循環(huán)結(jié)構(gòu)是指滿足一定條件的情況下,重復(fù)執(zhí)行特定代碼塊的一種編碼結(jié)構(gòu)。其中,被重復(fù)執(zhí)行的代碼塊稱為循環(huán)體,判斷是否繼續(xù)執(zhí)行的條件稱為循環(huán)終止條件。在Python中,常見的循環(huán)語句是while語句和for語句兩種格式。while循環(huán)與for循環(huán)的思路類似,區(qū)別在于while循環(huán)需要通過條件來實現(xiàn)邏輯控制,而不能像for循環(huán)一樣直接讀取序列對象。循環(huán)結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)語句——while循環(huán)while語句通過條件表達式建立循環(huán)。while循環(huán)可實現(xiàn)無限循環(huán),即永遠執(zhí)行。無限循環(huán)的本質(zhì)是死循環(huán),僅在特定場景下使用,因此應(yīng)該在循環(huán)中設(shè)計退出機制。while循環(huán)的語法格式如下:當條件表達式的值為True時,執(zhí)行循環(huán)體的語句,循環(huán)體中可以包含多條語句,這些語句都會被重復(fù)執(zhí)行。while語句中必須有改變循環(huán)條件的語句(將循環(huán)條件改變?yōu)镕alse的代碼),否則會進入死循環(huán)。while條件表達式:循環(huán)體循環(huán)結(jié)構(gòu)語句——while循環(huán)【例2-5】某部門為分析每月的產(chǎn)品銷售量,先連續(xù)輸入各個月份的產(chǎn)品銷售量,以輸入0或者負數(shù)來結(jié)束輸入,并輸出最終的平均產(chǎn)品銷售量。實現(xiàn)代碼如下:

total=0count=0num=int(input("請輸入產(chǎn)品銷售量:"))whilenum>0:total+=numcount+=1num=int(input("請輸入產(chǎn)品銷售量:"))ifcount>0:print(f'該部門每月平均銷售量為{round(total/count)}。')循環(huán)結(jié)構(gòu)語句——while循環(huán)運行結(jié)果如下:請輸入產(chǎn)品銷售量:875請輸入產(chǎn)品銷售量:672請輸入產(chǎn)品銷售量:673請輸入產(chǎn)品銷售量:860請輸入產(chǎn)品銷售量:0該部門每月平均銷售量為770。循環(huán)結(jié)構(gòu)語句——for循環(huán)for循環(huán)是一個依次重復(fù)執(zhí)行的循環(huán)。通常適用于枚舉或遍歷序列,以及迭代對象中的元素。其中,可迭代對象一次返回一個元素,因而適用于循環(huán)。Python包括以下幾種可迭代對象:序列(sequence),例如字符串(str)、列表(list)、元組(tuple)等;字典(dict);文件對象;迭代器對象(iterator);生成器函數(shù)(generator)。迭代器是一個對象,表示可迭代的數(shù)據(jù)集合,包括方法__iter__()和__next__(),可以實現(xiàn)迭代功能。生成器是一個函數(shù),使用yield語句,每次產(chǎn)生一個值,也可以用于循環(huán)迭代。循環(huán)結(jié)構(gòu)語句——for循環(huán)for循環(huán)的語法格式如下:其中,迭代變量用于保存讀取出的值;對象為要遍歷或迭代的對象,該對象可以是任何有序的序列對象,循環(huán)體為一組被重復(fù)執(zhí)行的語句。for語句依次從序列或可迭代對象中取出一個元素并賦值給變量,然后執(zhí)行循環(huán)體代碼,直到序列或可迭代對象為空。for迭代變量in序列或迭代對象:循環(huán)體循環(huán)結(jié)構(gòu)語句——for循環(huán)使用for語句處理列表時,程序會自動迭代列表對象,不需要定義和控制循環(huán)變量,代碼更簡潔。range函數(shù)屬于Python內(nèi)置的函數(shù),返回一個可迭代對象,語法格式如下:start:定計數(shù)的起始值,可以省略,若省略默認值為0;end:計數(shù)的結(jié)束值(但不含該值),不可缺省。step:計數(shù)的步長,即兩個數(shù)之間的間隔,可以省略,若省略默認值為1。功能:產(chǎn)生以start為起點,以end為終點(不包括end),以step為步長的int型列表對象。這里的3個參數(shù)可以是正整數(shù)、負整數(shù)或者0。在使用range函數(shù)時,如果只有一個參數(shù),那么表示指定的是end;如果有兩個參數(shù),則表示指定的是start和end;當3個參數(shù)都存在時,最后一個參數(shù)才表示步長。range(start,end,step)循環(huán)結(jié)構(gòu)語句——for循環(huán)

【例2-6】某部門為分析一個季度的每個月的營收狀況。請輸入一個季度每月的營收額,并輸出該季度每月的平均營收額。實現(xiàn)代碼如下:total=0foriinrange(1,4):money=float(input(f"請輸入第{i}個月的營收額:"))total+=moneyprint(f'該部門每月的平均營收額為{round(total/3,2)}元。')循環(huán)結(jié)構(gòu)語句——for循環(huán)運行結(jié)果如下:請輸入第1個月的營收額:8900請輸入第2個月的營收額:12760請輸入第3個月的營收額:7800該部門每月的平均營收額為9820.0元。循環(huán)結(jié)構(gòu)語句——循環(huán)嵌套在Python中,允許在一個循環(huán)體中嵌入另一個循環(huán),這稱為循環(huán)嵌套。在Python中,for循環(huán)和while循環(huán)都可以進行循環(huán)嵌套。【例2-7】收益率可以幫助投資者了解股票的表現(xiàn),并做出投資決策。手動計算每只股票的收益率既耗時又容易出錯。因此,編寫一個Python腳本,自動計算多只股票在多個時間點的收益率。數(shù)據(jù)輸入:輸入多只股票的價格數(shù)據(jù)。每只股票的價格數(shù)據(jù)包括多個時間點的價格。收益率計算:對每只股票,計算相鄰時間點的收益率。收益率公式為:收益率=(當前價格-前一價格)/前一價格*100%。結(jié)果輸出:輸出每只股票的收益率列表。循環(huán)結(jié)構(gòu)語句——循環(huán)嵌套

實現(xiàn)代碼如下:#輸入股票數(shù)量num_stocks=int(input("請輸入股票數(shù)量:"))循環(huán)嵌套#輸入每只股票的價格數(shù)據(jù)foriinrange(num_stocks):print(f"\n輸入第{i+1}只股票的價格數(shù)據(jù):")#輸入價格數(shù)據(jù)點的數(shù)量num_prices=int(input("請輸入價格數(shù)據(jù)點的數(shù)量:"))#輸入價格數(shù)據(jù)previous_price=float(input("請輸入第1個價格(元):"))print("這是第一個價格,無法計算收益率。")forjinrange(1,num_prices):current_price=float(input(f"請輸入第{j+1}個價格(元):"))return_rate=((current_price-previous_price)/previous_price)*100print(f"時間點{j}到{j+1}的收益率:{return_rate:.2f}%")previous_price=current_price循環(huán)結(jié)構(gòu)語句——循環(huán)嵌套運行結(jié)果如下:請輸入股票數(shù)量:2輸入第1只股票的價格數(shù)據(jù):請輸入價格數(shù)據(jù)點的數(shù)量:3請輸入第1個價格(元):100這是第一個價格,無法計算收益率。請輸入第2個價格(元):120時間點1到2的收益率:20.00%請輸入第3個價格(元):130時間點2到3的收益率:8.33%輸入第2只股票的價格數(shù)據(jù):請輸入價格數(shù)據(jù)點的數(shù)量:4請輸入第1個價格(元):200這是第一個價格,無法計算收益率。請輸入第2個價格(元):190時間點1到2的收益率:-5.00%請輸入第3個價格(元):210時間點2到3的收益率:10.53%請輸入第4個價格(元):220時間點3到4的收益率:4.76% 上述示例使用Python的循環(huán)嵌套(外層循環(huán)遍歷股票,內(nèi)層循環(huán)遍歷價格數(shù)據(jù))來解決財經(jīng)分析中的實際問題。投資者可以根據(jù)自己的需求輸入股票價格數(shù)據(jù),快速計算出每只股票的收益率。這種自動化分析方法不僅提高了效率,還減少了人為錯誤的可能性。在循環(huán)嵌套中,如果外層循環(huán)執(zhí)行n次,內(nèi)層循環(huán)執(zhí)行m次,則整個循環(huán)需要執(zhí)行n×m次。循環(huán)結(jié)構(gòu)語句

——循環(huán)嵌套break、continue和else語句在循環(huán)結(jié)構(gòu)中,還可以使用break、continue和else等語句控制循環(huán)過程或處理循環(huán)結(jié)束后的工作。

在循環(huán)過程中,有時可能需要提前跳出循環(huán),或者跳過本次循環(huán)的剩余語句以提前進行下一輪循環(huán),在這種情況下,可以在循環(huán)體中使用break語句或continue語句。如果存在多重循環(huán),則break語句只能跳出自己所屬的那層循環(huán)。break語句和continue語句通常與if語句配合使用。break、continue和else語句——break語句break語句可以終止當前的循環(huán),包括while和for在內(nèi)的所有控制語句。break語句的語法比較簡單,只需要在相應(yīng)的while或for語句中加入即可。break語句一般會結(jié)合if語句進行搭配使用,表示在某種條件下,跳出循環(huán)。如果使用嵌套循環(huán),break語句將跳出最內(nèi)層的循環(huán)?!纠?-9】允許用戶連續(xù)輸入各個月份的產(chǎn)品銷售量,以輸入0或者負數(shù)來結(jié)束輸入,并輸出最終的平均產(chǎn)品銷售量。實現(xiàn)代碼如下:break、continue和else語句——break語句

total=0count=0whileTrue:num=int(input('請輸入銷售量:'))ifnum<=0:breaktotal+=numcount+=1ifcount>0:print(f'平均產(chǎn)品的銷售量為{total/count}')break、continue和else語句——break語句運行結(jié)果如下:請輸入銷售量:230請輸入銷售量:450請輸入銷售量:124請輸入銷售量:89請輸入銷售量:67請輸入銷售量:0平均產(chǎn)品的銷售量為192.0break、continue和else語句——continue語句continue語句的作用沒有break語句強大,它只能終止本次循環(huán)而提前進入到下一次循環(huán)中。continue語句的語法比較簡單,只需要在相應(yīng)的while或for語句中加入即可。continue語句一般會結(jié)合if語句進行搭配使用,表示在某種條件下,跳過當前循環(huán)的剩余語句,然后繼續(xù)進行下一輪循環(huán)。如果使用嵌套循環(huán),continue語句將只跳過最內(nèi)層循環(huán)中的剩余語句。【例2-10】continue應(yīng)用:允許用戶連續(xù)輸入各個月份的產(chǎn)品銷售量,以輸入0或者負數(shù)來結(jié)束輸入,并輸出最終的平均產(chǎn)品銷售量。實現(xiàn)代碼如下:break、continue和else語句——continue語句

count=3total=0count=0whileTrue:num=int(input('請輸入銷售量:'))ifnum>0:total+=numcount+=1continuebreakifcount>0:print(f'平均產(chǎn)品的銷售量為{total/count}')break、continue和else語句——continue語句運行結(jié)果如下:請輸入銷售量:236請輸入銷售量:126請輸入銷售量:34請輸入銷售量:58請輸入銷售量:0平均產(chǎn)品的銷售量為113.5break、continue和else語句——else語句while語句和for語句的后邊還可以帶有else語句,用于處理循環(huán)結(jié)束后的“收尾”工作。else語句的語法格式主要有如下兩種語法格式:(1)語法格式1:while條件表達式:循環(huán)體else:else子句代碼塊break、continue和else語句——else語句(1)語法格式2:for迭代變量in序列或迭代對象:循環(huán)體else:else子句代碼塊else子句是可選的。如果有else子句,則當循環(huán)因為條件表達式不成立或序列遍歷完畢而自然結(jié)束時,就會執(zhí)行else子句的代碼。如果有else子句,但是循環(huán)是因為執(zhí)行了break語句而導(dǎo)致提前結(jié)束的,則不會執(zhí)行else子句的代碼。break、continue和else語句——continue語句

total=0count=0num=int(input("請輸入產(chǎn)品銷售量:"))whilenum>0:total+=numcount+=1num=int(input("請輸入產(chǎn)品銷售量:"))else:ifcount>0:print(f'該部門每月平均銷售量為{round(total/count)}。')【例2-11】某部門為分析每月的產(chǎn)品銷售量,先連續(xù)輸入各個月份的產(chǎn)品銷售量,以輸入0或者負數(shù)來結(jié)束輸入,并輸出最終的平均產(chǎn)品銷售量。實現(xiàn)代碼如下:break、continue和else語句——continue語句運行結(jié)果如下:請輸入產(chǎn)品銷售量:873請輸入產(chǎn)品銷售量:765請輸入產(chǎn)品銷售量:672請輸入產(chǎn)品銷售量:0該部門每月平均銷售量為770。pass語句在Python中還有一個pass語句,表示空語句,它將不做任何事情,—般起到占位作用,用于保持程序結(jié)構(gòu)的完整性。有時候程序需要占一個位置,或者放一條語句,但又不希望這條語句做任何事情,此時就可以通過pass語句來實現(xiàn)。使用pass語句比使用注釋更加優(yōu)雅。【例2-12】投資者需要根據(jù)股票價格的變化來判斷是否買入或賣出。手動分析股票價格波動既耗時又容易出錯。因此,編寫一個簡單的Python腳本,自動分析股票價格波動并給出交易建議。pass語句(1)應(yīng)用需求股票價格輸入:輸入多只股票的價格數(shù)據(jù)。每只股票的價格數(shù)據(jù)包括多個時間點的價格。(2)波動性分析對每只股票,分析價格波動情況。如果價格波動過大,提示“價格波動過大,建議觀望”。如果價格波動較小,提示“價格波動較小,建議買入”。(3)邏輯跳過使用pass語句跳過某些暫時不需要處理的邏輯。pass語句

#輸入股票數(shù)量num_stocks=int(input("請輸入股票數(shù)量:"))forstockinrange(num_stocks):print(f"\n分析第{stock+1}只股票:")#輸入股票價格print("請輸入股票價格(輸入0結(jié)束):")price=float(input("價格:"))#初始化變量prev_price=pricevolatility=0#波動性whileprice!=0:實現(xiàn)代碼如下:pass語句

#計算價格波動ifprev_price!=0:volatility=(price-prev_price)/prev_price*100print(f"價格波動:{volatility:.2f}%")#判斷波動性ifvolatility>10:print("價格波動過大,建議觀望")實現(xiàn)代碼如下:pass語句

elifvolatility<-10:print("價格波動過大,建議觀望")else:print("價格波動較小,建議買入")#暫時跳過某些邏輯passprev_price=priceprice=float(input("價格:"))print("股票價格輸入結(jié)束")實現(xiàn)代碼如下:pass語句請輸入股票數(shù)量:2分析第1只股票:請輸入股票價格(輸入0結(jié)束):價格:100價格波動:0.00%價格波動較小,建議買入價格:120價格波動:20.00%價格波動過大,建議觀望價格:130價格波動:8.33%價格波動較小,建議買入價格:0股票價格輸入結(jié)束分析第2只股票:請輸入股票價格(輸入0結(jié)束):價格:200價格波動:0.00%價格波動較小,建議買入價格:190價格波動:-5.00%價格波動較小,建議買入價格:180價格波動:-5.26%價格波動較小,建議買入價格:0股票價格輸入結(jié)束運行結(jié)果如下:結(jié)構(gòu)化模式匹配語句Python3.10中新增了一個結(jié)構(gòu)化模式匹配語句match-case,類似于其他語言如C語言switch-case,它可以方便地匹配想要的內(nèi)容,可以部分替代if-elif-else多分支語句,減少代碼。match-case結(jié)構(gòu)在多種場景下都能發(fā)揮巨大作用,常見典型的應(yīng)用場景:狀態(tài)機處理:在處理狀態(tài)機時,需要根據(jù)當前狀態(tài)執(zhí)行不同的操作。使用match-case結(jié)構(gòu)可以方便地根據(jù)狀態(tài)進行條件判斷,并執(zhí)行相應(yīng)的操作。類型判斷:在處理不同類型的數(shù)據(jù)時,可能需要根據(jù)數(shù)據(jù)類型執(zhí)行不同的操作。match-case結(jié)構(gòu)可以方便地根據(jù)數(shù)據(jù)類型進行匹配,并執(zhí)行相應(yīng)的代碼塊。協(xié)議實現(xiàn):在實現(xiàn)某種協(xié)議時,需要根據(jù)協(xié)議的不同字段進行不同的處理。match-case結(jié)構(gòu)可以方便地根據(jù)字段的值進行匹配,并執(zhí)行相應(yīng)的操作。模式匹配:當需要根據(jù)特定的模式進行匹配時,可以使用match-case結(jié)構(gòu)結(jié)合正則表達式等模式匹配方式來實現(xiàn)。結(jié)構(gòu)化模式匹配語句match-case語句語法格式如下:match變量名:casepattern1:語句塊1casepattern2:語句塊2…case_:語句塊n功能:將變量的值依次匹配case后面的模式,尋找到第一個匹配的模式則結(jié)束匹配,執(zhí)行對case塊內(nèi)的語句;如果沒有匹配的模式,則執(zhí)行case_塊內(nèi)的語句。注意,最后一個case語句與“_”之間有空格。結(jié)構(gòu)化模式匹配語句【例2-13】在電商或物流管理中,訂單會經(jīng)歷多個狀態(tài),如已接收、處理中、已發(fā)貨、已送達、已取消等。使用match-case結(jié)構(gòu)可以根據(jù)訂單的當前狀態(tài)快速匹配并執(zhí)行相應(yīng)的處理邏輯。實現(xiàn)代碼如下:

#訂單狀態(tài)處理案例order_status=input("請輸入訂單當前狀態(tài)(received/processing/shipped/delivered/canceled):")matchorder_status:case"received":print("訂單已接收,正在準備處理。")#執(zhí)行接收訂單后的操作,如庫存預(yù)留、通知倉庫等case"processing":print("訂單正在處理中,請耐心等待。")#執(zhí)行訂單處理中的操作,如更新進度、檢查庫存等case"shipped":print("訂單已發(fā)貨,物流信息已更新。")結(jié)構(gòu)化模式匹配語句

#訂單狀態(tài)處理案例order_status=input("請輸入訂單當前狀態(tài)(received/processing/shipped/delivered/canceled):")matchorder_status:case"received":print("訂單已接收,正在準備處理。")#執(zhí)行接收訂單后的操作,如庫存預(yù)留、通知倉庫等case"processing":print("訂單正在處理中,請耐心等待。")#執(zhí)行訂單處理中的操作,如更新進度、檢查庫存等case"shipped":print("訂單已發(fā)貨,物流信息已更新。")結(jié)構(gòu)化模式匹配語句運行結(jié)果如下:請輸入訂單當前狀態(tài)(received/processing/shipped/delivered/canceled):received訂單已接收,正在準備處理。此外,match-case還可以使用邏輯或符號“|”實現(xiàn)多條件匹配,例如,“casepatern_1|pattern_2|pattern_3|…”,如同“if條件1or條件2or條件3…”。結(jié)構(gòu)化模式匹配語句【例2-14】投票表決器:要求設(shè)計一個投票表決器,其功能是:輸入Y、y,打印agree。輸入N、n,打印disagree。輸入其他,打印lose。

result=input('請輸入你的投票意向:')matchresult:case'y'|'Y':print('agree')case'n'|'N':print('disagree')case_:print('lose')結(jié)構(gòu)化模式匹配語句運行結(jié)果如下:請輸入你的投票意向:yagreematch-case語句不僅可以匹配數(shù)字、字符串、列表、字典、元組等不同的數(shù)據(jù)類型,而且支持通配符匹配。程序的錯誤與異常處理1.程序的錯誤與處理Python程序的錯誤通??梢苑譃槿N類型,即語法錯誤、運行時錯誤和邏輯錯誤。(1)語法錯誤Python程序的語法錯誤是指其源代碼中拼寫語法錯誤,這些錯誤導(dǎo)致Python編譯器無法把Python源代碼轉(zhuǎn)換為字節(jié)碼,故也稱之為編譯錯誤。程序中包含語法錯誤時,編譯器將顯示SyntaxError錯誤信息。通過分析編譯器拋出的運行時錯誤信息,仔細分析相關(guān)位置的代碼,可以定位并修改程序錯誤。程序的錯誤與異常處理——程序的錯誤與處理(2)運行時錯誤Python程序的運行時錯誤是在解釋執(zhí)行過程中產(chǎn)生的錯誤。例如,如果程序中沒有導(dǎo)入相關(guān)的模塊(例如importrandom)時,解釋器將在運行時拋出NameError錯誤信息;如果程序中包括零除運算,解釋器將在運行時拋出ZeroDivisionError錯誤信息;如果程序中試圖打開不存在的文件,解釋器將在運行時拋出FileNotFoundError錯誤信息。通過分析解釋器拋出的運行時錯誤信息,仔細分析相關(guān)位置的代碼,可以定位并修改程序錯誤。(3)邏輯錯誤P

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論