我必须定义一个函数,其中:


  以正整数original开头,继续乘以original
  通过n并计算生成的所有倍数的总和,包括
  original,直到总和不再小于total。返回
  达到或大于此值所需的最小乘法数
  给定的总数。


因此,例如:


multiply_until_total_reached (1,5,2)

1 * 2 = 2,(1 + 2) 5,需要2个乘法
multiply_until_total_reached (1,15,2)

1 * 2 = 2,(1 + 2)

我当前的代码有效,但在某些情况下返回的值将减1。在1,1038,2的情况下,我得到9个乘法,而不是10个,但是在1,15,2的情况下,我得到了正确的数量(3)乘法。

这是我的代码:

def multiply_until_total_reached(original, total, n):
    if total < original:
        return 0
    elif total > original:
        sumofdigits = 0 #declares var to keep track of sum of digits to compare to total
        timesofmult = 0 #track how many multiplication operations
        while sumofdigits <= total + 1:
            multnum = original * n
            sumofdigits = multnum + original
            original = multnum
            sumofdigits = sumofdigits + multnum
            timesofmult = timesofmult + 1
        return timesofmult


是什么导致它关闭?

最佳答案

尝试一下,更小更整洁。注释中有解释。

def multiply_until_total_reached(original, total, n):
        sum = original    #Initialize sum to original
        mult_no = 0

        while sum < total:       #Will auto return 0 if original>=total
            sum += original*n    #Add original * n
            original = original*n   #Update the new original
            mult_no += 1    #Increase multiplications by 1

        return mult_no

print multiply_until_total_reached(1,5,2)
print multiply_until_total_reached(1,15,2)
print multiply_until_total_reached(1,1038,2)

#Output
#2
#3
#10

关于python - 在某些测试案例中,递增while循环不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42619190/

10-12 23:34