我需要帮助试图修复我的逻辑

时间:2017-03-05 05:04:32

标签: python

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

1 个答案:

答案 0 :(得分:0)

您的逻辑存在一些问题。如果我们从你的帖子中取出第一个例子:

add

首先,您正在将total的值与zum的值进行比较。但是,在您的while循环中,您要将totalwhile 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