Какова логика стоп-значения функции диапазона с отрицательным значением шага в python

#python #range #logic

#python #диапазон #Логические

Вопрос:

Мой вопрос очень прост. Я новичок в python и недавно узнал о range() python. И я просматриваю пример программы в этой задаче, которую они попросили напечатать таблицу обратного умножения из 3, используя функцию диапазона, и мой код

 for i in range(30,3,-3):
           print(i)
 

Но результат не такой, как я ожидал. Вывод не включает 3. Я не знаю почему.
На мой вопрос, последнее значение должно быть (стоп-значение -1), т.Е. В данном случае 2. Поэтому 3 также должен быть напечатан, но не так. Пожалуйста, объясните, почему.
Я неправильно понял логику? Если да, пожалуйста, объясните.

Комментарии:

1. Ожидаете ли вы 30 дюймов list(range(3,30)) ?

Ответ №1:

В документах python для диапазона (start, stop [, step]) говорится следующее: :

Для отрицательного шага содержимое диапазона по-прежнему определяется формулой r [i] = > start step * i, но ограничениями являются i > = 0 и r [i]> stop .

Это означает, что аргумент stop не включается в вычисление диапазона.

Комментарии:

1. Итак, ограничения для положительного значения шага — i>= 0 и r [i]<stop . Не так ли?

2. @SarweshArivazhagan Да, точно

Ответ №2:

range() исключает точку остановки при создании вашего списка (ну, на самом деле они возвращают генератор). Вы должны изменить 3 на 2 , тогда он будет включать 3