Python实现GCD最大公约数时报ZeroDivisionError除零错误如何解决
错误原因
- 循环内变量赋值顺序错误:
执行num1 = num2后,num1已经被覆盖为原来的num2值,后续计算num2 = num1 % num2等价于计算原num2 % 原num2,结果必然为0,下一次循环判断num1 % num2 != 0时就会触发除零异常。 - 分支逻辑不全:仅当
num1 < num2时才会进入计算逻辑,若输入满足num1 >= num2,函数没有显式返回值,会返回None;且两数相等时返回元组,和其他分支返回单值的逻辑不一致。
修复方案
修正循环赋值顺序,同时补全分支逻辑,优化后的代码如下:
def GCD(num1, num2): # 保证大数在前,不需要单独判断两数相等的情况 if num1 < num2: num1, num2 = num2, num1 while num2 != 0: temp = num1 % num2 num1 = num2 num2 = temp return num1 print(GCD(12, 18))
运行结果
输出为6,符合预期,无报错。
内容的提问来源于stack exchange,提问作者user17285516
相关产品推荐
相关产品推荐

