Хотя это не мешает моему коду, мне любопытно узнать, почему это происходит.
Ну, вы сделали следующее предположение:
, поскольку он будет считать каждое целое число вплоть до ширины сетки, но также и 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
такова, потому что это то, к чему привыкли программисты - потому что в старых языках вы индексируете массивы в своих циклах (вместо получение предметов напрямую) легче избежать логических ошибок таким образом.