我必须定义一个函数,其中:
以正整数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/