How to Generate Range of Integers in Python

1 min read 246 words

The challenge

Implement a function named generateRange(min, max, step), which takes three arguments and generates a range of integers from min to max, with the step. The first integer is the minimum value, the second is the maximum of the range and the third is the step. (min < max)

Task

Implement a function named

generate_range(2, 10, 2) # should return list of [2,4,6,8,10]
generate_range(1, 10, 3) # should return list of [1,4,7,10]
generate_range(2, 10, 2) # should return array of [2, 4, 6, 8, 10]
generate_range(1, 10, 3) # should return array of [1, 4, 7, 10]

Note

  • min < max
  • step > 0
  • the range does not HAVE to include max (depending on the step)

The solution in Python code

Option 1:

def generate_range(min, max, step):
    out = []
    for i in range(min, max+1, step):
        out.append(i)
    return out

Option 2:

def generate_range(min, max, step):
    return [i for i in range(min, max+1, step)]

Option 3:

generate_range=lambda a,b,c:list(range(a,b+1,c))

Test cases to validate our solution

import test
from solution import generate_range

@test.describe("Sample tests")
def test_group():
    @test.it("Simple case")
    def test_case1():
        test.assert_equals(generate_range(1, 10, 1), [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    @test.it('Negative numbers')
    def test_case2():
        test.assert_equals(generate_range(-10, 1, 1), [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1])
    @test.it('Step > max')
    def test_case3():
        test.assert_equals(generate_range(1, 15, 20), [1])
    @test.it('Step = 2')
    def test_case4():
        test.assert_equals(generate_range(1, 7, 2), [1, 3, 5, 7])
    @test.it('Step = 3')
    def test_case5():
        test.assert_equals(generate_range(0, 20, 3), [0, 3, 6, 9, 12, 15, 18])
Tags:
Andrew
Andrew

Andrew is a visionary software engineer and DevOps expert with a proven track record of delivering cutting-edge solutions that drive innovation at Ataiva.com. As a leader on numerous high-profile projects, Andrew brings his exceptional technical expertise and collaborative leadership skills to the table, fostering a culture of agility and excellence within the team. With a passion for architecting scalable systems, automating workflows, and empowering teams, Andrew is a sought-after authority in the field of software development and DevOps.

Tags