如何在for/while循环中的can ()函数中使用"subtraction()“函数来进行基于重复减法的除法运算,从而得到商和余数?谢谢。到目前为止,我的代码如下:
def subtraction(x, y): #subtraction function
return x - y
def division(x, y): #division function
repeatsub = 0
for i in range(y):
repeat = subtraction(repeatsub, 2)
return repeatsub发布于 2020-09-21 17:56:02
Division正在将一个数字写入以下格式:x=ay+b where b<y。所以你应该反复地从x中减去y,而result>=y。最后的结果是余数。商是调用的次数,你可以在每次减法后像quotient=0和quotient=quotient+1那样做。
发布于 2020-09-21 17:59:14
我找到的最简单的方法是,根据这个guide,从y减去x,直到得到0。
尝试以下代码:
def subtraction(x, y): #subtraction function
return x - y
def division(x, y): #division function
if (y==0):
return -1 #ZeroDivisionError
repeatsub = 0
while (x>y):
x = subtraction(x, y)
repeatsub +=1
return repeatsub对于这个主脚本:
x=13
y=2
print(division(x,y))按预期打印6。
我还建议注意被零除的特殊情况,在本例中我返回-1,但您可以使用任何其他适合您的解决方案进行更改。
while条件x>y确保我们仍然需要减法,如果您确定它是一个整数除法,您可以将其更改为x>0
注意:当y比x更好时,我的解决方案也可以工作,这使它变得优雅和简单。
发布于 2020-09-21 18:01:00
这将执行整数除法,并返回商和余数。
def subtraction(x, y): # Subtraction function
return x - y
def division(x, y): # Division function
if y == 0:
raise ZeroDivisionError
quotient = 0
remainder = x
while remainder >= y:
remainder = subtraction(remainder, y) # or remainder -= y
quotient += 1
return (quotient, remainder)
print("Quotient and remainder are", division(10, 2))输出:
Quotient and remainder are (5, 0)https://stackoverflow.com/questions/63989857
复制相似问题