如何简化Python中大量使用if/else分支判断的冗余代码?
优化方案
核心优化思路
- 用字典建立选项值和预算区间的映射关系,彻底消除重复的if/elif分支,后续增减预算档位只需要修改字典即可,可维护性更强
- 简化输入合法性判断逻辑,直接校验输入是否在字典的合法key集合中,避免写大量重复的
!=判断 - 修复原代码的已知问题:包括错误的输入提示(原代码else分支错误提示输入1-4)、未定义
local变量就先打印的逻辑问题、冗余的未使用全局变量声明 - 菜单打印逻辑和字典绑定,后续调整档位不需要同步修改打印内容和判断逻辑,统一维护降低出错概率
优化后完整代码
def budget(): # 定义预算选项映射,后续修改档位仅需调整此字典 budget_map = { '1': 'UNDER £10', '2': '£10 - £20', '3': '£20 - £30', '4': '£30 - £40', '5': '£40 - £50', '6': '£50 ABOVE' } reply = "0" local = "" while reply not in budget_map: print(" ") # 仅当已有选择时显示已选内容,修复原代码未定义变量报错问题 if local: print(" YOU HAVE SELECTED", local," ") print(" PLEASE ENTER YOUR BUDGET ") print(" ") # 动态打印菜单,和映射字典绑定无需手动同步 for key, value in budget_map.items(): print(f" {key}. {value:<30}") print(" ") reply = input("Please enter a valid option (1-6)\n") if reply in budget_map: local = budget_map[reply] else: print("Please enter a valid option (1-6) \n") # 可根据需求返回选择结果,替换原代码无用的全局变量逻辑 return local
内容的提问来源于stack exchange,提问作者The Charming Fellow
相关产品推荐
相关产品推荐

