同時用「*」接收不定個數的引數及「**」接收不定個數的指定名稱的引數時,請將「*」型態的參數寫在前面,「**」型態的參數寫在後面 。
假設學生可以考若干的基礎科目,每通過一科得2學分;加選科目如果是國文、英文、數學、程式其中之一,每通過一科得3學分;其他科目不論是否及格均不算學分。
Copy def credit ( * basic , ** addition ):
''' 回傳學分數 '''
# 基礎科目可得學分數
basicCredit = len ([ k for k in basic if k >= 60 ]) * 2
# 加選科目可得學分數
additionCredit = len ([ k for k in addition if k in ( ' 國文 ' , ' 英文 ' , ' 數學 ' , ' 程式 ' ) and addition [ k ] >= 60 ]) * 3
return basicCredit + additionCredit 在第1行,用*basic接收多個引數值,並且用**addition接收多個指定參數的引數值。
Copy print ( f ' { credit ( 60 , 80 , 55 , 國文 = 90 , 英文 = 50 ) } ' )
print ( f ' { credit ( 50 , 40 , 30 , 55 , 地理 = 90 , 生物 = 100 ) } ' ) 在第1行,指定將(60, 80, 55) 傳給參數basic;將{國文:90, 英文:50} 傳給參數addition。
7
0
撰寫一個函式,result(*num, **limit) ,可回傳「計算後的數值」。它先接收不定個數的數值資料 ,再接收「上限值(upbound)」、「下限值(lowbound)」等兩種「限制=值 」的指定名稱引數(最多只有2個)。如果未指定下限值,則下限值=0;如果未指定上限值,則上限值=100。請回傳介於上、下限之間的不定個數的數值資料 之總和。
result(10, 20, 30, 40, 50, 60, upbound=50, lowbound=25) -> 120 (30,40,50介於25~50之間)
result(25, 45, 85, 125, lowbound=55) -> 85 (只有85介於55~100之間)
result(125, 245, 385, 425, 555) -> 0 (沒有數值介於0~100之間)
result(35, 65, 85, 100, upbound=70) -> 100 (35和65介於0~70之間)