Python函数如何接收输入字符串并输出正确四则运算结果?
计算器代码问题修正
故障原因
- 当前输出
['2', '3', '+']的直接原因是scalc函数中存在调试用语句print(astring),该语句会直接打印逗号分割后的列表,正式运行需要删除。 - 调用
Add、Subtract等计算函数后,未接收函数返回的计算结果,也没有执行打印操作,因此看不到最终计算输出。 - 额外可优化点:原代码未处理输入格式错误、运算符前后带空格、结果自动显示为小数等问题。
修正后的完整代码
def Add(num1, num2): return num1 + num2 def Subtract(num1, num2): return num1 - num2 def Multiply(num1, num2): return num1 * num2 def Divide(num1, num2): try: return num1 / num2 except ZeroDivisionError: print("Sorry, A number can't be divided by 0") return None def scalc(p1): astring = p1.split(",") # 输入格式校验 if len(astring) != 3: print("输入格式错误,请按照「数字,数字,运算符」的格式输入") return # 数字合法性校验 try: num1 = float(astring[0]) num2 = float(astring[1]) except ValueError: print("输入的前两项必须是数字") return op = astring[2].strip() result = None if op == "+": result = Add(num1, num2) elif op == "-": result = Subtract(num1, num2) elif op == "*": result = Multiply(num1, num2) elif op == "/": result = Divide(num1, num2) else: print("不支持的运算符,仅支持+、-、*、/") return # 统一输出结果,整数自动转整型 if result is not None: if result.is_integer(): result = int(result) print("计算结果:", result) p1 = input("Enter two numbers and an operator with each separated by a comma: ") scalc(p1)
代码改动说明
- 删除了冗余的调试打印语句
print(astring) - 新增基础输入校验,避免用户输入不符合规则时直接报错
- 给运算符增加去空格处理,兼容用户输入时不小心加空格的场景(例如
2, 3, +) - 统一用
result变量接收计算结果,最后统一打印输出 - 数值类结果如果为整数格式(例如
5.0)自动转换为整型输出,符合常规使用预期 - 除法除零场景返回空值,避免后续流程报错
内容的提问来源于stack exchange,提问作者Rusty Hoppe
相关产品推荐
相关产品推荐

