我看到了一些与此类似的问题,但似乎没有人解决这个具体问题,所以我不知道我是否忽略了某些东西,因为我是 Python 新手。
这是问题的上下文:
for i in range(10):
if something_happens(i):
break
if(something_happened_on_last_position()):
# do something
从我的 C 背景来看,如果我有一个 for (i=0;i<10;i++) 做同样的事情,如果没有发生中断,那么 i 的值将是 10,而不是 9,和 9如果它发生在最后一个元素上。这意味着方法 something_happened_on_last_position() 可以使用这个事实来区分这两个事件。然而,我在 python 上注意到的是,即使在没有中断的情况下成功运行循环后,我也会在 9 处停止。
虽然两者之间的区别可以像在其中添加一个变量(如标志)一样简单,但我从不喜欢在 C 上使用这种用法。所以我很好奇,是否有另一种选择来做到这一点,或者我在这里错过了什么愚蠢的东西?
请注意,我不能只使用 range(11),因为这会运行 something_happens(10)。这在 C 上是不同的,因为 '10' 在 for 循环的条件下会失败并且永远不会执行 something_happens(10) (因为我们从索引 0 开始,Python 和 C 上的值都是 10)。
我使用这些方法只是为了说明我感兴趣的代码块,它们是一组与解释问题无关的其他条件。
谢谢!