我正在尝试编写一个找到两个正整数最大公约数的函数。我把数学部分弄对了,只是我在让函数拒绝负值方面遇到麻烦。输入非正整数时,我需要让函数产生错误。
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。我确定我的代码已关闭,因为我对此很陌生
您可以试试吗:
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)