我想写一个函数,它能找到两个正整数的最大公约数。我的数学部分做对了,只是我很难让函数拒绝负值。我需要让函数在输入非正整数时产生错误
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:
你能试试这个吗
还有Barmar所说的,把if语句放在第一位
不能在条件表达式中这样组合多个变量。您需要分别比较每个变量
另外,您需要在另一个
if
语句之前执行该检查。否则,函数将在检查负数之前返回当您写入
(x or y) < 0
时,它计算x or y
的值,然后将其与0
进行比较x or y
是两个变量的第一个真值,任何非零值都是真值。因此,如果x
不是零,那么这等于x < 0
,如果x
是零,那么它等于y < 0
。在or
上没有自动分配<
相关问题 更多 >
编程相关推荐