1
resposta

Faça como eu fiz: estruturas de repetição e conjuntos

Olá, pude trabalhar algumas funções novas e questões de lógicas diferentes ao realizar essa parte do código. Pensei em algumas coisas e as que eu não sabia exatamente como fazer recorria ao chat e aprendia com ele, além de ver suas sugestões e melhorias.

Irei listar algumas coisas que aprendi:

  • chamada do main() causando recursão(gostaria de confirmar essa questão)
  • uso do lower e da função any para comparar
  • adicionei a opção de apagr restaurantes, mas ainda não trabalhei nela
  • usei o enumerate e vi um pouco como ele funciona
  • vi sobre o try e except junto com o value error e como usar o except Exception as e:
  • juntei a condições de numeros errados com a de caracteres que nao eram numeros em uma so (dentro da função escolher_op)

conclusão -> com certeza desenvolvi muito a lógica e pude aprender mais sobre python

import os

restaurantes = ["Domes", "Jsk"]

def limpar_tela():
    os.system("cls" if os.name == "nt" else "clear")

def exibir_nome_programa_e_opcoes():
    print("""
░██████╗░█████╗░██████╗░░█████╗░██████╗░  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
╚█████╗░███████║██████╦╝██║░░██║██████╔╝  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝
╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░
1. Cadastrar restaurante
2. Listar restaurante
3. Ativar restaurante
4. Apagar restaunte
5. Sair
        """)
    
def mensagem_voltar_menu():
    input("\nDigite enter para voltar ao menu...")
    
def exibir_subtitulo(texto):
    limpar_tela()
    print(texto)
    print()

def cadastrar_restaurantes():
    exibir_subtitulo("Cadastro de novos restaurantes")
    while True:
        nome_restaurante = input("Digite o nome do restaurante que deseja cadastrar (ou 's'/'sair' para voltar): ").strip()
        nome_restaurante = nome_restaurante.title()

        if nome_restaurante.lower() in ("s", "sair"):
            break
        elif not nome_restaurante:
            print("Nome vazio não é válido.\n")
            continue
        elif any(restaurante.lower() == nome_restaurante.lower() for restaurante in restaurantes):
            print(f"O restaurante {nome_restaurante} já está cadastrado.\n")
            continue
        else:
            restaurantes.append(nome_restaurante)
            print(f"O restaurante {nome_restaurante} foi cadastrado com sucesso!\n")
        
    mensagem_voltar_menu()

def listar_restaurantes():
    exibir_subtitulo("Restaurantes cadastrados")
    if not restaurantes:
        print("Nenhum restaurante cadastrado.")
    else: 
        for i, restaurante in enumerate(restaurantes, start = 1):
            print(f"{i}. {restaurante}")
    print()
    mensagem_voltar_menu()

def ativar_restaurantes():
    limpar_tela()

def apagar_restaurante():
    pass

def finalizar_app():
    exibir_subtitulo("Encerrando o app...")

def escolher_op():
        try:
            opcao_escolhida = int(input("Digite uma opção: "))
            if opcao_escolhida not in range(1, 6):
                raise ValueError
        except ValueError:
            exibir_subtitulo("Opção inválida. Digite um número (1 a 4).")
            mensagem_voltar_menu()
            return True
        
        match opcao_escolhida:
            case 1:
                cadastrar_restaurantes()
                return True
            case 2:
                listar_restaurantes()
                return True
            case 3:
                ativar_restaurantes()
                return True
            case 4:
                apagar_restaurante()
                return True
            case 5:
                finalizar_app()
                return False

def main():
    while True:

        limpar_tela()

        exibir_nome_programa_e_opcoes()

        if not escolher_op():
            break

if __name__ == "__main__":
    main()

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi, Rafaela! Como vai?

Agradeço por compartilhar.

Gostei muito da sua análise, principalmente por você explorar funções novas e tratamento de exceções. É ótimo ver que você testou o uso do enumerate, try/except e também pensou sobre o comportamento do main() de fato, se ele for chamado dentro dele mesmo, pode gerar recursão infinita, então é bom ficar atenta a isso.

Continue praticando e ajustando pequenas partes do código, isso fortalece sua lógica e domínio da linguagem.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!