函式&模組- Python

文章推薦指數: 80 %
投票人數:10人

Python 以def 命令建立函式(即定義函式),可不傳送參數或傳送一個或多個參數給函式, ... 常用的數值函式,如下:【參閱:Python 標準函式庫 →3.8.11 Documentation】. SearchthissiteSkiptomaincontentSkiptonavigation函式&模組2019/08/23謝碧景(c)編製更新學習目標瞭解自訂函式的建立與呼叫。

學會內建函式:數值函式、字串函式的應用。

學會函式(自訂、內建)與模組的設計與應用。

瞭解PythonPackageIndex(簡稱PyPI)的應用。

一、自訂函式(一)建立函式(定義函式)一般程式中會將特定功能或經常需重複使用之程式編撰成獨立的小單元,稱為函式,並賦予一個名稱,當程式需使用時,就呼叫執行即可。

Python以def命令建立函式(即定義函式),可不傳送參數或傳送一個或多個參數給函式,執行函式後亦可返回一個或多個回傳值,亦可無回傳值。

語法如下:def函式名稱([參數1,參數2,...]) #參數列可無或一個~多個,為接收呼叫函式傳進的值程式區塊[return回傳值1,回傳值2,...] #返回值可無或一個~多個(二)呼叫函式函式建立後不會執行,需在主程式中呼叫,才會執行。

語法如下:函式名稱([參數1,參數2,...])#無回傳值呼叫[變數]=函式名稱([參數1,參數2,...])#有回傳值呼叫*註:1.若函式有回傳值,可使用變數儲存返回值。

2.若有多個回傳值,則需相同個數的變數儲存返回值,且變數間以,逗號隔開。

範例:建立函式及呼叫函式。

例1:無參數亦無回傳值執行結果:例2:有參數無回傳值執行結果:例3:有參數有回傳值。

執行結果:例4:輸出兩數。

執行結果◆範例1:請設計函數ctof,輸入攝氏(Celsius)溫度,並轉換華氏(Fahrenheit)溫度輸出。

(檔名:ctof.py)◆範例2-1:請設計函數getArea,長方形面積:輸入長度與寬度,呼叫自訂函式getArea將長度與寬度傳入,回傳計算結果。

(檔名:getArea.py)◆範例2-2:請設計函數getSeconds求一天有幾秒。

(檔名:getSeconds.py)(三)參數預設值當自訂函式設為有參數,而呼叫函式時若沒傳入參數,會產生錯誤,為避免次錯誤,參數可設定預設值,若沒傳入參數,則會使用預設值,即參數可預設引數值defaultargumentvalue。

若有多個參數,有預設值的參數需放置於參數串列最後,即沒預設值的參數要靠前面,有預設值的參數要靠後面。

呼叫函式時可輸入參數名稱,此方式與參數順序無關,但程式執行時會降低效率。

語法如下:*參閱:呼叫函數。

中華開放教育平台→Python程式設計入門參數=值(四)變數的有效範圍變數依其有效範圍分為全域變數及區域變數。

1.全域變數:定義在函式外的變數,其有效範圍是整個Python檔案。

2.區域變數:定義在一個函式中的變數,其有效範圍是在該函式內。

程式中如有相同的全域及區域變數名稱,若變數在區域裡面,就以區域變數為主;若在區域外面,則以全域變數為主。

如下範例。

*參閱:全域變數與區域變數。

中華開放教育平台→Python程式設計入門二、內建函式(一)數值函式Python內建許多函式,例如數值函式是處理數值相關的功能。

常用的數值函式,如下:【參閱:Python標準函式庫→3.8.11Documentation】◆範例3:輸入小考成績,若輸入-1,代表成績輸入結束,請輸出輸入的成績個數、最高分、小考平均,及成績由大到小排序。

(檔名:sorted-1.py)(二)字串函式字串函式是處理字串相關功能。

如下:◆範例4:字串.split()結合sys模組應用,【參閱:模組索引→importsys、字串函式→字串.split()】。

例4-1:中華民國萬歲!【資料來源:ZeroJudge→d049】#只有一個元素split_4-1importsysforlineinsys.stdin:n,=line.split()#只有一個元素要加上逗點y=int(n)-1911#以int(字串)轉成數字print(y)#民國年份例4-2:簡易加法。

【資料來源:ZeroJudge→a002】#分割為2個變數importsys#匯入sys模組forlineinsys.stdin:a,b=line.split()#字串分割為2個變數print(int(a)+int(b))#兩數相加例4-3:字串有多個元素,分割後成串列。

◆範例5:檢測網址正確否,即網址若為http://或https://開頭,為正確,否則錯誤。

(檔案:startswith-1.py)三、模組(Module)模組是一個Python檔案,以.py結尾,包含Python物件定義和Python語句。

