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

Python拼写建议功能运行报ZeroDivisionError除零错误求解

拼写纠错得分计算ZeroDivisionError报错修复方案

核心错误原因

  1. 运算符误用:Python中^是按位异或运算符,你预期的平方运算应该使用** 2实现,错误的运算符会导致s的计算结果严重不符合预期,甚至出现0值
  2. 未做除零防护:当s的计算结果为0时,分母s^2为0直接触发除零报错
  3. 代码残留脏数据:多处enter code here无效字符、切片表达式缺少运算符会额外触发语法错误

具体修复步骤

  • 第一步:清理所有无效的enter code here字符,补全切片位置缺失的减号
  • 第二步:将所有平方计算的^ 2替换为** 2
  • 第三步:计算得分前增加分母非零判断,s为0的场景可以自定义兜底得分(比如设置为0直接触发后续的低得分过滤逻辑)

修复后完整代码

import time

for word in typo.keys():
    for sug in typo[word].getSuggestion().keys():
        # 计算公共前后缀长度之和s
        s = (typo[word].getErrorIndexFront() - 1) + (len(word) - typo[word].getErrorIndexRear() + 1)
        n1 = len(word)
        n2 = len(sug)
        u1 = 0
        u2 = 0
        if n1 == n2:
            # 补全切片位置的减号
            slice_part = word[(typo[word].getErrorIndexFront() - 1):(len(word) - typo[word].getErrorIndexRear() + 1)]
            u1 = len(slice_part)
            u2 = u1
        else:
            u2 = abs(n2 - n1)
        # 修复平方运算符 + 除零防护
        s_square = s ** 2
        if s_square == 0:
            # s为0时兜底设为0,后续会被过滤掉
            score = 0
        else:
            score = (s_square - ((n2 - n1) ** 2) - ((u1 + u2) ** 2)) / s_square                          
        typo[word].getSuggestion()[sug] = score
        print(typo[word].getSuggestion()[sug])

    for k,v in list(typo[word].getSuggestion().items()):
        if v <= 0:
            del typo[word].getSuggestion()[k]

print("time = ",(time.time() - startTime)," s")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:15:06