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 == 1
和False == 0
。
查看此处了解更多信息:Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language?
这是“duck typing”的应用。在这种情况下,i>num
的计算结果为 True
或 False
的布尔值,但在 range
函数的上下文中,True
相当于整数1
,而False
等价于整数0
。
因此,例如,如果 i>num
是 False
,则该代码等同于
for i in range(i, 0, -num):
#do stuff
有人用这个例子给我 (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 == 1
和False == 0
。
查看此处了解更多信息:Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language?
这是“duck typing”的应用。在这种情况下,i>num
的计算结果为 True
或 False
的布尔值,但在 range
函数的上下文中,True
相当于整数1
,而False
等价于整数0
。
因此,例如,如果 i>num
是 False
,则该代码等同于
for i in range(i, 0, -num):
#do stuff