有人给我带来了这个例子(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
应该评估为 bool 值?上下文是一个教程函数,它使用 for 循环实现除法。
最佳答案
这是“duck typing”的应用。在这种情况下, i>num
计算为 True
或 False
的 bool 值,但在 range
函数的上下文中, True
等效于整数 1
,而 False
等效于整数 0
。
因此,例如,如果 i>num
是 False
,则该代码等效于
for i in range(i, 0, -num):
#do stuff
关于Python,在for循环中有一个条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28933958/