虽然它不会妨碍我的代码,但我很好奇为什么会发生这种情况。
嗯,你做了以下假设:
因为它会计算每个整数,直到并包括网格宽度,但也包括 0。
您是否尝试测试该假设?
for i in range(0, gridwidth):
print(i)
注意gridwidth 的值没有打印出来。
或者您可以尝试阅读文档:
>>> help(range)
Help on class range in module builtins:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Return an object that produces a sequence of integers from start (inclusive) | to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
| start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
| These are exactly the valid indices for a list of 4 elements.
| When step is given, it specifies the increment (or decrement).
发生这种情况的原因是因为 range 就是这样定义的。
以这种方式定义range 的动机是因为这是程序员所习惯的——因为在旧语言中,您可以在循环中对数组进行索引(而不是直接获取项目),easier to avoid logical errors 就是这种方式。