Como gerar números de loteria aleatórios únicos em Python

PythonBeginner
Pratique Agora

Introdução

Neste tutorial, exploraremos como gerar números de loteria aleatórios únicos usando Python. Essa habilidade é útil para criar simulações de loteria, jogos ou até mesmo para sua própria seleção de números ao jogar na loteria. Aprenderemos como usar o módulo random do Python para gerar números que não se repetem, o que é um requisito fundamental para sistemas de loteria. Ao final deste laboratório, você será capaz de criar seu próprio gerador de números de loteria que produz conjuntos de números confiáveis e únicos.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível avançado com uma taxa de conclusão de 20%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Compreendendo o Módulo random em Python

O primeiro passo para criar um gerador de números de loteria é entender como o Python lida com números aleatórios. Nesta etapa, exploraremos o módulo random, que está embutido na biblioteca padrão do Python.

Criando Seu Primeiro Arquivo Python

Vamos começar criando um novo arquivo Python em nosso diretório de projeto:

  1. Abra a WebIDE e navegue até o painel do explorador de arquivos
  2. Navegue até o diretório ~/project/lottery
  3. Clique com o botão direito no painel do explorador de arquivos e selecione "Novo Arquivo"
  4. Nomeie o arquivo random_basics.py

Neste arquivo, exploraremos a funcionalidade básica do módulo random.

Importando o Módulo random

Primeiro, vamos escrever código para importar o módulo random e gerar alguns números aleatórios básicos:

## Import the random module
import random

## Generate a random float between 0 and 1
random_float = random.random()
print(f"Random float between 0 and 1: {random_float}")

## Generate a random integer between 1 and 10
random_int = random.randint(1, 10)
print(f"Random integer between 1 and 10: {random_int}")

## Generate a random integer from a range with a step
random_range = random.randrange(0, 101, 10)  ## 0, 10, 20, ..., 100
print(f"Random number from range (0, 101, 10): {random_range}")

Salve o arquivo e execute-o abrindo um terminal e executando:

cd ~/project/lottery
python3 random_basics.py

Você deve ver uma saída semelhante a esta:

Random float between 0 and 1: 0.7234567890123456
Random integer between 1 and 10: 7
Random number from range (0, 101, 10): 50

Cada vez que você executar o programa, obterá números aleatórios diferentes.

Compreendendo a Aleatoriedade e as Sementes (Seeds)

Geradores de números aleatórios em computadores não são verdadeiramente aleatórios; eles são "pseudo-aleatórios". Eles usam um valor inicial chamado "semente" (seed) para gerar uma sequência de números que parecem aleatórios. Se você definir a mesma semente, obterá a mesma sequência de números "aleatórios".

Vamos experimentar com sementes. Adicione o seguinte código ao seu arquivo random_basics.py:

## Setting a specific seed
print("\n--- Demonstrating Seeds ---")
random.seed(42)
print(f"First random number with seed 42: {random.randint(1, 100)}")
print(f"Second random number with seed 42: {random.randint(1, 100)}")

## Reset the seed to get the same sequence
random.seed(42)
print(f"First random number with seed 42 again: {random.randint(1, 100)}")
print(f"Second random number with seed 42 again: {random.randint(1, 100)}")

Salve e execute o programa novamente:

python3 random_basics.py

Você notará que, após redefinir a semente para 42, obtemos a mesma sequência de números aleatórios novamente. Isso demonstra que a aleatoriedade é determinística ao usar a mesma semente.

A saída deve ser semelhante a:

--- Demonstrating Seeds ---
First random number with seed 42: 24
Second random number with seed 42: 33
First random number with seed 42 again: 24
Second random number with seed 42 again: 33

Para nossa aplicação de loteria, não definiremos uma semente específica, permitindo que o Python use uma semente baseada no tempo do sistema para uma melhor aleatoriedade.

Gerando Números Básicos de Loteria

Agora que entendemos como gerar números aleatórios em Python, vamos nos concentrar em criar números de loteria únicos. A maioria dos jogos de loteria exige um conjunto de números únicos dentro de uma faixa específica.

Usando random.sample para Números Únicos

