如何编写只接受正整数的最大公分母函数((Python)

2024-06-14 05:04:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个函数,它能找到两个正整数的最大公约数。我的数学部分做对了,只是我很难让函数拒绝负值。我需要让函数在输入非正整数时产生错误

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。我确信我的代码是关闭的,因为我对这个很陌生


Tags: or函数returnifdef错误数学this
2条回答

你能试试这个吗

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

还有Barmar所说的,把if语句放在第一位

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

另外,您需要在另一个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)

当您写入(x or y) < 0时,它计算x or y的值,然后将其与0进行比较x or y是两个变量的第一个真值,任何非零值都是真值。因此,如果x不是零,那么这等于x < 0,如果x是零,那么它等于y < 0。在or上没有自动分配<

相关问题 更多 >