计算器无法处理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
相关产品推荐
相关产品推荐

