4. 用「*」接收多個positional引數
(1) 可接收多個positional引數
在函式的參數名稱之前加入「*」,該參數就可以接收多個引數值,傳入值將以tuple型態儲存。
以下是一個例子:
第1行中,*score代表參數score可接收多個值。
呼叫函式:
在第1行中,80、70、60這3個引數將以(80, 70, 60)的tuple型態存在參數score中。
執行結果:
70.0分 83.5分
說明:
(2) 不同型態的參數一起使用
如果函式的參數除了有只接收1個值的參數,也有接收不定個數的引數的參數時,請將只接收1個值的參數寫在前面,其後才寫接收不定個數引數的參數。
以下是一個例子:
在第1行,passOral只接收1個引數,請寫在前面;*score可接收多個引數,請寫在後面。
呼叫函式:
執行結果:
73.0分 83.5分
說明:
問題1:
撰寫一個函式,名稱是teenager,接收不定個數的年齡資料。請計算並回傳傳入資料中有多少人的年齡介於13~19歲之間(包括13及19歲)。
測試範例:
teenager(10, 20, 15, 18, 21) -> 2 teenager(20, 30, 35, 5, 10, 10) -> 0
問題2:
撰寫一個函式,名稱是ticket,接收1個是否學生團體的參數,及不定個數的參與者年齡資料。假設學生團體的參與者18歲(含)以上每人200元,不足18歲每人120元;非學生團體的參與者18歲(含)以上每人250元,不足18歲每人180元。請計算並回傳票價。
測試範例(小數取2位):
ticket(True, 20, 21, 20, 15) -> 720元 ticket(False, 20, 21, 20, 21, 15, 12) -> 1,360元