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
为零,尽管在浮点运算中它在这种情况下是真实的。
以下代码片段有什么区别? (我知道 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
为零,尽管在浮点运算中它在这种情况下是真实的。