A função random.sample() é perfeita para gerar números de loteria porque seleciona elementos únicos de uma sequência. Vamos criar um novo arquivo para experimentar esta função:

  1. Na WebIDE, navegue até o diretório ~/project/lottery
  2. Crie um novo arquivo chamado basic_lottery.py

Adicione o seguinte código ao arquivo:

import random

## Generate 6 unique numbers from 1 to 49 (common lottery format)
lottery_numbers = random.sample(range(1, 50), 6)
print(f"Your lottery numbers are: {lottery_numbers}")

## Sort the numbers (many lottery displays show numbers in ascending order)
lottery_numbers.sort()
print(f"Your lottery numbers (sorted): {lottery_numbers}")

## Generate a different lottery format (e.g., 5 numbers from 1-69 and 1 from 1-26)
main_numbers = random.sample(range(1, 70), 5)
special_number = random.randint(1, 26)
print(f"Main numbers: {sorted(main_numbers)}, Special number: {special_number}")

Salve o arquivo e execute-o no terminal:

cd ~/project/lottery
python3 basic_lottery.py

Você deve ver uma saída semelhante a:

Your lottery numbers are: [23, 8, 45, 17, 34, 9]
Your lottery numbers (sorted): [8, 9, 17, 23, 34, 45]
Main numbers: [4, 28, 35, 47, 62], Special number: 13

Entendendo Como random.sample Funciona

A função random.sample(population, k) recebe dois argumentos:

  1. population - A sequência para amostrar (em nosso caso, range(1, 50))
  2. k - O número de elementos únicos a serem selecionados (em nosso caso, 6)

A função garante que todos os elementos selecionados sejam únicos. Isso é perfeito para números de loteria, pois os jogos de loteria exigem números únicos sem repetição.

Método Alternativo: Usando um Conjunto (Set)

Outra maneira de gerar números de loteria únicos é usar um conjunto (set) Python, que armazena apenas elementos únicos. Vamos adicionar essa abordagem alternativa ao nosso arquivo:

## Alternative approach using a set
print("\n--- Alternative approach using a set ---")
lottery_numbers_set = set()

## Keep adding random numbers until we have 6 unique numbers
while len(lottery_numbers_set) < 6:
    lottery_numbers_set.add(random.randint(1, 49))

print(f"Lottery numbers using set: {sorted(lottery_numbers_set)}")

Salve e execute o programa novamente:

python3 basic_lottery.py

Você deve agora ver uma saída adicional:

--- Alternative approach using a set ---
Lottery numbers using set: [4, 12, 27, 39, 44, 49]

Ambos os métodos produzem o mesmo resultado - um conjunto de números aleatórios únicos. A diferença está em como eles alcançam isso:

  • random.sample() seleciona elementos únicos de uma só vez
  • A abordagem do conjunto adiciona números um por um, lidando automaticamente com duplicatas

Para a maioria das aplicações de loteria, random.sample() é mais eficiente, mas entender ambas as abordagens oferece flexibilidade em sua programação.

Criando uma Função Reutilizável para Gerador de Números de Loteria

Agora que entendemos como gerar números aleatórios únicos, vamos criar uma função reutilizável para nosso gerador de números de loteria. Isso tornará nosso código mais organizado e nos permitirá gerar facilmente números para diferentes formatos de loteria.

Criando um Arquivo de Funções

Vamos criar um novo arquivo com nossas funções de loteria:

  1. Na WebIDE, navegue até o diretório ~/project/lottery
  2. Crie um novo arquivo chamado lottery_functions.py

Adicione o seguinte código para definir nossa função geradora de números de loteria:

import random

def generate_lottery_numbers(count, min_num, max_num):
    """
    Gera uma contagem especificada de números aleatórios únicos dentro de um determinado intervalo.

    Args:
        count (int): Número de números únicos a serem gerados
        min_num (int): Valor mínimo (inclusive)
        max_num (int): Valor máximo (inclusive)

    Returns:
        list: Lista ordenada de números aleatórios únicos
    """
    ## Validate inputs
    if count > (max_num - min_num + 1):
        raise ValueError(f"Cannot generate {count} unique numbers in range {min_num}-{max_num}")

    ## Generate unique random numbers
    numbers = random.sample(range(min_num, max_num + 1), count)

    ## Sort the numbers
    numbers.sort()

    return numbers

