From the documentation:

range([start], stop[, step])

The start defaults to 0, the step can be whatever you want, except 0 and stop is your upper bound, it is not the number of iterations. So declare n to be whatever your upper bound is correctly and you will not have to add 1 to it.

e.g.

>>> for i in range(1, 7, 1): print(i)
... 
1
2
3
4
5
6
>>> for i in range(1, 7, 2): print(i)
... 
1
3
5

A nice feature, is that it works in reverse as well.

>>> for i in range(7, 0, -1): print(i)
... 
7
6
5
4
3
2
1

If you aren't using it as an index but for something that can have positive or negative values, it still comes in handy:

>>> for i in range(2, -3, -1): print(i)
... 
2
1
0
-1
-2
>>> for i in range(-2, 3, 1): print(i)
... 
-2
-1
0
1
2
Answer from Rolf of Saxony on Stack Overflow
Discussions

python - How to start with the number 1 in a for loop? - Stack Overflow
I want the first output to be "Enter the burst time of process 1" instead of "process 0". How to i do this? num = int(input('Enter the number of processes: ')) for i in range(num): ... More on stackoverflow.com
🌐 stackoverflow.com
iteration - Start index for iterating Python list - Stack Overflow
What is the best way to set a start index when iterating a list in Python. For example, I have a list of the days of the week - Sunday, Monday, Tuesday, ... Saturday - but I want to iterate through... More on stackoverflow.com
🌐 stackoverflow.com
Select first in for loop
The indentation (white space) is very important for Python. This loop can be read or interpreted as: go over each element from list, assigning that item to a variable named i and then displaying that variable before next cycle · It doesn’t make any sense there, mostly because i does not ... More on forum.freecodecamp.org
🌐 forum.freecodecamp.org
0
0
April 7, 2024
How do you start a for loop at 1 instead of 0?
Hi! I'm working on a bot to reply with suggestions for common python problems. This might not be very helpful to fix your underlying issue, but here's what I noticed about your submission: You are looping over an object using something like for x in range(len(items)): foo(item[x]) This is simpler and less error prone written as for item in items: foo(item) If you DO need the indexes of the items, use the enumerate function like for idx, item in enumerate(items): foo(idx, item) More on reddit.com
🌐 r/learnpython
16
6
November 13, 2015
🌐
GeeksforGeeks
geeksforgeeks.org › python › how-to-start-a-for-loop-at-1-python
How to start a for loop at 1 - Python - GeeksforGeeks
July 23, 2025 - If we are iterating over a collection but need an index that starts at 1 the enumerate() function is useful. It has an optional start parameter to specify the starting index. ... # List of items items = ["apple", "banana", "cherry"] for idx, ...
🌐
Spark By {Examples}
sparkbyexamples.com › home › python › how to start python for loop at 1
How to Start Python For Loop at 1 - Spark By {Examples}
May 31, 2024 - To start the for loop with index at 1 in Python use the range() with start param at 1 and for the end value use the len() which gives the length of the sequence object. With this we can start the for loop at index 1.
🌐
AskPython
askpython.com › home › pythonic way to iterate through a range starting at 1
Pythonic Way to Iterate Through a Range Starting at 1 - AskPython
June 30, 2023 - The range function allows you to create a sequence of numbers with a particular step size. The step size is set to 1 by default. The starting value is set to 0 by default, and we just need to pass the ending value.
🌐
Delft Stack
delftstack.com › home › howto › python › python for loop start at 1
How to Start a for Loop at 1 in Python | Delft Stack
March 11, 2025 - Explore methods like using the range() function, list slicing, and the enumerate() function to customize your loops effectively. Learn to write intuitive and user-friendly code that meets your specific requirements.
Find elsewhere
🌐
GeeksforGeeks
geeksforgeeks.org › python › how-to-start-enumerate-from-1-in-python
How to start enumerate from 1 in Python ? - GeeksforGeeks
July 23, 2025 - Python · a = ["Geeks", "for", "geeks"] # 'start=1' parameter ensures enumeration starts from 1 for index, value in enumerate(a, start=1): print(f"{index}: {value}") Table of Content · Using Manual Counter · Using zip with range · Using itertools.count() Using List Comprehensions · If you're working with a custom loop or don't want to use enumerate() for some reason, you can manually adjust the index.
🌐
Quora
quora.com › Why-does-Python-start-at-index-1-when-iterating-an-array-backwards
Why does Python start at index 1 when iterating an array backwards? - Quora
Python does not inherently “start at index 1” when iterating an array (list) backwards. The apparent 1-based behavior usually comes from how a particular reverse loop or slice is written.
🌐
W3Schools
w3schools.com › python › python_for_loops.asp
Python For Loops
To loop through a set of code a specified number of times, we can use the range() function, The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.
🌐
Quora
quora.com › Do-for-and-while-loops-begin-at-0-or-1
Do for and while loops begin at 0 or 1? - Quora
Answer (1 of 17): In most modern languages - they do what you tell them to do. [code]for ( i = 0 ; i
🌐
Syntaxdb
syntaxdb.com › ref › python › for-loop
For Loop in Python - SyntaxDB - Python Syntax Reference
# for-each behaviour for element in sequence: #code to perform, on element # C-style for loop behaviour, start index is optional for element in range(start, finish): #code to execute
🌐
Python Guides
pythonguides.com › python-for-loop-index
How to Use Python For Loop with Index
October 14, 2025 - Modifying the list while looping: ... Remember that Python uses zero-based indexing. If you want a human-readable index, start from 1 using enumerate(states, start=1)....
🌐
Free Outlook
web.nutritionjobs.com › home › news › python `for` loop: start `range()` from 1
Python `for` Loop: Start `range()` From 1
January 6, 2026 - In most cases, enumerate() with start=1 is the cleanest, most Pythonic, and most maintainable solution. Starting a Python for loop from 1 is super easy once you understand how range() works.
🌐
freeCodeCamp
forum.freecodecamp.org › python
Select first in for loop - Python - The freeCodeCamp Forum
April 7, 2024 - in need to do something with the first in a for loop. something like this list = [1,2,3,4] for i in list: print(i) print(i[0] )
🌐
Note.nkmk.me
note.nkmk.me › home › python
How to Start enumerate() at 1 in Python | note.nkmk.me
May 6, 2023 - For example, this approach is useful ... is more efficient than calculating i + 1. for i, name in enumerate(l, 1): print(f'{i:03}_{name}') # 001_Alice # 002_Bob # 003_Charlie ......
🌐
Python
wiki.python.org › moin › ForLoop
ForLoop - Python Wiki
You can also have an optional else clause, which will run should the for loop exit cleanly - that is, without breaking. ... list_of_lists = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]] for list in list_of_lists: for x in list: print(x) ... class Iterable(object): def __init__(self,values): self.values = values self.location = 0 def __iter__(self): return self def next(self): if self.location == len(self.values): raise StopIteration value = self.values[self.location] self.location += 1 return value ... def my_range(start, end, step): while start <= end: yield start start += step for x in my_range(1, 10, 0.5): print(x)
🌐
Snakify
snakify.org › for loop with range
For loop with range - Learn Python 3 - Snakify
Pay attention that maximum value in range() is n + 1 to make i equal to n on the last step. To iterate over a decreasing sequence, we can use an extended form of range() with three arguments - range(start_value, end_value, step). When omitted, the step is implicitly equal to 1. However, can be any non-zero value. The loop always includes start_value and excludes end_value during iteration: