有人给我带来了这个例子(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 计算为 TrueFalse 的 bool 值,但在 range 函数的上下文中, True 等效于整数 1 ,而 False 等效于整数 0

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

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

关于Python,在for循环中有一个条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28933958/

10-12 16:38