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

如何解决ZeroDivisionError: float division by zero错误?请求协助排查里程油耗计算代码问题

排查并修复ZeroDivisionError: float division by zero问题

咱们直接说核心问题:你的代码在校验油量输入时,只判断了gallons >= 0,这就导致用户输入0的时候会通过校验,后续执行miles / gallons时自然触发除以零的错误——毕竟数学里0不能当除数嘛。除此之外,代码里还有两处语法小问题需要修正。

代码里的具体问题

  • 油量校验逻辑错误:允许输入0值,这既不符合实际用车场景(不可能用0油跑里程),也会引发数学运算错误
  • 语法错误:calculation: MPG = miles / gallons和output: print(...)这两行的写法不合法,Python里不能这么写,需要去掉前面的标签冒号,改成正常的赋值和打印语句

修复方案

  1. 把油量输入的校验条件改成gallons > 0,确保用户输入的是正数
  2. 修正计算和输出部分的语法问题
  3. 添加提示信息,让用户知道输入不符合要求时该怎么做(比如提示“请输入正数”)

修复后的完整代码

isErrorGallon = True
isErrorMile = True

# 校验里程输入,确保是正数
while isErrorMile:
    try:
        miles = float(input("Please enter miles driven: "))
        if miles > 0:
            isErrorMile = False
        else:
            print("Miles must be a positive number, please try again.")
    except ValueError:
        print("Invalid input! Please enter a numeric value.")

# 校验油量输入,确保是正数(避免0值)
while isErrorGallon:
    try:
        gallons = float(input("Please enter gallons used: "))
        if gallons > 0:
            isErrorGallon = False
        else:
            print("Gallons must be a positive number, please try again.")
    except ValueError:
        print("Invalid input! Please enter a numeric value.")

# 计算MPG并格式化输出
MPG = miles / gallons
# 格式化输出保留两位小数,和预期结果一致
print(f"Miles = {miles:.1f} \nGallons = {gallons:.1f} \nMiles Per Gallon= {MPG:.2f}")

补充说明

  • 我把异常捕获从except:改成了except ValueError:,这样只会捕获输入非数字的情况,避免意外捕获其他类型的异常
  • 输出部分用了f-string格式化,让结果和你预期的27.78(保留两位小数)一致,里程和油量也保留一位小数,更符合预期显示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:09:06