在程式設計中,「函式」是程式碼的基石之一,透過函式可以讓你的程式更簡潔、模組化和可重用。今天我們將學習如何使用函式,這樣你可以把重複的程式碼封裝成獨立的區塊,並在需要時輕鬆地呼叫它們。
函式的定義
def 函式名稱(參數1, 參數2, ...):
# 函式內部的程式碼
return 返回值
為什麼要使用函式?
基本範例
def add_numbers(a, b):
return a + b
呼叫函式
result = add_numbers(3, 5)
print(result) # 輸出: 8
函式中的參數
def square(number):
return number * number
return
與函式的輸出return
的作用
return
用來將函式計算的結果返回給呼叫者。return
被執行時,函式會立即終止,並將結果傳遞回去。範例:計算長方形的面積
return
返回結果:
def rectangle_area(width, height):
return width * height
範例:無返回值的函式
return
。例如,這個函式只負責列印一個訊息:
def say_hello():
print("Hello, Python!")
預設參數
def greet(name="學生"):
print(f"你好, {name}!")
使用範例
name
參數,預設會使用「學生」:
greet() # 輸出: 你好, 學生!
greet("阿動") # 輸出: 你好, 阿動!
將重複程式碼封裝成函式
pi = 3.14159
radius = 5
area = pi * radius ** 2
print(area)
def circle_area(radius):
pi = 3.14159
return pi * radius ** 2
解決實際問題:計算 BMI
def calculate_bmi(weight, height):
return weight / (height ** 2)
呼叫範例
bmi = calculate_bmi(70, 1.75)
print(f"BMI: {bmi}")
本地變數
def test_function():
x = 10
print(x)
test_function() # 輸出: 10
print(x) # 這會產生錯誤,因為 x 是本地變數
全域變數
x = 10
def test_function():
global x
x = 20
test_function()
print(x) # 輸出: 20
提示:費氏數列是一個經典的遞迴(recursive)問題,可以利用函式的遞迴特性來解決。
這些練習是很好的基礎編程練習,涵蓋了函式定義、使用者輸入與輸出以及遞迴的概念。下面是針對每個練習的詳細解答,幫助你掌握如何一步步完成這些任務。
撰寫一個函式,接收兩個參數,並返回它們的和。
def add_two_numbers(a, b):
return a + b
# 測試函式
num1 = float(input("請輸入第一個數字: "))
num2 = float(input("請輸入第二個數字: "))
print(f"兩個數字的和是: {add_two_numbers(num1, num2)}")
使用函式來計算圓的面積,並讓使用者輸入半徑。公式:圓的面積 = π * 半徑^2
import math
def calculate_circle_area(radius):
return math.pi * radius ** 2
# 測試函式
radius = float(input("請輸入圓的半徑: "))
print(f"圓的面積是: {calculate_circle_area(radius):.2f}")
定義一個函式來計算 BMI,並讓使用者輸入體重和身高。公式:BMI = 體重 (kg) / 身高 (m)^2
def calculate_bmi(weight, height):
bmi = weight / (height ** 2)
return bmi
def bmi_advice(bmi):
if bmi < 18.5:
return "體重過輕"
elif 18.5 <= bmi < 24.9:
return "正常範圍"
elif 24.9 <= bmi < 29.9:
return "過重"
else:
return "肥胖"
# 測試函式
weight = float(input("請輸入體重 (kg): "))
height = float(input("請輸入身高 (m): "))
bmi = calculate_bmi(weight, height)
print(f"你的 BMI 是: {bmi:.2f}, 健康狀況: {bmi_advice(bmi)}")
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 測試函式
n = int(input("請輸入要計算的費氏數列的項數 (n): "))
print(f"費氏數列的第 {n} 項是: {fibonacci(n)}")
math
模組中的 pi
,並定義了一個函式來計算圓的面積。你可以練習使用者輸入的讀取與結果格式化輸出。透過這堂課,你將學會如何定義並呼叫函式,進一步提升程式碼的可讀性與重用性。掌握函式的使用後,你將能夠解決更多複雜的問題,並提升程式的邏輯結構。