如何解决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里不能这么写,需要去掉前面的标签冒号,改成正常的赋值和打印语句
修复方案
- 把油量输入的校验条件改成
gallons > 0,确保用户输入的是正数 - 修正计算和输出部分的语法问题
- 添加提示信息,让用户知道输入不符合要求时该怎么做(比如提示“请输入正数”)
修复后的完整代码
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
相关产品推荐
相关产品推荐

