multiply_until_total_reached(original,total,n):
从正整数原始开始,请保持
将原始乘以n并计算所有生成的倍数的总和,包括原始的直到
总和不再小于总数。返回达到的最小乘法次数
价值等于或高于给定总数。
o假设:所有三个参数都是整数:原始和n是正数。
o返回值:整数。
o示例:
multiply_until_total_reached(1,5,2)→2
# 1*2=2, (1+2)<5, 2*2=4, (1+2+4)>5, 2 multiplications needed
multiply_until_total_reached(1,15,2)→3
# 1*2=2, (1+2)<15, 2*2=4, (1+2+4)<15, 4*2=8, (1+2+4+8)=15, 3 multiplications
multiply_until_total_reached(1,0,2)→0
# original 1>0, no multiplication
对于剩余的测试用例,我高于实际所需的乘法乘以1 enter image description here
def multiply_until_total_reached(original,total,n):
zum=original
add=zum
count=0
if original<total:
while add<total:
zum=zum*n
add+=(zum)
count+=1
return count
print (multiply_until_total_reached(1,10,1))
这给了我关于可视化工具的正确答案,但在命令提示符下给了我FFFFFFF
答案 0 :(得分:0)
您的逻辑存在一些问题。如果我们从你的帖子中取出第一个例子:
add
首先,您正在将total
的值与zum
的值进行比较。但是,在您的while循环中,您要将total
与while zum < total
进行比较。 while循环的条件语句是:
add
其次,您的添加逻辑没有意义。最初(1+2)<5
被设为零,所以你为什么要(0+2)<5
?它应该是multiply_until_total_reached(original,total,n)
。您的帖子中的其他地方仍然存在此逻辑错误。
终于,我运行了你的代码,我没有无限循环。也许您传递给函数def multiply_until_total_reached(original,total,n):
zum=original
add=0
count=0
while add<total:
zum=zum*n
add+=(zum)
count+=1
return count
print (multiply_until_total_reached(1,5,2))
编辑:我在python 3.5.2上运行了以下代码块。它运作良好。
unexpectedly found nil when unwrapping an Optional value