Python 語言 講義  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A B C


自訂函數

分3種: [無傳入參數, 無傳回值], [有傳入參數, 無傳回值], [有傳入參數, 有傳回值]
參數 傳遞方式: 傳值呼叫(數值、字串、序對)、傳址呼叫(串列、集合、字典), 是強制規定(無法自由選用)
區域變數(在自訂函數中定義的變數, 被縮排了),全域變數(區域變數除外)

# 無傳入參數, 無傳回值
def pntline():
    print("-----------------")

#主程式
pntline()
print("  Welcome ")
pntline()
#-----------------------------------
# 有傳入參數, 無傳回值
def ctof(c):
    f = c * 9.0 / 5.0 + 32.0 # 計算公式
    print("攝氏",c,"度 = 華氏 ",f,"度")

#主程式
c = eval(input("溫度換算-攝氏轉華氏, 請輸入攝氏:"))
ctof(c)
#-----------------------------------
# 有傳入參數, 有傳回值
def ctof2(c):
    f = c * 9.0 / 5.0 + 32.0 # 計算公式
    return f

#主程式
c = eval(input("溫度換算-攝氏轉華氏, 請輸入攝氏:"))
f = ctof2(c)
print("攝氏",c,"度 = 華氏 ",f,"度")


一些新的用法:
  參數列可以使用"任意引數串列"
  傳回值可以多個

#-----------------------------------
# 任意引數串列
def sumall(*lst):
 sum = 0
 for i in lst:
  sum = sum + i
 return sum

#主程式
print(sumall(1,2))
print(sumall(1,2,3,4))
print(sumall(1,2,3,4,5))

#-----------------------------------
# 傳回值可以多個
def divmod(x, y):
 div = x // y
 mod = x % y
 return div, mod

#主程式
a, b = divmod(93, 10)
print(93,"除以", 10, ", 其商為",a, ", 餘數為", b)
c, d = divmod(55, 12)
print(55,"除以", 12, ", 其商為",c, ", 餘數為", d)

遞迴函數:

#-----------------------------------
# 傳回值可以多個
def factorial(n):
 if n == 0:
  return 1
 else:
  return factorial(n-1)*n

#主程式
print("5!=", factorial(5))
print("6!=", factorial(6))

Python 語言 講義  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A B C