鱼C论坛

 找回密码
 立即注册
查看: 699|回复: 2

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

[复制链接]
发表于 2020-4-1 18:38:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是我写的代码,可以运行出正确结果,但下面会有报错是什么情况啊。。
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
最佳答案
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-1 18:42:14 | 显示全部楼层
肯定是除到最后有0了,只需要加个判断,如果为0就跳过什么的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 19:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表