知識點回顧:
- 函數的定義
- 變量作用域:局部變量和全局變量
- 函數的參數類型:位置參數、默認參數、不定參數
- 傳遞參數的手段:關鍵詞參數
- 傳遞參數的順序:同時出現三種參數類型時
——————————————————————————————————————————
作業:
題目1:計算圓的面積
- 任務: 編寫一個名為 calculate_circle_area 的函數,該函數接收圓的半徑 radius 作為參數,并返回圓的面積。圓的面積 = π * radius2 (可以使用 math.pi 作為 π 的值)
- 要求:函數接收一個位置參數 radius。計算半徑為5、0、-1時候的面積
- 注意點:可以采取try-except 使函數變得更加穩健,如果傳入的半徑為負數,函數應該返回 0 (或者可以考慮引發一個ValueError,但為了簡單起見,先返回0)。
import mathdef calculate_circle_area(radius):try:if radius < 0:print('輸入半徑必須大于0!')return ValueErrorarea = math.pi * (radius ** 2)return areaexcept TypeError:print('輸入半徑必須是數字!')return TypeErrorexcept:return 0
r1 = 5
r2 = 0
r3 = -3
r4 = 'radius'print(f'計算半徑為{r1}的圓面積:{calculate_circle_area(r1)}\n')
print(f'計算半徑為{r2}的圓面積:{calculate_circle_area(r2)}\n')
print(f'計算半徑為{r3}的圓面積:{calculate_circle_area(r3)}\n')
print(f'計算半徑為{r4}的圓面積:{calculate_circle_area(r4)}\n')
?
題目2:計算矩形的面積
- 任務: 編寫一個名為 calculate_rectangle_area 的函數,該函數接收矩形的長度 length 和寬度 width 作為參數,并返回矩形的面積。
- 公式: 矩形面積 = length * width
- 要求:函數接收兩個位置參數 length 和 width。
- 函數返回計算得到的面積。
- 如果長度或寬度為負數,函數應該返回 0。
def calculate_rectangle_area(length,width):try:if length < 0 or width < 0:print('矩形的長寬必須大于0!')return 0area = length * widthreturn areaexcept TypeError:print('長和寬必須是數字!')return TypeErrorexcept:return 0len0 = -5
len1 = 1
len2 = 5wid0 = -1
wid1 = 1
wid2 = 5print(f'計算長度為{len0},寬度為{wid0}的矩形面積:{calculate_rectangle_area(len0,wid0)}\n')
print(f'計算長度為{len0},寬度為{wid1}的矩形面積:{calculate_rectangle_area(len0,wid1)}\n')
print(f'計算長度為{len0},寬度為{wid2}的矩形面積:{calculate_rectangle_area(len0,wid2)}\n')print(f'計算長度為{len1},寬度為{wid0}的矩形面積:{calculate_rectangle_area(len1,wid0)}\n')
print(f'計算長度為{len1},寬度為{wid1}的矩形面積:{calculate_rectangle_area(len1,wid1)}\n')
print(f'計算長度為{len1},寬度為{wid2}的矩形面積:{calculate_rectangle_area(len1,wid2)}\n')print(f'計算長度為{len2},寬度為{wid0}的矩形面積:{calculate_rectangle_area(len2,wid0)}\n')
print(f'計算長度為{len2},寬度為{wid1}的矩形面積:{calculate_rectangle_area(len2,wid1)}\n')
print(f'計算長度為{len2},寬度為{wid2}的矩形面積:{calculate_rectangle_area(len2,wid2)}\n')
?
題目3:計算任意數量數字的平均值
- 任務: 編寫一個名為 calculate_average 的函數,該函數可以接收任意數量的數字作為參數(引入可變位置參數 (*args)),并返回它們的平均值。
- 要求:使用 *args 來接收所有傳入的數字。
- 如果沒有任何數字傳入,函數應該返回 0。
- 函數返回計算得到的平均值。
def calculate_average(*args):try:if not args:return 0else:avg = sum(args) / len(args)return avgexcept TypeError:print('輸入必須是數字!')return Noneexcept:return None
?
題目4:打印用戶信息
- 任務: 編寫一個名為 print_user_info 的函數,該函數接收一個必需的參數 user_id,以及任意數量的額外用戶信息(作為關鍵字參數)。
- 要求:
- user_id 是一個必需的位置參數。
- 使用 **kwargs 來接收額外的用戶信息。
- 函數打印出用戶ID,然后逐行打印所有提供的額外信息(鍵和值)。
- 函數不需要返回值
def print_user_info(user_id,**kwargs):# 檢查user_id是否為可打印的值if not isinstance(user_id,(str, int, float)):print("無效的user_id,必須為字符串或數字!")returnprint(f"用戶ID:{user_id}")if kwargs:print("額外信息:")for key, value in kwargs.items():print(f"{key}:{value}")
print_user_info(12345, name="張三", age=30, email="zhangsan@example.com", country="中國")
?
題目5:格式化幾何圖形描述
- 任務: 編寫一個名為 describe_shape 的函數,該函數接收圖形的名稱 shape_name (必需),一個可選的 color (默認 “black”),以及任意數量的描述該圖形尺寸的關鍵字參數 (例如 radius=5 對于圓,length=10, width=4 對于矩形)。
def describe_shape(shape_name, color="black", **kwargs):# 打印基本圖形信息print(f"圖形名稱: {shape_name}")print(f"顏色: {color}")# 如果有額外的尺寸信息,打印尺寸信息if kwargs:print("尺寸信息:")for key, value in kwargs.items():print(f" {key}: {value}")
describe_shape("circle", color="red", radius=5)
describe_shape("rectangle", color="blue", length=10, width=4)
?
@浙大疏錦行