Skip to content

Latest commit

 

History

History
111 lines (99 loc) · 3.16 KB

tutorial04.md

File metadata and controls

111 lines (99 loc) · 3.16 KB

Python程式教學04

[回首頁]


三元運算子

如果if判斷式較簡單,可簡化成以下

(輸出) = (條件為真) if (條件) else (條件為假)
isTrue = True
state = "True" if isTrue else "not True"    #True

# 等於
isTrue = True
if isTrue:
    state = "True"
else:
    state = "not True"
a,b=2,3
c=a if a>b else b
print(c)    #3

遞迴

在函式中自己呼叫自己叫做遞迴函式
範例:n階層的遞迴

def math_fuc(n):
    result = 0
    if n==0 or n==1:
        result = 1
    else:
        result = n*math_fuc(n-1)
    return result

for i in range(1,11):
    print(i,'階層=',math_fuc(i))

tutorial04_image01.png

優點:
遞迴使程式碼看起來更加整潔、優雅
可以用遞迴將複雜任務分解成更簡單的子問題

缺點:
遞迴的邏輯較難除錯
遞迴呼叫的代價高昂(效率低),因為佔用了大量的記憶體和時間

例外處理

  • 語法錯誤 (syntaxError)
    (if判斷式後面沒有:)
    tutorial04_image02.png
  • 沒有命名對象 (NameError)
    (n沒有命名)
    tutorial04_image03.png
  • 除零錯誤 (ZeroDivisionError)
    除數不可為0
    tutorial04_image04.png

try-except

try:
    嘗試執行的程式
except 例外名稱 as 變數名稱:
    例外發生時執行的程式
else:
    若try沒產生例外則會執行這裡
finally:
    不管有沒有發生例外都會跑到的程式

except區塊可以多個,至少一個,as 變數名稱 可以用或不用,變數會儲存例外的狀況,
else與finally可選擇用或不用。

例如:

a = 12
b = int(input('b:'))
   
try:
    if a/b:
        print('等於:',a/b)
except ZeroDivisionError:
    print('發生除零錯誤')
else:
    print('沒發生除零錯誤')
finally:
    print('不管有沒有發生例外都會執行')

tutorial04_image05.png

內建函數

函數 函數內容
abs(x) 回傳 x 的絕對值
input([prompt]) 接受使用者的輸入, prompt 為提示字串
len(s) 回傳複合資料型態的元素個數
max(iterable[, args...]) 回傳參數中的最大值
min(iterable[, args...]) 回傳參數中的最小值
print([object, ...], end='\n') 印出 object 的內容
range([start], stop[, step]) 建立整數序列
sum(iterable) 回傳迭代器 iterable 的總和