def generate_powerball_numbers():
    """
    Gera números para a loteria Powerball (5 números de 1-69 e 1 de 1-26).

    Returns:
        tuple: (list of main numbers, powerball number)
    """
    main_numbers = generate_lottery_numbers(5, 1, 69)
    powerball = random.randint(1, 26)
    return (main_numbers, powerball)

def generate_mega_millions_numbers():
    """
    Gera números para a loteria Mega Millions (5 números de 1-70 e 1 de 1-25).

    Returns:
        tuple: (list of main numbers, mega ball number)
    """
    main_numbers = generate_lottery_numbers(5, 1, 70)
    mega_ball = random.randint(1, 25)
    return (main_numbers, mega_ball)

Agora, vamos criar um arquivo para testar nossas funções:

  1. Na WebIDE, crie um novo arquivo chamado test_lottery_functions.py

Adicione o seguinte código para testar nossas funções:

import lottery_functions

## Test standard lottery function (e.g., 6 numbers from a range of 1-49)
standard_lottery = lottery_functions.generate_lottery_numbers(6, 1, 49)
print(f"Standard lottery (6 from 1-49): {standard_lottery}")

## Test Powerball function
main_numbers, powerball = lottery_functions.generate_powerball_numbers()
print(f"Powerball: Main numbers: {main_numbers}, Powerball: {powerball}")

## Test Mega Millions function
main_numbers, mega_ball = lottery_functions.generate_mega_millions_numbers()
print(f"Mega Millions: Main numbers: {main_numbers}, Mega Ball: {mega_ball}")

## Test with different parameters
custom_lottery = lottery_functions.generate_lottery_numbers(4, 1, 20)
print(f"Custom lottery (4 from 1-20): {custom_lottery}")

## Test error handling - Try to generate too many numbers
try:
    ## Trying to get 10 numbers from a range of only 5 numbers (impossible)
    impossible_lottery = lottery_functions.generate_lottery_numbers(10, 1, 5)
except ValueError as e:
    print(f"Error caught successfully: {e}")

Execute o arquivo de teste para ver nossas funções em ação:

cd ~/project/lottery
python3 test_lottery_functions.py

Você deve ver uma saída semelhante a:

Standard lottery (6 from 1-49): [4, 17, 23, 26, 39, 48]
Powerball: Main numbers: [3, 18, 27, 42, 61], Powerball: 13
Mega Millions: Main numbers: [7, 24, 31, 52, 67], Mega Ball: 9
Custom lottery (4 from 1-20): [2, 9, 15, 19]
Error caught successfully: Cannot generate 10 unique numbers in range 1-5

Benefícios de Usar Funções

Ao criar essas funções reutilizáveis, alcançamos vários objetivos importantes de programação:

  1. Reutilização de Código: Podemos gerar números de loteria em qualquer lugar do nosso programa sem duplicar código
  2. Validação de Entrada: Nossa função verifica se o número solicitado de valores únicos é possível no intervalo fornecido
  3. Abstração: Escondemos os detalhes de implementação dentro de funções com nomes descritivos
  4. Funções Especializadas: Criamos funções específicas para formatos de loteria comuns

Essa abordagem modular torna nosso código mais fácil de manter e entender. Na próxima etapa, usaremos essas funções para criar uma aplicação de loteria completa com uma interface de usuário.

Construindo uma Aplicação Completa de Loteria

Agora que temos nossas funções principais de loteria, vamos construir uma aplicação completa com uma interface de usuário. Criaremos uma interface de linha de comando simples que permite aos usuários gerar números para diferentes jogos de loteria.

Criando a Aplicação Principal

Vamos criar nosso arquivo de aplicação principal:

  1. Na WebIDE, navegue até o diretório ~/project/lottery
  2. Crie um novo arquivo chamado lottery_app.py

Adicione o seguinte código para criar uma aplicação simples orientada por menu:

import lottery_functions
import time

def print_header():
    """Display the application header"""
    print("\n" + "=" * 50)
    print("          GERADOR DE NÚMEROS DE LOTERIA PYTHON")
    print("=" * 50)
    print("Gere números aleatórios para vários jogos de loteria")
    print("-" * 50)

