MST

星途 面试题库

面试题:Python多条件嵌套if语句的极致优化与重构

现有一段复杂的Python代码,用于处理不同类型订单(如普通订单、加急订单、团购订单)在不同地区(分为A、B、C三个地区)的运费计算逻辑。代码中存在大量嵌套的if语句,导致可读性差且维护困难。如下: ```python order_type = '普通订单' region = 'A' weight = 2 if order_type == '普通订单': if region == 'A': if weight <= 1: freight = 5 else: freight = 5 + (weight - 1) * 2 elif region == 'B': if weight <= 1: freight = 6 else: freight = 6 + (weight - 1) * 2.5 elif region == 'C': if weight <= 1: freight = 8 else: freight = 8 + (weight - 1) * 3 elif order_type == '加急订单': if region == 'A': if weight <= 1: freight = 10 else: freight = 10 + (weight - 1) * 3 elif region == 'B': if weight <= 1: freight = 12 else: freight = 12 + (weight - 1) * 3.5 elif region == 'C': if weight <= 1: freight = 15 else: freight = 15 + (weight - 1) * 4 elif order_type == '团购订单': if region == 'A': if weight <= 1: freight = 4 else: freight = 4 + (weight - 1) * 1.5 elif region == 'B': if weight <= 1: freight = 5 else: freight = 5 + (weight - 1) * 2 elif region == 'C': if weight <= 1: freight = 6 else: freight = 6 + (weight - 1) * 2.5 ``` 请运用你所掌握的优化if语句可读性及重构代码的技巧,将上述代码进行优化,要求代码结构清晰,易于理解和维护。
14.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def calculate_freight(order_type, region, weight):
    base_rates = {
        '普通订单': {'A': (5, 2), 'B': (6, 2.5), 'C': (8, 3)},
        '加急订单': {'A': (10, 3), 'B': (12, 3.5), 'C': (15, 4)},
        '团购订单': {'A': (4, 1.5), 'B': (5, 2), 'C': (6, 2.5)}
    }
    base, rate = base_rates[order_type][region]
    if weight <= 1:
        return base
    else:
        return base + (weight - 1) * rate


order_type = '普通订单'
region = 'A'
weight = 2
freight = calculate_freight(order_type, region, weight)