python 中 x>0 和 x(作为条件)之间的区别?

Difference between x>0 and x (as a condition) in python?

以下代码片段有什么区别? (我知道 bal 的负值是真实的,但为什么 bal 永远是负值?)

while spin and bal>0:
    bal = bal - 1
    bal = bal + funciton() #adds either 0 or a positive value to bal
    spin-=1
if (spin==0):
    s=s+1

片段 2:

while spin and bal:
    bal = bal - 1
    bal = bal + funciton() #adds either 0 or a positive value to bal
    spin-=1
if (spin==0):
    s=s+1

假设bal从一开始就是一个正整数并且function()return是一个正整数,那么这两个代码片段确实是等价的。

不过,如果要将 bal 作为计数器递减,您应该倾向于使用 bal > 0。这样既安全又明确。

否则可能会出错。

bal 可以是浮点数

bal = 0.5
while bal:
    bal -= 1
    ...

永远不会满足条件 bal == 0

bal 一开始可能是负数。

bal = -1
while bal:
    bal -= 1
    ...

同样,bal 永远不会是假的,因为它总是低于 0

function 可以 return 一个浮点数

添加一个 int 和一个 float 将产生一个 float 并且由于 float arithmetic errors 不建议依赖浮点数的虚假性。

这是一个例子

bal = 0.1
bal += 0.2
bal -= 0.3

bal # 5.551115123125783e-17
bool(bal) # True

你会在数学上期望 bal 为零,尽管在浮点运算中它在这种情况下是真实的。