如何在Python中使用重复减法进行除法?

2024-09-30 06:33:55 发布

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

我试图用函数做一个计算器,我挑战自己不使用基本运算符(使用重复加法进行乘法)进行计算,我陷入了如何使用重复减法进行除法的困境

以下是我目前的代码:

def addition(x,y):
    return x+y

def subtraction(x,y):
    return x-y

def multiplication(x,y):
    repeatadd = 0
    for i in range(y):
        repeatadd = add(repeatadd, x)
    return repeatadd

#def division(x,y):
#   repeatsub = 0
#   for i in range(y):
        

number1 =int(input("Enter number: "))
while number1<0:
    print("Enter a positive number.")
    number1 = int(input("Enter number: "))
    

number2=int(input("Enter number: "))
while number2<0:
    print("Enter a positive number.")
    number2= int(input("Enter number: "))
    
print(" 1. Addition \n 2. Subtraction \n 3. Multiplication \n 4. Division \n 0. Exit")
choice = int(input(" Enter operation: "))
print("")

if choice == 1:
    print("The sum of", number1 , "and" , number2 , "is" , addition(number1,number2))
elif choice == 2:
    print("The difference of", number1, "and" , number2 , "is" , subtraction(number1,number2))
elif choice == 3:
    print("The product of", number1, "and" , number2 , "is", multiplication(number1,number2))
elif choice == 4:
    print("The quotient of", number1, "and" , number2, "is", division(number1,number2), "and the remainder is")

它是有效的,但我不知道如何使用重复减法除法得到商和余数


Tags: andofthenumberinputreturnisdef
3条回答

用division的实现完成代码

def addition(x,y):
    return x+y

def subtraction(x,y):
    return x-y

def multiplication(x,y):
    repeatadd = 0
    for i in range(y):
        repeatadd = addition(repeatadd, x)
    return repeatadd

def division(x,y):
   quotient = 0
   while x > y:
        # repeat subtractions
        x = x - y
        quotient += 1  # update count of subtractions
   return quotient, x
        

number1 =int(input("Enter number: "))
while number1<0:
    print("Enter a positive number.")
    number1 = int(input("Enter number: "))
    

number2=int(input("Enter number: "))
while number2<0:
    print("Enter a positive number.")
    number2= int(input("Enter number: "))
    
print(" 1. Addition \n 2. Subtraction \n 3. Multiplication \n 4. Division \n 0. Exit")
choice = int(input(" Enter operation: "))
print("")

if choice == 1:
    print("The sum of", number1 , "and" , number2 , "is" , addition(number1,number2))
elif choice == 2:
    print("The difference of", number1, "and" , number2 , "is" , subtraction(number1,number2))
elif choice == 3:
    print("The product of", number1, "and" , number2 , "is", multiplication(number1,number2))
elif choice == 4:
    quotient, remainder = division(number1, number2)
    print("The quotient of", number1, "and" , number2, "is", quotient, "and the remainder is", remainder)
q = 0
n = int(input('divident: '))
divisor = int(input('divisor: '))
while n >= divisor:
  n -= divisor
  q += 1

print(f'Quotient: {q} & remainder {n}')

遵循这种长除法可能会有所帮助:

def division(x, y):
    res = 0

    xLen = bitCount(x)
    yLen = bitCount(y)

    while xLen > yLen:
        res += 1 << (xLen - yLen - 1)
        x -= y << (xLen - yLen - 1)
        xLen = bitCount(x)

    if x >= y:
        return res + 1

    return res

def bitCount(n):
    return len(bin(n)) - 2

相关问题 更多 >

    热门问题