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

使用欧几里得算法求HCF的Python代码出现ZeroDivisionError求助

解决欧几里得算法计算HCF时的ZeroDivisionError问题

你的代码出现ZeroDivisionError是因为执行取模运算a % b时,b的值为0。结合代码情况,以下是问题分析和修复方案:

问题分析

  1. 缩进不规范:代码中while语句前有多余空格,Python对缩进严格敏感,建议统一使用4个空格作为缩进(符合PEP8规范)。
  2. 未处理特殊输入场景:当输入的两个数均为0时,HCF无定义;若仅其中一个数为0,原代码逻辑可能触发异常。
  3. 冗余类型转换:a和b已经通过int()转为整数,循环内再次使用int(a)、int(b)属于多余操作。

修复后的代码

a = int(input('Enter the first number: '))
b = int(input('Enter the second number: '))

# 处理无意义的输入场景
if a == 0 and b == 0:
    print("HCF of 0 and 0 is undefined")
else:
    # 欧几里得算法核心逻辑,统一缩进
    while b != 0:
        rem = a % b
        a = b
        b = rem
    print('The HCF is', abs(a))  # 兼容负数输入,确保结果为正

关键改进

  • 添加输入校验,规避0和0的无意义计算
  • 统一代码缩进,避免因缩进引发的逻辑错误
  • 移除冗余的类型转换,简化代码
  • 用abs(a)处理负数输入,保证结果符合HCF的正数定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:25:57