如何为仅采用正整数的最大公共分母函数编码? (Python)

问题描述 投票:0回答:2

我正在尝试编写一个找到两个正整数最大公约数的函数。我把数学部分弄对了,只是我在让函数拒绝负值方面遇到麻烦。输入非正整数时,我需要让函数产生错误。

def divisor(x,y):


if (y==0) :
    return x
  else:
    return divisor(y,x%y)
  if (x or y) <0:
    raise ValueError("This function only takes positive integers!")

我没有收到错误,我的函数仍然返回两个负整​​数的GCD。我确定我的代码已关闭,因为我对此很陌生

python statistics
2个回答
0
投票

您可以试试吗:

if(x < 0 or y < 0):
    raise ValueError("etc...")

Barmar也这样说,把if语句放在第一位。


0
投票

您不能在条件表达式中组合多个变量。您需要分别比较每个变量。

此外,您需要在其他if语句之前进行该检查。否则,该函数将在检查负数之前返回。

def divisor(x,y):
    if x < 0 or y < 0:
        raise ValueError("This function only takes positive integers!")
    if (y==0):
        return x
    else:
        return divisor(y,x%y)
© www.soinside.com 2019 - 2024. All rights reserved.