Python,在for循环中有一个条件

Python, have a condition in a for loop

有人用这个例子给我 (python2):

num = int(input("num")) 
den = int(input("den"))

quot = 0
rest = den
i = num

for i in range(i,i>den, -den):
  quot = quot + 1
  rest = i - den

print quot
print rest     

代码运行良好,完成了它需要做的事情,并且没有产生错误。

我不明白为什么。对我来说,range() 需要一个下限和一个上限,对我来说,i 将是较低的值,而 i>den 应该评估为布尔值?

context 是一个使用 for 循环实现除法的教程函数。

这是因为Python考虑了True == 1False == 0

查看此处了解更多信息:Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language?

这是“duck typing”的应用。在这种情况下,i>num 的计算结果为 TrueFalse 的布尔值,但在 range 函数的上下文中,True 相当于整数1,而False等价于整数0

因此,例如,如果 i>numFalse,则该代码等同于

for i in range(i, 0, -num):
  #do stuff