Хотя здесь есть несколько полезных алгоритмических объяснений, я думаю, что это может помочь добавить несколько простых «реальных» рассуждений о том, почему это работает таким образом, что я нашел полезным при ознакомлении с предметом для молодых новичков:
С чем-то вроде 'range (1,10)' может возникнуть путаница из-за того, что пара параметров представляет "начало и конец".
Это на самом деле начало и "остановка".
Теперь, если бы это было значением "конца", тогда да, вы могли бы ожидать, что число будет включено в качестве последней записи в последовательности.Но это не «конец».
Другие ошибочно называют этот параметр «счетчиком», потому что если вы когда-либо используете только «range (n)», тогда, конечно, он повторяет «n» раз.Эта логика ломается, когда вы добавляете параметр запуска.
Поэтому ключевым моментом является запоминание его имени: " stop ".Это означает, что это точка, в которой при достижении итерация будет немедленно остановлена.Не после этой точки.
Таким образом, хотя «start» действительно представляет первое включаемое значение, при достижении значения «stop» оно «ломается»вместо того, чтобы продолжать обрабатывать «это тоже» перед тем, как остановиться.
Одна аналогия, которую я использовал, объясняя это детям, состоит в том, что, по иронии судьбы, он ведет себя лучше, чем дети!Он не останавливается после , он должен был - он останавливается немедленно, не завершая то, что делал.(Они получают это;))
Еще одна аналогия - когда вы ведете машину, вы не проходите знак остановки / выхода / уступить дорогу и конецсидя рядом с вашей машиной.Технически вы все еще не достигли этого, когда остановитесь.Он не включен в «вещи, которые вы передали в своем путешествии».
Я надеюсь, что кое-что из этого поможет в объяснении Pythonitos / Pythonitas!