Range function: step in Python


The range() function defaults to increment the sequence by 1.

However, it is possible to specify the increment value by adding a third parameter: range(start, end, step).

For example:

range(2, 17, 3) # returns the sequence [2, 5, 8, 11, 14]

Looping through even numbers:

For example, we can use range() and for to loop through the even numbers in some range:

for i in range(2, 12, 2):
	print(i)

The output of this code is:

2
4
6
8
10

Assignment

Let's print all odd numbers from 7 through 23 using a for loop.


Hint
Look at the examples above if you get stuck.


Introduction

The range() function in Python is a powerful tool for generating sequences of numbers. It is commonly used in loops to iterate over a sequence of numbers. Understanding how to use the range() function with different step values can significantly enhance your ability to write efficient and concise code.

This lesson will focus on using the range() function with a step parameter to generate sequences with custom increments. This is particularly useful in scenarios where you need to iterate over a sequence with a specific pattern, such as generating even or odd numbers.

Understanding the Basics

The range() function generates a sequence of numbers, starting from a specified start value and ending before a specified end value. By default, the sequence increments by 1. However, you can specify a different increment value using the step parameter.

For example, range(2, 17, 3) generates the sequence [2, 5, 8, 11, 14]. Here, the sequence starts at 2, ends before 17, and increments by 3.

Understanding these basics is crucial before moving on to more complex applications of the range() function.

Main Concepts

The key concept here is the use of the step parameter in the range() function. The syntax is range(start, end, step), where:

To apply these concepts, consider the task of generating even numbers between 2 and 12:

for i in range(2, 12, 2):
    print(i)

This code will output: 2, 4, 6, 8, 10.

Examples and Use Cases

Let's look at a few examples to solidify our understanding:

Example 1: Generating a sequence of odd numbers from 7 to 23

for i in range(7, 24, 2):
    print(i)

This code will output: 7, 9, 11, 13, 15, 17, 19, 21, 23.

Example 2: Generating a sequence of numbers with a negative step

for i in range(10, 0, -2):
    print(i)

This code will output: 10, 8, 6, 4, 2.

Common Pitfalls and Best Practices

When using the range() function, it's important to avoid common mistakes such as:

Best practices include:

Advanced Techniques

Advanced use of the range() function can involve combining it with other functions or using it in more complex loops. For example, you can use the range() function with list comprehensions to generate lists of numbers:

even_numbers = [i for i in range(2, 12, 2)]
print(even_numbers)

This code will output: [2, 4, 6, 8, 10].

Code Implementation

Let's implement the assignment to print all odd numbers from 7 through 23:

# Loop through odd numbers from 7 to 23
for i in range(7, 24, 2):
    print(i)

This code will output: 7, 9, 11, 13, 15, 17, 19, 21, 23.

Debugging and Testing

When debugging code that uses the range() function, consider the following tips:

To test the function, you can write simple test cases to ensure it behaves as expected:

def test_range_function():
    result = list(range(7, 24, 2))
    expected = [7, 9, 11, 13, 15, 17, 19, 21, 23]
    assert result == expected, f"Expected {expected}, but got {result}"

test_range_function()

Thinking and Problem-Solving Tips

When approaching problems involving the range() function:

Conclusion

Mastering the range() function with a step parameter is a valuable skill in Python programming. It allows you to generate custom sequences of numbers efficiently and is particularly useful in loops. By understanding the basics, avoiding common pitfalls, and practicing with various examples, you can enhance your coding skills and write more efficient code.

Additional Resources

For further reading and practice, consider the following resources: