Python 的內建函數(generic functions)
使用 help() 查詢文件
使用 type() 函數來觀察變數類型
使用 help() 查詢文件
使用 type() 函數來觀察變數類型
內建函數2
help(sorted)
out:
out:
Help on built-in function sorted in module builtins:
sorted(iterable, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customise the sort order, and the reverse flag can be set to request the result in descending order.
distances = [3, 5, 10, 21, 42.125]
# 應用函數
print(max(distances)) # 最長的距離
print(min(distances)) # 最短的距離
print(len(distances)) # 總共有幾個距離
print(sorted(distances, reverse = True)) # 遞減排序
# 應用函數
print(max(distances)) # 最長的距離
print(min(distances)) # 最短的距離
print(len(distances)) # 總共有幾個距離
print(sorted(distances, reverse = True)) # 遞減排序
自訂函數1
自訂函數的結構
def function_name(輸入, 參數 1, 參數 2, ...):
'''
Docstrings # 說明
'''
# 做些什麼事
return 結果
自訂函數2
import math # 要使用 pi 得引入套件 math
# 定義自訂函數
def circle_calculate(radius, area = True):
'依據輸入的半徑與 area 參數計算圓形的面積或周長' # 單行的 docstring
circle_area = math.pi * radius**2
circle_circum = 2 * math.pi * radius
if (area == True):
return circle_area
else:
return circle_circum
# 呼叫自訂函數
help(circle_calculate) # 查詢自訂函數
my_radius = 3 print(circle_calculate(my_radius)) # 預設回傳面積 print(circle_calculate(my_radius, area = False)) # 指定參數回傳周長
自訂函數3
在 return 後面將多個值用逗號 , 隔開就會回傳一個 tuple
在 return 後面將多個值用逗號 , 隔開就會回傳一個 tuple
import math # 要使用 pi 得引入套件 math
# 定義自訂函數
def circle_calculate(radius):
'依據輸入的半徑同時計算並回傳圓形的面積或周長' # 單行的 docstring
circle_area = math.pi * radius**2
circle_circum = 2 * math.pi * radius
return circle_area, circle_circum
# 呼叫自訂函數
my_radius = 3
print(circle_calculate(my_radius))
自訂函數4
交換排序法(exchange sorting)
import random # 呼叫函數時使用隨機整數
# 定義自訂函數
def exchange_sort(input_list, reverse = False):
''' # 多行的 docstrings
依據輸入的 list 與 reverse 參數排序 list 中的數字後回傳。
reverse 參數預設為 False 遞增排序,可以修改為 True 遞減排序。
'''
input_list_cloned = input_list
# 遞增排序
if reverse == False:
for i in range(0, len(input_list) - 1):
for j in range(i+1, len(input_list)):
# 如果前一個數字比後一個數字大則交換位置
if input_list_cloned[i] > input_list_cloned[j]:
temp = input_list_cloned[i]
input_list_cloned[i] = input_list_cloned[j]
input_list_cloned[j] = temp
# 遞減排序
else:
for i in range(0, len(input_list) - 1):
for j in range(i+1, len(input_list)):
# 如果前一個數字比後一個數字小則交換位置
if input_list_cloned[i] < input_list_cloned[j]:
temp = input_list_cloned[i]
input_list_cloned[i] = input_list_cloned[j]
input_list_cloned[j] = temp
return input_list_cloned
#呼叫自訂函數
my_list = random.sample(range(0, 100), 10) #產生一組隨機數
print(my_list) #看看為排序前
print(exchange_sort(my_list)) #預設遞增排序
print(exchange_sort(my_list, reverse = True)) #指定參數遞減排序
巢狀函數
在函數裡面嵌入函數
舉例來說一個計算平均數的函數裡面應該要包含兩個函數:
一個是計算總和的函數 my_sum()
一個是計算個數的函數 my_length()
# 定義自訂函數
def my_mean(input_list):
'計算平均數' # docstrings
def my_sum(input_list):
'計算總和'
temp_sum = 0
for i in input_list:
temp_sum += i
return temp_sum
def my_length(input_list):
'計算個數'
temp_length = 0
for i in input_list:
temp_length += 1
return temp_length
return my_sum(input_list) / my_length(input_list)
# 呼叫自訂函數
one_to_10 = range(1, 11)
print(my_mean(one_to_10))
錯誤處理
Python 使用 try - except 的語法結構進行錯誤處理
import math # 要使用 pi 得引入套件 math
# 定義自訂函數
def circle_calculate(radius):
'依據輸入的半徑同時計算並回傳圓形的面積或周長' # 單行的 docstring
try:
circle_area = math.pi * radius**2
circle_circum = 2 * math.pi * radius
return circle_area, circle_circum
except:
print("請輸入數值。")
# 呼叫自訂函數
my_radius = "3"
circle_calculate(my_radius)
作業二(temporary)
import math
def my_sd_function(numbers):
def my_sd_function(numbers):
'自定的標準差函數,請輸入一個數列'
N = len(numbers)
sumation = 0
for i in numbers:
sumation += number
mu = sumation / N
for j in numbers:
another_sumation += (J-mu)**2
return math.sqrt(another_sumation / N)
my_list = range(1, 6)
print(my_sd_function(my_list))
沒有留言:
張貼留言