Exercício 08-21:

Escreva uma função que gere os números como a função range do Python. Essa função recebe três parâmetros e seu comportamento muda se passarmos um, dois ou três parâmetros. Chame-a de faixa.

Exemplos:

list(faixa(1))
[0, 1]
list(faixa(1, 10))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(faixa(0, 10, 2))
[0, 2, 4, 6, 8, 10]

Você deve ter percebido que, diferente de range, a função faixa considera o fim do intervalo fechado, ou seja, o último número faz parte da faixa.

Resposta:

##############################################################################
# Parte do livro Introdução à Programação com Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Quarta Edição - Março/2024 - ISBN 978-85-7522-886-9
#
# Site: https://python.nilo.pro.br/
#
# Arquivo: capitulo 08/exercicio-08-21.py
##############################################################################
def faixa(inicio, fim=None, passo=1):
    if fim is None:
        inicio, fim = 0, inicio

    atual = inicio
    while atual <= fim:  # Observe o <= para incluir o último valor
        yield atual
        atual += passo


# Casos de teste
print(list(faixa(1)))  # [0, 1]
print(list(faixa(1, 10)))  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(faixa(0, 10, 2)))  # [0, 2, 4, 6, 8, 10]
Clique aqui para baixar o arquivo