通过在python中重复减法来划分 - 这段代码有什么问题?

时间:2016-07-18 01:33:12

标签: python

quur = int(input('ENTER NUMBER : '))
quub = int(input('ENTER NUMBER : '))

def quureC (quur) : 

    while quur > 0 :

        quur - quub

print(" The quotient of 10 is ", (quureC (quur))

4 个答案:

答案 0 :(得分:2)

所以python有这个很酷的运算符"%Modulus"用左手操作数除左手操作数并返回余数。我认为这就是你要找的东西。

quur = 10
quub = 3
print(quur % quub)

>>> 1

然而,你的代码正在运行,但是它会陷入无限循环,因为你没有重新分配quur。

试试这个:

while quur > 0 :

    quur = quur - quub

我认为这也有效:

while quur > 0 :

    quur -= quub

所以你的代码看起来像这样:

#Gets the inputs from user
quur = int(input('ENTER NUMBER : '))
quub = int(input('ENTER NUMBER : '))



#define a method to do our division by subtraction
def quureC (quur) : 

    #Sets a variable to 0
    count = 0

    # while variable quur is less than or equal to 0 repeat
    while quur >= 0 :

        #quur is equal to quur minus quub
        quur = quur - quub
        #add one to count
        count = count + 1

    #once our while loop condition is met, return the current value of count
    return count

#quotient is assigned whatever is returned from our method quurec
quotient = quureC (quur)

#print the result
print(" the while loop repeated and the quotient is " + quotient)

这应该有效,但我认为它不会返回您正在寻找的确切结果。

看看while循环:http://www.tutorialspoint.com/python/python_while_loop.htm

希望这会有所帮助:)

答案 1 :(得分:1)

你没有修改quur的价值。你想这样做:

while quur > 0:
    quur = quur - quub

答案 2 :(得分:0)

你的代码有两个问题:首先你不修改quur的值,因此你陷入无限循环,第二个算法是错误的,正确的是减去分母从分子开始,当这大于分母时,无论剩下的是什么,剩下的以及你做了多少次就是你要搜索的结果

def division(numerator,denominator):
    if denominator == 0:
        raise ZeroDivisionError
    fraction  = 0
    remainder = numerator
    while remainder >= denominator:
          remainder = remainder - denominator
          fraction  = fraction + 1
    return (fraction, remainder)   

最后您得到的数字是numerator == denominator*fraction + remainder 0 <= remainder < denominatorfraction >= 0

python已将此实现为//运算符,以使余数使用模运算符%并同时使用divmod。上面的函数大部分等同于python的内置divmod,但实际的实现可能不同

你的功能的另一点是你将quub视为一个全局变量,虽然这本身并不坏,但它限制了你的功能的灵活性。

或者您不喜欢remainder变量

def division(numerator,denominator):
    if denominator == 0:
        raise ZeroDivisionError
    fraction  = 0
    while numerator >= denominator:
          numerator = numerator - denominator
          fraction  = fraction + 1
    return (fraction, numerator)   

在这种情况下,最终numerator是除法的剩余部分

答案 3 :(得分:0)

3.7中的正确代码

def divide(a,b,i=1):
    if a>b:
        c=a-b
        return divide(c,b,i+1)
    else:
        return i
print("Quotient is:",divide(n1,n2))

此代码仅适用于a和b的正值和非零值。