You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算器无法处理float类型,需支持浮点数与整数运算求助

修改计算器以支持整数与浮点数运算

原代码的核心问题是使用int()强制转换输入值,导致无法处理带小数的浮点数输入。以下是两种可行的修改方案:

方案1:直接用float转换输入(简单高效)

将输入部分的int()替换为float(),这样无论是整数还是浮点数输入都能被正确解析,运算逻辑无需改动:

e = 'p'
def sum(a, b):
    return (a + b)
def sub(a, b):
    return (a - b)
def mul(a, b):
    return (a * b)
def div(a, b):
    return (a / b)
while True:
    a = float(input('Enter 1st number: '))  # 替换为float转换
    b = input('Enter operator:')
    c = float(input('Enter 2nd number: '))  # 替换为float转换
    if b == '+':
        d = sum
        e = 'sum'
    elif b == '-':  # 用elif替代多个独立if,减少无效判断
        d = sub
        e = 'difference'
    elif b == '*':
        d = mul
        e = 'product'
    elif b == '/':
        d = div
        e = 'quotient'
    else:
        print("Invalid operator! Use +, -, *, / only")
        continue
    print(f'the {e} of {a} and {c} is {d(a, c)}')
    print('.        .')

方案2:智能识别整数/浮点数(优化显示效果)

如果希望输入整数时,结果仍以整数格式显示(而非x.0的浮点数形式),可以添加一个输入解析函数,自动判断输入类型:

def parse_number(input_str):
    try:
        num = float(input_str)
        # 若为整数则转int,否则保留float
        return int(num) if num.is_integer() else num
    except ValueError:
        print("Invalid number! Enter a valid integer or float.")
        return None

e = 'p'
def sum(a, b):
    return (a + b)
def sub(a, b):
    return (a - b)
def mul(a, b):
    return (a * b)
def div(a, b):
    return (a / b)
while True:
    a_input = input('Enter 1st number: ')
    a = parse_number(a_input)
    if a is None:
        continue
    b = input('Enter operator:')
    c_input = input('Enter 2nd number: ')
    c = parse_number(c_input)
    if c is None:
        continue
    if b == '+':
        d = sum
        e = 'sum'
    elif b == '-':
        d = sub
        e = 'difference'
    elif b == '*':
        d = mul
        e = 'product'
    elif b == '/':
        d = div
        e = 'quotient'
    else:
        print("Invalid operator! Use +, -, *, / only")
        continue
    result = d(a, c)
    # 结果也做格式优化
    display_result = int(result) if isinstance(result, float) and result.is_integer() else result
    print(f'the {e} of {a} and {c} is {display_result}')
    print('.        .')

额外优化说明

  • 用elif替代多个独立if,避免执行不必要的条件判断
  • 添加了非法操作符、无效数字的错误提示,提升程序健壮性
  • 改用f-string简化字符串拼接,代码更简洁易读

内容的提问来源于stack exchange,提问作者kake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:01:15