作業:
題目1:計算圓的面積
- 任務: 編寫一個名為 calculate_circle_area 的函數,該函數接收圓的半徑 radius 作為參數,并返回圓的面積。圓的面積 = π * radius2 (可以使用 math.pi 作為 π 的值)
- 要求:函數接收一個位置參數 radius。計算半徑為5、0、-1時候的面積
- 注意點:可以采取try-except 使函數變得更加穩健,如果傳入的半徑為負數,函數應該返回 0 (或者可以考慮引發一個ValueError,但為了簡單起見,先返回0)。
import mathdef calculate_circle_area(radius):"""計算圓的面積參數:radius: 圓的半徑返回:圓的面積,如果半徑為負數則返回0"""try:# 嘗試將輸入轉換為數值類型radius = float(radius)# 檢查半徑是否為負數if radius < 0:return 0# 計算面積:π * radius2area = math.pi * radius **2return areaexcept (ValueError, TypeError):# 處理無法轉換為數值的情況return 0# 測試不同半徑的情況
print("半徑為5時的面積:", calculate_circle_area(5))
print("半徑為0時的面積:", calculate_circle_area(0))
print("半徑為-1時的面積:", calculate_circle_area(-1))
題目2:計算矩形的面積
- 任務: 編寫一個名為 calculate_rectangle_area 的函數,該函數接收矩形的長度 length 和寬度 width 作為參數,并返回矩形的面積。
- 公式: 矩形面積 = length * width
- 要求:函數接收兩個位置參數 length 和 width。
- 函數返回計算得到的面積。
- 如果長度或寬度為負數,函數應該返回 0。
def calculate_rectangle_area(length, width):"""計算矩形的面積參數:length: 矩形的長度width: 矩形的寬度返回:矩形的面積,如果長度或寬度為負數則返回0"""# 檢查長度或寬度是否為負數if length < 0 or width < 0:return 0# 計算并返回矩形面積return length * width# 測試不同情況
print("長度為5,寬度為3時的面積:", calculate_rectangle_area(5, 3))
print("長度為0,寬度為4時的面積:", calculate_rectangle_area(0, 4))
print("長度為-2,寬度為6時的面積:", calculate_rectangle_area(-2, 6))
print("長度為5,寬度為-3時的面積:", calculate_rectangle_area(5, -3))
題目3:計算任意數量數字的平均值
- 任務: 編寫一個名為 calculate_average 的函數,該函數可以接收任意數量的數字作為參數(引入可變位置參數 (*args)),并返回它們的平均值。
- 要求:使用 *args 來接收所有傳入的數字。
- 如果沒有任何數字傳入,函數應該返回 0。
- 函數返回計算得到的平均值。
def calculate_average(*args):"""計算任意數量數字的平均值參數:*args: 任意數量的數字返回:所有數字的平均值,如果沒有傳入數字則返回0"""# 檢查是否有數字傳入if len(args) == 0:return 0# 計算總和與平均值total = sum(args)average = total / len(args)return average# 測試不同情況
print("沒有傳入數字的平均值:", calculate_average())
print("單個數字5的平均值:", calculate_average(5))
print("數字1, 2, 3, 4, 5的平均值:", calculate_average(1, 2, 3, 4, 5))
print("數字10, 20, 30的平均值:", calculate_average(10, 20, 30))
題目4:打印用戶信息
- 任務: 編寫一個名為 print_user_info 的函數,該函數接收一個必需的參數 user_id,以及任意數量的額外用戶信息(作為關鍵字參數)。
- 要求:
- user_id 是一個必需的位置參數。
- 使用 **kwargs 來接收額外的用戶信息。
- 函數打印出用戶ID,然后逐行打印所有提供的額外信息(鍵和值)。
- 函數不需要返回值
-
def print_user_info(user_id, **kwargs):"""打印用戶信息參數:user_id: 必需的用戶ID(位置參數)**kwargs: 任意數量的額外用戶信息(關鍵字參數)返回:無返回值,直接打印信息"""# 打印用戶IDprint(f"用戶ID: {user_id}")# 打印額外的用戶信息if kwargs: # 檢查是否有額外信息print("用戶信息:")for key, value in kwargs.items():print(f" {key}: {value}")else:print("沒有提供額外的用戶信息")# 測試不同情況 print("--- 測試1:僅用戶ID ---") print_user_info(1001)print("\n--- 測試2:用戶ID + 部分信息 ---") print_user_info(1002, 姓名="張三", 年齡=30, 性別="男")print("\n--- 測試3:用戶ID + 更多信息 ---") print_user_info(1003, 用戶名="lisi", 郵箱="lisi@example.com", 城市="北京", 愛好=["閱讀", "運動"])
題目5:格式化幾何圖形描述
- 任務: 編寫一個名為 describe_shape 的函數,該函數接收圖形的名稱 shape_name (必需),一個可選的 color (默認 “black”),以及任意數量的描述該圖形尺寸的關鍵字參數 (例如 radius=5 對于圓,length=10, width=4 對于矩形)。
- 要求:shape_name 是必需的位置參數。
- color 是一個可選參數,默認值為 “black”。
- 使用 **kwargs 收集描述尺寸的參數。
- 函數返回一個描述字符串,格式如下:
- “A [color] [shape_name] with dimensions: [dim1_name]=[dim1_value], [dim2_name]=[dim2_value], …”如果 **kwargs 為空,則尺寸部分為 “with no specific dimensions.”
def describe_shape(shape_name, color="black", **kwargs):"""生成幾何圖形的描述字符串參數:shape_name: 圖形名稱(必需的位置參數)color: 圖形顏色(可選參數,默認值為"black")**kwargs: 描述圖形尺寸的關鍵字參數返回:格式化的圖形描述字符串"""# 處理尺寸部分if kwargs:# 將關鍵字參數轉換為"key=value"格式的字符串列表dim_parts = [f"{key}={value}" for key, value in kwargs.items()]# 用逗號連接所有尺寸描述dim_str = ", ".join(dim_parts)dimensions = f"with dimensions: {dim_str}"else:dimensions = "with no specific dimensions."# 組合完整描述字符串return f"A {color} {shape_name} {dimensions}"# 測試不同情況 print(describe_shape("circle", radius=5)) # 使用默認顏色和一個尺寸參數 print(describe_shape("rectangle", "red", length=10, width=4)) # 指定顏色和多個尺寸參數 print(describe_shape("triangle", "blue")) # 只有圖形名稱和顏色,無尺寸參數 print(describe_shape("square", color="green", side_length=7)) # 顯式指定color參數名
@浙大疏錦行