每一個Python檔案被視為一個模組,可在程式中匯入其他Python模組,模組就可以不斷的被其他程式再利用。

參閱:官網Pythondocumentation、模組的索引、語法參考。

(一)亂數模組_randomrandom可產生整數或浮點數的亂數,亦可一次取得多個亂數。

使用import命令即可匯入模組,而模組中有許多函式可應用,1.匯入整個模組:import模組名稱 #匯入整個模組,例importrandom模組名稱.函式名稱(參數) #呼叫函式,例random.randint(參數)2.只匯入模組中特定的函式,可如下:from模組名稱import函式名稱函式名稱(參數)例fromrandomimpotrandintrandint(參數)3.使用別名匯入模組:為避免輸入較長的模組名稱,可利用模組別名,語法如下:import模組名稱as模組別名 #模組別名,例importrandomasr模組別名.函式名稱(參數) #呼叫函式,例r.randint(參數)4.亂數模組常用函式:範例:r為亂數模組的別名,str1="Python",list1=[17,44,20,30,55]◆範例6:班上有30位同學,請幫康樂股長隨機抽5位同學上台表演。

(檔名:randint-1.py)執行結果:同法:模組別名應用,下圖,r為random的模組別名。

呈上,以randrange函式,產生1-20間,每次遞增2,的5個數字。

執行結果:◆範例7:大樂透中獎號碼為6個1到49之間不重複的數字,加1個特別號碼,請設計程式並將中獎號碼由小至大輸出,以利對獎。

(檔名:sample-1.py)◆範例8:from套件名稱import模組名稱【參閱:黃老師→Python模組】。

實作模組(檔案:Gguess.zip)實作套件(檔案:package.zip)(二)時間模組_time1.匯入時間模組:import時間模組 #匯入模組,例importtime2.時間模組常用函式:例:從1970年1月1日零時到現在經過了1567326353.5727067秒。

importtimeprint(time.time())#1567326353.5727067例:讓程式休息(停止執行)3秒。

#執行程式3秒後輸出◆範例9:函式回傳值可使用tuple回傳多個資料。

例:自訂函式ymd()使用tuple回傳時間的年、月與日。

【參閱:模組索引】(三)Pytube模組Pytube模組是專為下載YouTube影片撰寫的模組,再配合網路爬蟲技術擷取YouTube播放清單的網址,即可批次下載播放清單的所有影片。

Pytube模組可取得影片所有格式,例如下載720P、具影像及聲音的影片檔,或僅聲音的MP3格式聲音檔。

1.安裝Pytube模組:Anaconda預設沒安裝該模組,請在AnacondaPrompt輸入命令進行安裝,如下:pipinstallpytube#例pipinstallpytube==10.8.5等號後為版本號碼,省略即安裝最新版本2.使用Pytube模組下載YouTube影片,【參閱pytube官網】。

延伸:Python軟體套件索引PythonPackageIndex,簡稱PyPI,是Python程式語言當中的軟體倉庫,請連結https://pypi.org/即可搜尋。

◆範例10:人工智慧應用實例,文本分析統計方法中TF-IDF,可利用jieba(結巴)這個『第三方函式庫』做字詞重要性分析。

(檔名:pypi_ex.py)【提示:請先安裝pipinstalljieba模組套件,再編撰執行程式。

】第3-4列:載入jieba跟jieba.analyse模組套件第7-8列:把檔案的內容讀出來建立物件article請把文章存檔article1.txt,目錄與程式相同第11-12列:透過jieba內建的idf頻率庫計算文章中最重要的幾個字詞並輸出article1.txt為西遊記的第一回https://tinyl.io/4Ymy編碼請存utf-8*註:TF-IDF——用來從一段文字/一個語料庫中,給越重要的字詞/文檔,越高的加權分數。

摘自:技術分享--AnalyticLens§實作練習一、公斤轉英鎊:輸入體重公斤數,請轉換英鎊數出,英鎊=公斤*2.2。

(檔名:kgtolb.py)二、輸入一個整數,以自訂函式方式設計,請倒著輸出此數值,例:輸入12345,即輸出54321。

(檔名:def-ex2.py)三、請輸入時間之秒數,以自訂函式方式設計,轉換成[時:分:秒]格式輸出。

【提示:1小時60分鐘,1分鐘60秒,參閱:運算子→比較//(取整數商)及%(取餘數)的差異】(檔名:def-ex3.py)執行結果:四、輸入身高及體重,請設計函式BMI,並判斷BMI標準與否?(檔名:def-ex4.py)【提示1:BMI=體重/(身高*身高),身高以公尺(M)為單位,體重以公斤(KG)為單位。

】BMI<18.5,請輸出“體重過輕”。

18.5≦BMI≦23,請輸出“標準體重”。

23



請為這篇文章評分?