def print_menu():
    """Display the main menu options"""
    print("\nSelecione um jogo de loteria:")
    print("1. Loteria Padrão (6 números de 1-49)")
    print("2. Powerball (5 números de 1-69 + 1 de 1-26)")
    print("3. Mega Millions (5 números de 1-70 + 1 de 1-25)")
    print("4. Loteria Personalizada")
    print("5. Sair")
    return input("\nDigite sua escolha (1-5): ")

def get_custom_lottery_params():
    """Get parameters for a custom lottery from the user"""
    try:
        count = int(input("Quantos números você deseja gerar? "))
        min_num = int(input("Digite o número mínimo: "))
        max_num = int(input("Digite o número máximo: "))
        return count, min_num, max_num
    except ValueError:
        print("Por favor, insira números válidos")
        return get_custom_lottery_params()

def main():
    """Main application function"""
    print_header()

    while True:
        choice = print_menu()

        if choice == '1':
            ## Standard Lottery
            numbers = lottery_functions.generate_lottery_numbers(6, 1, 49)
            print("\nSeus números da Loteria Padrão são:")
            print(f"    {numbers}")

        elif choice == '2':
            ## Powerball
            main_numbers, powerball = lottery_functions.generate_powerball_numbers()
            print("\nSeus números do Powerball são:")
            print(f"    Números principais: {main_numbers}")
            print(f"    Powerball: {powerball}")

        elif choice == '3':
            ## Mega Millions
            main_numbers, mega_ball = lottery_functions.generate_mega_millions_numbers()
            print("\nSeus números do Mega Millions são:")
            print(f"    Números principais: {main_numbers}")
            print(f"    Mega Ball: {mega_ball}")

        elif choice == '4':
            ## Custom Lottery
            print("\nConfiguração da Loteria Personalizada:")
            count, min_num, max_num = get_custom_lottery_params()
            try:
                numbers = lottery_functions.generate_lottery_numbers(count, min_num, max_num)
                print(f"\nSeus números da Loteria Personalizada são:")
                print(f"    {numbers}")
            except ValueError as e:
                print(f"Erro: {e}")

        elif choice == '5':
            ## Exit
            print("\nObrigado por usar o Gerador de Números de Loteria Python!")
            print("Adeus!\n")
            break

        else:
            print("\nEscolha inválida. Por favor, selecione 1-5.")

        ## Pause before showing the menu again
        input("\nPressione Enter para continuar...")

if __name__ == "__main__":
    main()

Execute a aplicação:

cd ~/project/lottery
python3 lottery_app.py

Você deve ver uma interface de menu como esta:

==================================================
          GERADOR DE NÚMEROS DE LOTERIA PYTHON
==================================================
Gere números aleatórios para vários jogos de loteria
--------------------------------------------------

Selecione um jogo de loteria:
1. Loteria Padrão (6 números de 1-49)
2. Powerball (5 números de 1-69 + 1 de 1-26)
3. Mega Millions (5 números de 1-70 + 1 de 1-25)
4. Loteria Personalizada
5. Sair

Digite sua escolha (1-5):

Experimente cada opção para ver como nossa aplicação funciona. Por exemplo, se você selecionar a opção 1, verá uma saída como:

Seus números da Loteria Padrão são:
    [7, 12, 23, 35, 41, 47]

Explorando a Aplicação

Esta aplicação demonstra vários conceitos importantes de programação:

  1. Interface de Usuário: Criamos um sistema de menu simples baseado em texto
  2. Validação de Entrada: Validamos a entrada do usuário e tratamos erros de forma adequada
  3. Chamadas de Função: Usamos nossas funções de loteria da etapa anterior
  4. Fluxo da Aplicação: O programa continua em execução até que o usuário escolha sair

A estrutura também segue boas práticas de programação:

  • O código é organizado em funções com propósitos específicos
  • Usamos o padrão if __name__ == "__main__" para tornar nosso script importável e executável
  • A entrada do usuário é tratada com prompts claros e validação

Experimente a opção de loteria personalizada (4) para gerar números para diferentes formatos de loteria.

Adicionando Histórico e Estatísticas

Vamos aprimorar nossa aplicação de loteria adicionando a capacidade de rastrear os números gerados e exibir estatísticas simples. Esse recurso ajudará os usuários a identificar padrões ou ver quais números foram gerados com mais frequência.

Criando o Módulo de Estatísticas

