在python中迭代的问题

问题描述:

在Python 2.7中工作。在python中迭代的问题

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

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) 

我知道这种一个新手的问​​题,但我在我无计可施......

+0

你不可能有'如果win_percentage =观察:'因为这是一个'SyntaxError',你需要''==不是'='。 – agf

正如其他人所指出的那样,你有=,你应该有==,但我认为这是一个错字这里,因为你会得到一个语法错误。但是你正在测试花车的平等性,而花车由于其不精确而几乎永远不会平等。一般来说,您会测试两个花车是否在相互之间的小差异内,传统上称为epsilon

试试这个:

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

啊,我明白了!非常感谢 –

=用于赋值,==用于比较。

变化if win_percentage = observed:变为if win_percentage == observed:

+2

如果他没有错误,这不可能是问题。这就是为什么我发布它作为评论。 – agf

+0

是的,只是冲了回答,投了高级答案。 – Jesse

应该

if win_percentage == observed: 
+1

如果他没有错误,这不可能是问题。这就是为什么我发布它作为评论。 – agf