如何实现让用户持续操作的简易计算器直至选择退出?
简易计算器代码修正
原代码问题梳理
- 菜单打印语句存在多余转义符与引号,导致输出格式错乱
- 循环条件逻辑错误:
while (i>select)中i初始值为0,select取值1-4,条件永远不成立,运算代码完全不执行 - 未实现「重复操作直到用户选择退出」的核心需求,原代码仅执行一次流程就终止
- 除法操作未处理除数为0的异常(可选优化项)
修正后的完整代码
def add(x, y): return x + y def sub(x, y): return x - y def mul(x, y): return x * y def div(x, y): if y == 0: return "错误:除数不能为0" return float(x / y) while True: # 打印清晰的操作菜单 print("请选择操作:") print("1. 加法") print("2. 减法") print("3. 乘法") print("4. 除法") print("5. 退出") try: select = int(input("请输入操作编号(1-5):")) except ValueError: print("输入无效,请输入数字1-5\n") continue if select == 5: print("退出计算器") break # 校验操作编号是否合法 if select not in [1,2,3,4]: print("无效操作编号,请重新选择\n") continue # 获取输入数值,处理非数字输入异常 try: x = int(input("请输入第一个数字:")) y = int(input("请输入第二个数字:")) except ValueError: print("输入无效,请输入整数\n") continue # 执行对应运算并输出结果 if select == 1: print(f"加法结果:{add(x, y)}\n") elif select == 2: print(f"减法结果:{sub(x, y)}\n") elif select == 3: print(f"乘法结果:{mul(x, y)}\n") elif select == 4: print(f"除法结果:{div(x, y)}\n")
关键修改说明
- 重构循环逻辑:用
while True实现无限循环,直到用户选择5(退出)时执行break终止,满足「重复操作直到退出」的需求 - 修复菜单打印:移除多余转义符和引号,改用清晰的分行打印,提升可读性
- 修正运算执行逻辑:删除原错误的
while (i>select)循环,直接在每次选择后执行运算并输出结果 - 增加异常处理:对输入非数字的情况捕获
ValueError,避免程序崩溃 - 优化除法操作:增加除数为0的判断,返回友好错误提示
- 输入校验:对操作编号进行合法性校验,避免无效输入进入运算流程
修正后运行示例
请选择操作: 1. 加法 2. 减法 3. 乘法 4. 除法 5. 退出 请输入操作编号(1-5):2 请输入第一个数字:5 请输入第二个数字:6 减法结果:-1 请选择操作: 1. 加法 2. 减法 3. 乘法 4. 除法 5. 退出 请输入操作编号(1-5):5 退出计算器
内容的提问来源于stack exchange,提问作者Priyanshu Jugran
相关产品推荐
相关产品推荐