Primeiro, vamos criar um novo arquivo para rastrear o histórico e as estatísticas dos números:

  1. Na WebIDE, navegue até o diretório ~/project/lottery
  2. Crie um novo arquivo chamado lottery_stats.py

Adicione o seguinte código:

class LotteryStats:
    def __init__(self):
        """Inicializa o rastreador de estatísticas"""
        self.history = []  ## Lista para armazenar todos os conjuntos de números gerados
        self.frequency = {}  ## Dicionário para rastrear a frequência de cada número

    def add_draw(self, numbers):
        """
        Adiciona um novo conjunto de números ao histórico e atualiza as contagens de frequência

        Args:
            numbers (list): Os números da loteria que foram sorteados
        """
        ## Adiciona ao histórico
        self.history.append(numbers)

        ## Atualiza as contagens de frequência
        for num in numbers:
            if num in self.frequency:
                self.frequency[num] += 1
            else:
                self.frequency[num] = 1

    def get_most_common(self, count=5):
        """
        Obtém os números sorteados com mais frequência

        Args:
            count (int): Número das principais frequências a serem retornadas

        Returns:
            list: Lista de tuplas (número, frequência)
        """
        ## Ordena o dicionário de frequência por valores (decrescente)
        sorted_freq = sorted(self.frequency.items(), key=lambda x: x[1], reverse=True)

        ## Retorna os 'count' itens principais (ou todos se houver menos)
        return sorted_freq[:min(count, len(sorted_freq))]

    def get_draw_count(self):
        """Obtém o número total de sorteios registrados"""
        return len(self.history)

    def get_last_draws(self, count=5):
        """
        Obtém os sorteios mais recentes

        Args:
            count (int): Número de sorteios recentes a serem retornados

        Returns:
            list: Lista de sorteios recentes
        """
        return self.history[-count:]

Atualizando a Aplicação Principal

Agora, vamos modificar nosso arquivo lottery_app.py para incluir o rastreamento de estatísticas. Abra o arquivo e substitua seu conteúdo por:

import lottery_functions
import lottery_stats
import time

def print_header():
    """Display the application header"""
    print("\n" + "=" * 50)
    print("          GERADOR DE NÚMEROS DE LOTERIA PYTHON")
    print("=" * 50)
    print("Gere números aleatórios para vários jogos de loteria")
    print("-" * 50)

def print_menu():
    """Display the main menu options"""
    print("\nSelecione uma opção:")
    print("1. Loteria Padrão (6 números de 1-49)")
    print("2. Powerball (5 números de 1-69 + 1 de 1-26)")
    print("3. Mega Millions (5 números de 1-70 + 1 de 1-25)")
    print("4. Loteria Personalizada")
    print("5. Ver Estatísticas")
    print("6. Sair")
    return input("\nDigite sua escolha (1-6): ")

def get_custom_lottery_params():
    """Get parameters for a custom lottery from the user"""
    try:
        count = int(input("Quantos números você deseja gerar? "))
        min_num = int(input("Digite o número mínimo: "))
        max_num = int(input("Digite o número máximo: "))
        return count, min_num, max_num
    except ValueError:
        print("Por favor, insira números válidos")
        return get_custom_lottery_params()

def display_statistics(stats):
    """Display lottery statistics"""
    print("\n" + "=" * 50)
    print("           ESTATÍSTICAS DA LOTERIA")
    print("=" * 50)

    ## Get basic stats
    draw_count = stats.get_draw_count()
    print(f"Total de sorteios: {draw_count}")

    if draw_count == 0:
        print("Nenhum número de loteria foi gerado ainda.")
        return

    ## Show most common numbers
    print("\nNúmeros mais comuns:")
    for num, freq in stats.get_most_common():
        print(f"  Número {num}: sorteado {freq} vezes ({freq/draw_count:.1%})")

    ## Show recent draws
    print("\nSorteios mais recentes:")
    for i, draw in enumerate(stats.get_last_draws()):
        print(f"  Sorteio {draw_count-i}: {draw}")

