我做了一个基础Python计算器,如何优化使其更高效整洁?
Python计算器代码优化方案
现有代码的核心问题
- 存在冗余计算:不管用户选择哪种运算,提前把加减乘除四个结果全部算完,完全浪费性能,后续如果拓展复杂运算这个问题会更明显
- 没有做输入校验:用户输入非数字内容、选择1-4之外的选项、除法运算输入0作为除数时,代码会直接报错崩溃
- 代码冗余度高:菜单打印用了多次重复的
print语句,多分支if判断拓展性差,新增运算需要额外写判断逻辑
优化后代码(兼容在线GDB平台,无第三方依赖)
# 打印菜单,用三引号多行字符串减少重复print调用 print("""1. 加法 2. 减法 3. 乘法 4. 除法 """) # 封装数字输入校验逻辑,避免重复代码 def input_integer(prompt): while True: try: return int(input(prompt)) except ValueError: print("输入不合法,请输入整数") # 获取合法的运算数 num1 = input_integer("请输入第一个数字:") num2 = input_integer("请输入第二个数字:") # 获取合法的操作选项 while True: choice = input_integer("请输入选项(1-4): ") if 1 <= choice <= 4: break print("选项无效,请输入1到4之间的整数") # 用字典映射替代多分支if,后续新增运算直接加字典项即可 operation_map = { 1: ("和", lambda x, y: x + y), 2: ("差", lambda x, y: x - y), 3: ("积", lambda x, y: x * y), 4: ("商", lambda x, y: x / y if y != 0 else "错误:除数不能为0") } op_name, op_func = operation_map[choice] result = op_func(num1, num2) print(f"{op_name} = {result}")
优化点说明
- 仅在确认用户选择的运算后才执行对应计算,消除了冗余运算
- 新增了全链路的输入合法性校验,避免非法输入导致程序崩溃
- 用字典映射替代多分支
if判断,代码可维护性大幅提升,新增运算不需要修改判断逻辑,仅需在operation_map中新增对应配置即可 - 封装了重复的输入校验逻辑,减少冗余代码,可读性更高
内容的提问来源于stack exchange,提问作者corruptchimp745
相关产品推荐
相关产品推荐

