MST

星途 面试题库

面试题:复杂条件下Python if - else语句的优化

现有一个复杂的业务场景,需要对一系列数据进行处理。数据以字典形式存储,例如data = {'value1': 10, 'value2': 20, 'flag': True, 'condition': 'A'}。根据以下复杂条件进行判断:如果flag为True且condition为'A',并且value1和value2的和大于30,则执行操作1;如果flag为False且condition为'B',并且value1和value2的乘积小于200,则执行操作2;其他情况执行操作3。请编写代码实现,并思考如何对这种复杂的if - else判断结构进行优化,提高代码的可读性和可维护性。
50.3万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
data = {'value1': 10, 'value2': 20, 'flag': True, 'condition': 'A'}

if data['flag'] and data['condition'] == 'A' and data['value1'] + data['value2'] > 30:
    # 执行操作1
    print("执行操作1")
elif not data['flag'] and data['condition'] == 'B' and data['value1'] * data['value2'] < 200:
    # 执行操作2
    print("执行操作2")
else:
    # 执行操作3
    print("执行操作3")

优化思路

  1. 使用函数封装条件判断:将每个条件判断封装成独立的函数,这样可以使主逻辑更加清晰,便于理解和维护。
def condition1(data):
    return data['flag'] and data['condition'] == 'A' and data['value1'] + data['value2'] > 30

def condition2(data):
    return not data['flag'] and data['condition'] == 'B' and data['value1'] * data['value2'] < 200

data = {'value1': 10, 'value2': 20, 'flag': True, 'condition': 'A'}
if condition1(data):
    # 执行操作1
    print("执行操作1")
elif condition2(data):
    # 执行操作2
    print("执行操作2")
else:
    # 执行操作3
    print("执行操作3")
  1. 使用字典映射:将条件和对应的操作以字典的形式存储,这样可以通过查找字典来决定执行的操作,减少冗长的if - else结构。
def operation1():
    print("执行操作1")

def operation2():
    print("执行操作2")

def operation3():
    print("执行操作3")

def condition1(data):
    return data['flag'] and data['condition'] == 'A' and data['value1'] + data['value2'] > 30

def condition2(data):
    return not data['flag'] and data['condition'] == 'B' and data['value1'] * data['value2'] < 200

data = {'value1': 10, 'value2': 20, 'flag': True, 'condition': 'A'}
conditions = {
    condition1: operation1,
    condition2: operation2
}
for condition, operation in conditions.items():
    if condition(data):
        operation()
        break
else:
    operation3()