def calculate_shipping_cost(user_level, weight_kg, region, is_urgent=False):
"""
计算运费(模拟实际业务规则)
:param user_level: 用户等级 ("gold", "silver", "normal")
:param weight_kg: 商品重量(千克)
:param region: 配送地区 ("local", "domestic", "international")
:param is_urgent: 是否加急
:return: 运费金额(人民币)
"""
# 基础运费(根据地区)
base_cost = {
"local": 5.0,
"domestic": 12.0,
"international": 30.0
}.get(region, 20.0) # 默认国内标准
# 重量附加费:每超过1kg加收2元,不足1kg按1kg计
extra_weight = max(0, weight_kg - 1)
weight_fee = int(extra_weight) * 2 # 向上取整
# 加急附加费
urgent_fee = 10.0 if is_urgent else 0.0
# 用户等级折扣
discount_rate = {
"gold": 0.8,
"silver": 0.9,
"normal": 1.0
}.get(user_level, 1.0)
total = (base_cost + weight_fee + urgent_fee) * discount_rate
# 保留两位小数,且不低于最低收费
return max(round(total, 2), 5.0)
# 测试示例
print(calculate_shipping_cost("gold", 2.3, "domestic", True))