Loops are one of the main control structures in any programming language, and Python is no different.

In this article, we will look at a couple of examples using `for` loops with Python's `range()` function.

## For Loops in Python

`for` loops repeat a portion of code for a set of values.

As discussed in Python's documentation, `for` loops work slightly differently than they do in languages such as JavaScript or C.

A `for` loop sets the iterator variable to each value in a provided list, array, or string and repeats the code in the body of the `for` loop for each value of the iterator variable.

In the example below, we use a `for` loop to print every number in our array.

``````# Example for loop
for i in [1, 2, 3, 4]:
print(i, end=", ") # prints: 1, 2, 3, 4,``````

We can include more complex logic in the body of a `for` loop as well. In this example we print the result of a small computation based on the value of our iterator variable.

``````# More complex example
for i in [1, 3, 5, 7, 9]:
x = i**2 - (i-1)*(i+1)
print(x, end=", ") # prints 1, 1, 1, 1, 1, ``````

When the values in the array for our `for` loop are sequential, we can use Python's `range()` function instead of writing out the contents of our array.

## The Range function in Python

The `range()` function provides a sequence of integers based upon the function's arguments. Additional information can be found in Python's documentation for the `range()` function.

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

The `start` argument is the first value in the range. If `range()` is called with only one argument, then Python assumes `start = 0`.

The `stop` argument is the upper bound of the range. It is important to realize that this upper value is not included in the range.

In the example below, we have a range starting at the default value of `0` and including integers less than `5`.

``````# Example with one argument
for i in range(5):
print(i, end=", ") # prints: 0, 1, 2, 3, 4, ``````

In our next example, we set `start = -1` and again include integers less than `5`.

``````# Example with two arguments
for i in range(-1, 5):
print(i, end=", ") # prints: -1, 0, 1, 2, 3, 4, ``````

The optional `step` value controls the increment between the values in the range. By default, `step = 1`.

In our final example, we use the range of integers from `-1` to `5` and set `step = 2`.

``````# Example with three arguments
for i in range(-1, 5, 2):
print(i, end=", ") # prints: -1, 1, 3, ``````

## Summary

In this article, we looked at `for` loops in Python and the `range()` function.

`for` loops repeat a block of code for all of the values in a list, array, string, or `range()`.

We can use a `range()` to simplify writing a `for` loop. The `stop` value of the `range()` must be specified, but we can also modify the `start`ing value and the `step` between integers in the `range()`.