You need to enable JavaScript to run this app. Python函数如何接收输入字符串并输出正确四则运算结果?
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 23:06:02