麻烦迭代python

时间:2011-09-19 02:05:00

标签: python floating-point iteration

使用Python 2.7。

我希望能够输入一个数字,并返回完成方程win_percentage =观察到的x和y的所有值集。

def Rlog5(observed):
    z = float(observed)/1000
    for x in range(350, 650, 1):
        y = 1000 - x
        win_percentage = (float(x)-(float(x)*float(y)))/(float(x)+float(y)-(2*(float(x)*float(y))))
        if win_percentage = observed:
           print (z, float(x), float(y))

当我运行该功能时,我什么都没得到。没有错误,但也没有值(我尝试过使用和不使用浮点数x,但我认为它需要它们,因为win_percentage应该是一个浮点数)。最令人沮丧的部分是我有这个代码基本上做同样的事情,它工作正常:

def solve(numNuggets):
    for numTwenties in range(0, numNuggets/20 + 1):
            for numNines in range(0, (numNuggets - numTwenties*20)/9 + 1):
                numSixes = (numNuggets - numTwenties*20 - numNines*9)/6
                totNuggets = 20*numTwenties + 9*numNines + 6*numSixes
                if totNuggets == numNuggets:
                    print (numSixes, numNines, numTwenties)

我知道这是一个新手问题,但我的斗智斗勇......

3 个答案:

答案 0 :(得分:7)

正如其他人所说,你有=,你应该==,但我认为这是一个错字,因为你会得到一个语法错误。但是你正在测试浮点数是否相等,浮点数几乎从不相等,因为它们不精确。通常,您会测试两个浮点数是否在彼此的小差异之间,通常称为epsilon

试试这个:

if abs(win_percentage - observed) < 0.000001:
    print etc

答案 1 :(得分:0)

=用于分配,==用于比较。

if win_percentage = observed:更改为if win_percentage == observed:

答案 2 :(得分:0)

应该是

if win_percentage == observed:
相关问题