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

Python3中为何“除以零”有时不报错?图片缩放代码存疑

循环内未触发ZeroDivisionError的原因

核心原因是循环内的dot_X在line_Y=0时的值为0,此时计算式0 * source_H / 0在Python中结果是nan(非数字),而非直接抛出除零错误。

具体细节:

  • 当line_Y=0时,直接执行source_H/line_Y,因为source_H是图片高度(非零值),必然触发ZeroDivisionError。
  • 但循环内的计算是dot_X * source_H / line_Y,如果此时dot_X为0,整个表达式等价于0 / 0。Python对这种0除以0的情况不会抛出异常,而是返回nan——PIL库在处理nan类型的像素坐标时,会自动忽略或做兜底处理(比如取默认像素),所以脚本不会崩溃,只是最终图像效果可能不符合你的预期。

可以做个简单验证:

  • 在循环内添加打印语句:print(line_Y, dot_X, dot_X * source_H/line_Y),当line_Y=0时,会看到输出类似0 0 nan。
  • 若dot_X在line_Y=0时不为0,循环内同样会触发ZeroDivisionError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:17:03