yangxuebabe 发表于 2020-4-1 18:38:36

python[课后作业] 第017讲 动动手1题求最大公约数

这是我写的代码,可以运行出正确结果,但下面会有报错是什么情况啊。。
def gcd(x,y):
    while 1 :
      remainder = x%y
      x = y
      y = remainder
      if remainder == 0 :
            print(x)
      
gcd(1997,615)

这是运行结果:
1
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-7-535b7d4b444a> in <module>
      7             print(x)
      8
----> 9 gcd(1997,615)

<ipython-input-7-535b7d4b444a> in gcd(x, y)
      1 def gcd(x,y):
      2   while 1 :
----> 3         remainder = x%y
      4         x = y
      5         y = remainder

ZeroDivisionError: integer division or modulo by zero

qiuyouzhi 发表于 2020-4-1 18:42:14

肯定是除到最后有0了,只需要加个判断,如果为0就跳过什么的

zltzlt 发表于 2020-4-1 18:48:29

如果 y 为 0,做除法会报错。所以需要判断当 y 不为 0 时才执行循环:

def gcd(x, y):
    while y != 0:
      remainder = x % y
      x = y
      y = remainder
      if remainder == 0:
            print(x)


gcd(1997, 615)
页: [1]
查看完整版本: python[课后作业] 第017讲 动动手1题求最大公约数