SlideShare a Scribd company logo
1 of 14
Download to read offline
Python 教學
函數
陳信宏
eosinchen@gmail.com
相關程式碼,置於:
https://github.com/eosinchen/PythonCode
Python 函數
# Python 函數語法
def 函數名稱(傳入參數):
內縮敘述句
內縮敘述句
內縮敘述句
內縮敘述句
return n (用 return 結束函數,與傳回值)
用輾轉相除法求最大公約數
# 用輾轉相除法求最大公約數
def gcd(m, n):
if (n == 0):
return m
else:
return gcd(n, m % n)
同名函數
# Python 不支援 function overload
# 若有兩個以上相同名稱的 function
# 最後一個會覆蓋前者的定義
def sum(a, b):
return a + b
def sum(a, b, c):
return a + b + c
#print(sum(10, 20))
# TypeError: sum() missing 1 required positional argument: 'c'
同名函數與預設參數值
# 函數中,可以預設參數的值
# 即可用來解決參數個數不同的重載問題
def sum(a, b, c = 0):
return a + b + c
#此時執行以下呼叫就沒有錯誤
print(sum(10, 20))
關鍵字參數
# 在呼叫函式時,並不一定要依參數宣告順序來傳入參數
# 可以指定參數名稱來設定其引數值,稱之為關鍵字參數
def sum(a, b, c = 0):
return a + b + c
print(sum(c = 50, a = 45, b = 63))
函數和物件資源(一)
# 函數和物件資源
def appendTo(element, arr = []):
print("In Function => " ,end="")
print(arr)
arr.append(element)
return arr
#arr 是一個陣列,也是一個物件
函數和物件資源(二)
# 觀察以下的執行情況
#print(appendTo(10, [1, 2, 3]))
# 沒有傳入 arr 陣列時,會怎樣?
# 會建立一個 arr 物件
# 這個物件會一直都在
#print(appendTo(10))
#print(appendTo(20, [4, 5, 6]))
# 加到 appendto(10) 所建立的物件中
#print(appendTo(20))
# 加到 appendto(10) 所建立的物件中
#print(appendTo(30))
#print(appendTo(40))
不定個數的參數,使用 * (一)
# 函數接受不定個數的參數
# 利用 * 將所有的參數,收集到一個 tuple(唯讀 List)中
def sum_many_item(*numbers):
print(type(numbers))
print(numbers)
total = 0
for number in numbers:
total += number
return total
不定個數的參數,使用 * (二)
#print(sum_many_item(10, 20))
#print(sum_many_item(10, 20, 30))
#print(sum_many_item(10, 20, 30, 100))
不定個數的參數,使用 **
# 函數接受不定個數的參數
# 型態不相同,名稱也有其意義
# 利用 * 將所有的參數,收集到一個 dict(key-value)中
# dict 格式 {"key1" : "value1", "key2" : 10, "key3" : "word1"}
def use_dict_argu(**dict):
print(type(dict))
print(dict)
for dict_key in dict.keys():
print(dict[dict_key])
#use_dict_argu(ABC = 10, DFE = 20, DFG = "12345")
巢狀函數 - 以選擇排序法為例(一)
# 巢狀函數
# 以選擇排序法為例
def selection(number):
# def 中的 def
# 找出未排序中最小值
def min(m, j):
if j == len(number):
return m
elif number[j] < number[m]:
return min(j, j + 1)
else:
return min(m, j + 1)
巢狀函數 - 以選擇排序法為例(二)
# 排序迴圈
for i in range(0, len(number)):
# 找出較小者
m = min(i, i + 1)
if i != m:
# 進行交換
number[i], number[m] = number[m], number[i]
#主程式執行方式
number = [1, 5, 2, 3, 9, 7]
selection(number)
print(number)
函數遞迴 練習題
1. 費式數列(Fibonacci)的定義如下:
F(0) = 0
F(1) = 1
F(n) = F(n-1) + F(n-2)
利用遞迴呼叫,求得以下費式函數的值
F(10) = ?
F(20) = ?
F(50) = ?
參考網址:
https://openhome.cc/Gossip/AlgorithmGossip/FibonacciNumber.htm

More Related Content

What's hot

中心教员Java面试题1
中心教员Java面试题1中心教员Java面试题1
中心教员Java面试题1
yiditushe
 
OOP in C - Virtual Function (Chinese Version)
OOP in C - Virtual Function (Chinese Version)OOP in C - Virtual Function (Chinese Version)
OOP in C - Virtual Function (Chinese Version)
Kai-Feng Chou
 

What's hot (20)

中心教员Java面试题1
中心教员Java面试题1中心教员Java面试题1
中心教员Java面试题1
 
Ch1 c++總複習
Ch1 c++總複習Ch1 c++總複習
Ch1 c++總複習
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
 
Intro to C++ Basic
Intro to C++ BasicIntro to C++ Basic
Intro to C++ Basic
 
Ppt 138-142
Ppt 138-142Ppt 138-142
Ppt 138-142
 
Ppt 78-100
Ppt 78-100Ppt 78-100
Ppt 78-100
 
Taylor example
Taylor exampleTaylor example
Taylor example
 
Ppt 1-25
Ppt 1-25Ppt 1-25
Ppt 1-25
 
OOP in C - Virtual Function (Chinese Version)
OOP in C - Virtual Function (Chinese Version)OOP in C - Virtual Function (Chinese Version)
OOP in C - Virtual Function (Chinese Version)
 
Python變數與資料運算
Python變數與資料運算Python變數與資料運算
Python變數與資料運算
 
Ch12 範例
Ch12 範例Ch12 範例
Ch12 範例
 
Ppt 127-135
Ppt 127-135Ppt 127-135
Ppt 127-135
 
Ch 5
Ch 5Ch 5
Ch 5
 
Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)
 
C程式-函式與巨集
C程式-函式與巨集C程式-函式與巨集
C程式-函式與巨集
 
Ch8 教學
Ch8 教學Ch8 教學
Ch8 教學
 
Python 迴圈作業
Python 迴圈作業Python 迴圈作業
Python 迴圈作業
 
系統程式 -- 第 3 章
系統程式 -- 第 3 章系統程式 -- 第 3 章
系統程式 -- 第 3 章
 
Wasm text
Wasm textWasm text
Wasm text
 

Similar to Ptyhon 教學 003 函數

Coding guideline
Coding guidelineCoding guideline
Coding guideline
斯理 衛
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
 
第7章预编译命令
第7章预编译命令第7章预编译命令
第7章预编译命令
summerfeng
 
第3章算法与控制语句
第3章算法与控制语句第3章算法与控制语句
第3章算法与控制语句
summerfeng
 

Similar to Ptyhon 教學 003 函數 (20)

Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
 
ncuma_函式.pptx
ncuma_函式.pptxncuma_函式.pptx
ncuma_函式.pptx
 
Ch9
Ch9Ch9
Ch9
 
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
 
Ch 8
Ch 8Ch 8
Ch 8
 
ncuma_函數微分計算.pptx
ncuma_函數微分計算.pptxncuma_函數微分計算.pptx
ncuma_函數微分計算.pptx
 
函數微分_範例.pptx
函數微分_範例.pptx函數微分_範例.pptx
函數微分_範例.pptx
 
Coding guideline
Coding guidelineCoding guideline
Coding guideline
 
Ch10
Ch10Ch10
Ch10
 
Ch10 教學
Ch10 教學Ch10 教學
Ch10 教學
 
ncuma_Taylor 多項式.pptx
ncuma_Taylor 多項式.pptxncuma_Taylor 多項式.pptx
ncuma_Taylor 多項式.pptx
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
 
第4章函数
第4章函数第4章函数
第4章函数
 
C#语言的演化
C#语言的演化C#语言的演化
C#语言的演化
 
Python基本資料運算
Python基本資料運算Python基本資料運算
Python基本資料運算
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introduction
 
第7章预编译命令
第7章预编译命令第7章预编译命令
第7章预编译命令
 
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式
 
第3章算法与控制语句
第3章算法与控制语句第3章算法与控制语句
第3章算法与控制语句
 

More from 信宏 陳

搜主意 App 提案計畫 for nsysu 20130409 130
搜主意 App 提案計畫 for nsysu 20130409 130搜主意 App 提案計畫 for nsysu 20130409 130
搜主意 App 提案計畫 for nsysu 20130409 130
信宏 陳
 
App 的設計、開發、與行銷 設計篇 v1.0.0
App 的設計、開發、與行銷 設計篇 v1.0.0App 的設計、開發、與行銷 設計篇 v1.0.0
App 的設計、開發、與行銷 設計篇 v1.0.0
信宏 陳
 
Android 系統的歷史、發展策略與技術創新 v1.1.0
Android 系統的歷史、發展策略與技術創新 v1.1.0Android 系統的歷史、發展策略與技術創新 v1.1.0
Android 系統的歷史、發展策略與技術創新 v1.1.0
信宏 陳
 
不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式
不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式
不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式
信宏 陳
 
Mes 分析 第六週
Mes 分析 第六週Mes 分析 第六週
Mes 分析 第六週
信宏 陳
 