def main():
    """Main application function"""
    print_header()

    ## Initialize the statistics tracker
    stats = lottery_stats.LotteryStats()

    while True:
        choice = print_menu()

        if choice == '1':
            ## Standard Lottery
            numbers = lottery_functions.generate_lottery_numbers(6, 1, 49)
            stats.add_draw(numbers)  ## Add to statistics
            print("\nSeus números da Loteria Padrão são:")
            print(f"    {numbers}")

        elif choice == '2':
            ## Powerball
            main_numbers, powerball = lottery_functions.generate_powerball_numbers()
            stats.add_draw(main_numbers + [powerball])  ## Add to statistics
            print("\nSeus números do Powerball são:")
            print(f"    Números principais: {main_numbers}")
            print(f"    Powerball: {powerball}")

        elif choice == '3':
            ## Mega Millions
            main_numbers, mega_ball = lottery_functions.generate_mega_millions_numbers()
            stats.add_draw(main_numbers + [mega_ball])  ## Add to statistics
            print("\nSeus números do Mega Millions são:")
            print(f"    Números principais: {main_numbers}")
            print(f"    Mega Ball: {mega_ball}")

        elif choice == '4':
            ## Custom Lottery
            print("\nConfiguração da Loteria Personalizada:")
            count, min_num, max_num = get_custom_lottery_params()
            try:
                numbers = lottery_functions.generate_lottery_numbers(count, min_num, max_num)
                stats.add_draw(numbers)  ## Add to statistics
                print(f"\nSeus números da Loteria Personalizada são:")
                print(f"    {numbers}")
            except ValueError as e:
                print(f"Erro: {e}")

        elif choice == '5':
            ## View Statistics
            display_statistics(stats)

        elif choice == '6':
            ## Exit
            print("\nObrigado por usar o Gerador de Números de Loteria Python!")
            print("Adeus!\n")
            break

        else:
            print("\nEscolha inválida. Por favor, selecione 1-6.")

        ## Pause before showing the menu again
        input("\nPressione Enter para continuar...")

if __name__ == "__main__":
    main()

Execute a aplicação atualizada:

cd ~/project/lottery
python3 lottery_app.py

Tente gerar vários conjuntos de números de loteria e, em seguida, selecione a opção 5 para visualizar as estatísticas sobre os números que você gerou. Se você gerar números suficientes, poderá começar a ver quais números aparecem com mais frequência, mesmo que cada sorteio seja aleatório.

Entendendo a Implementação de Estatísticas

Nosso módulo de estatísticas demonstra vários conceitos avançados do Python:

  1. Classes: Usamos uma classe para encapsular a funcionalidade de estatísticas
  2. Estruturas de Dados: Usamos listas (para histórico) e dicionários (para frequência)
  3. Funções Lambda: Usamos uma lambda na função de classificação para classificar por frequência
  4. Fatiamento de Lista: Usamos fatiamento para obter os sorteios mais recentes

As estatísticas dão à nossa aplicação de loteria mais profundidade e utilidade, mostrando como um conceito simples (geração de números aleatórios) pode ser expandido em uma aplicação mais completa.

Isso conclui nossa aplicação de gerador de números de loteria. Você aprendeu como:

  • Gerar números aleatórios em Python
  • Garantir a exclusividade dos números aleatórios
  • Criar funções reutilizáveis
  • Construir uma aplicação completa com interface de usuário
  • Rastrear estatísticas e histórico

Essas habilidades podem ser aplicadas a muitos outros projetos de programação além da geração de números de loteria.

Resumo

Neste tutorial, você aprendeu como gerar números de loteria aleatórios únicos usando Python. Você começou com os conceitos básicos de geração de números aleatórios e, em seguida, construiu componentes cada vez mais sofisticados até ter uma aplicação de loteria completa com rastreamento de estatísticas.

Aqui está o que você realizou:

  1. Aprendeu sobre o módulo random do Python e como gerar vários tipos de números aleatórios
  2. Usou random.sample() para gerar números de loteria únicos
  3. Criou funções reutilizáveis para diferentes formatos de loteria
  4. Construiu uma interface de linha de comando para sua aplicação de loteria
  5. Adicionou rastreamento de estatísticas para analisar a frequência e o histórico dos números

Essas habilidades podem ser aplicadas a muitos outros cenários de programação além dos números de loteria, como simulações, jogos ou qualquer aplicação que exija aleatorização com restrições.

Você agora tem uma base sólida em geração de números aleatórios em Python e pode continuar a construir sobre esses conceitos em seus futuros projetos de programação.