Mes 分析 第五週
Mes 分析 第五週Mes 分析 第五週
Mes 分析 第五週
信宏 陳
 
Mes 分析 第四週
Mes 分析 第四週Mes 分析 第四週
Mes 分析 第四週
信宏 陳
 
Mes 分析 第三週
Mes 分析 第三週Mes 分析 第三週
Mes 分析 第三週
信宏 陳
 
Mes 分析 第二週
Mes 分析 第二週Mes 分析 第二週
Mes 分析 第二週
信宏 陳
 

More from 信宏 陳 (20)

資訊管理專題研討_資管人的職場方向與能力修練_20210310.pptx
資訊管理專題研討_資管人的職場方向與能力修練_20210310.pptx資訊管理專題研討_資管人的職場方向與能力修練_20210310.pptx
資訊管理專題研討_資管人的職場方向與能力修練_20210310.pptx
 
React Native App設計與開發專題研習課程 006
React Native App設計與開發專題研習課程 006React Native App設計與開發專題研習課程 006
React Native App設計與開發專題研習課程 006
 
React Native App 設計與開發專題研習課程 005
React Native App 設計與開發專題研習課程 005React Native App 設計與開發專題研習課程 005
React Native App 設計與開發專題研習課程 005
 
React Native App 設計與開發專題研習課程 004
React Native App 設計與開發專題研習課程 004React Native App 設計與開發專題研習課程 004
React Native App 設計與開發專題研習課程 004
 
React Native App 設計與開發專題研習課程 003
React Native App 設計與開發專題研習課程 003React Native App 設計與開發專題研習課程 003
React Native App 設計與開發專題研習課程 003
 
React Native App 設計與開發專題研習課程 002
React Native App 設計與開發專題研習課程 002React Native App 設計與開發專題研習課程 002
React Native App 設計與開發專題研習課程 002
 
React Native App 設計與開發專題研習課程 001
React Native App 設計與開發專題研習課程 001React Native App 設計與開發專題研習課程 001
React Native App 設計與開發專題研習課程 001
 
Ptyhon 教學 002 程式流程控制(while-for)
Ptyhon 教學 002 程式流程控制(while-for)Ptyhon 教學 002 程式流程控制(while-for)
Ptyhon 教學 002 程式流程控制(while-for)
 
Ptyhon 教學 001 程式流程控制(if-elif-else)
Ptyhon 教學 001 程式流程控制(if-elif-else)Ptyhon 教學 001 程式流程控制(if-elif-else)
Ptyhon 教學 001 程式流程控制(if-elif-else)
 
就職 創業 即戰力_20161214
就職 創業 即戰力_20161214就職 創業 即戰力_20161214
就職 創業 即戰力_20161214
 
那些 App 的兩三事 關於設計、開發、行銷的一些經驗分享 v1.0.0
那些 App 的兩三事 關於設計、開發、行銷的一些經驗分享 v1.0.0那些 App 的兩三事 關於設計、開發、行銷的一些經驗分享 v1.0.0
那些 App 的兩三事 關於設計、開發、行銷的一些經驗分享 v1.0.0
 
搜主意 App 提案計畫 for nsysu 20130409 130
搜主意 App 提案計畫 for nsysu 20130409 130搜主意 App 提案計畫 for nsysu 20130409 130
搜主意 App 提案計畫 for nsysu 20130409 130
 
App 的設計、開發、與行銷 設計篇 v1.0.0
App 的設計、開發、與行銷 設計篇 v1.0.0App 的設計、開發、與行銷 設計篇 v1.0.0
App 的設計、開發、與行銷 設計篇 v1.0.0
 
Android 系統的歷史、發展策略與技術創新 v1.1.0
Android 系統的歷史、發展策略與技術創新 v1.1.0Android 系統的歷史、發展策略與技術創新 v1.1.0
Android 系統的歷史、發展策略與技術創新 v1.1.0
 
不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式
不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式
不同尺寸與解析度的螢幕下,Android 程式 UI 的設計與解決方式
 
Mes 分析 第六週
Mes 分析 第六週Mes 分析 第六週
Mes 分析 第六週
 
Mes 分析 第五週
Mes 分析 第五週Mes 分析 第五週
Mes 分析 第五週
 
Mes 分析 第四週
Mes 分析 第四週Mes 分析 第四週
Mes 分析 第四週
 
Mes 分析 第三週
Mes 分析 第三週Mes 分析 第三週
Mes 分析 第三週
 
Mes 分析 第二週
Mes 分析 第二週Mes 分析 第二週
Mes 分析 第二週
 

Ptyhon 教學 003 函數