2
respostas

[Sugestão] Faça como eu fiz: docstrings

import os

restaurantes = [{'nome':'Praca','categoria':'Japonesa','ativo':False},
                {'nome':'Pizza Suprema','categoria':'Pizza','ativo':True},
                {'nome':'Cantina','categoria':'Italiano','ativo':False}]
#               0         1
#               ativado   desativado

def exibir_nome_do_programa():
    '''Essa funcao e responsavel por exibir o nome do programa'''
    print("""
░██████╗░█████╗░██████╗░░█████╗░██████╗░  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
╚█████╗░███████║██████╦╝██║░░██║██████╔╝  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝
╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░   
""")

def exibir_opcoes():
    '''Essa funcao e responsavel por mostra as opcoes do menu '''
    print('1. Cadastrar restaurante')
    print('2. Listar restaurantes')
    print('3. Alternar estado do restaurantes')
    print('4. Sair\n')

def finalizar_app():
    '''Esssa funcao e responsavel por finalizar o app'''
    exibir_subtitulo('Finalizando o app')

def voltar_ao_menu_principal():
    '''Essa funcao e responsavel por voltar o menu principal
        input:O usuario digita qualquer tecla para volta o menu principal
        output:exibi as opcoes para esolha do menu 
    '''
    input('\nDigite uma tecla para voltar ou menu ')
    main()

def opcao_invalida():
    '''Essa funcao e responsavel por mostra uma uma mensagem caso a opcao digita seja invalida
    output:retorna ao menu principal
    '''
    print('Opcao invalida!\n')
    voltar_ao_menu_principal()

def exibir_subtitulo(texto):
    '''Essa funcao e responsavel por mostra os subtitulos da funcoes e cria uma linha a cima e a baixo de *'''
    os.system('cls')
    linha = '*' * (len(texto))
    print(linha)
    print(texto)
    print(linha)
    print()

def cadastrar_novo_restaurante():
    '''Essa funcao e responsavel por cadastrar um restaurante
    inputs:
    - Nome do restaurante
    - Categoria

    outputs:
    - Adiciona um novo restaurante a lista de restaurante 

    '''
    exibir_subtitulo('Cadastro de novos restaurantes')
    nome_do_restaurante = input('Digite o nome do restaurante q deseja cadastrar: ')
    categoria = input(f'Digite o nome da categoria do restaurante {nome_do_restaurante}: ')
    dados_do_restaurante = {'nome':nome_do_restaurante, 'categoria':categoria, 'ativo':False }
    restaurantes.append(dados_do_restaurante) 
    print(f'O restaurante {nome_do_restaurante} foi cadastrado com sucesso!')
    voltar_ao_menu_principal()

def listar_restaurantes():
    '''Esssa e responsavel por listar os restaurantes
    inputs:
    - nome
    - categoria
    condicao: ativado/desativado
    output: exibi a lista com o nome a categoria e se esta ativado ou desativado
    '''
    exibir_subtitulo('Listando os restaurantes')

    print(f'{'nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | Status')
    for restaurante in restaurantes:
        nome_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = 'ativado' if restaurante['ativo'] else 'desativado'
        print(f'- {nome_restaurante.ljust(20)} | {categoria.ljust(20)} | {ativo}')

    voltar_ao_menu_principal()

def alternar_estado_restaurante():
    '''Essa funcao e reponsavel por alterar o estado de um restaurante(desativado/ativado)'''
    exibir_subtitulo('Alternado estado do restaurante')
    nome_restaurante = input('Digite o nome do restaurante que deseja alternar o estado: ')
    restaurante_encontrado = False

    for restaurante in restaurantes:
        if nome_restaurante == restaurante['nome']:
            restaurante_encontrado = True
            restaurante['ativo'] = not restaurante['ativo']
            mensagem = f'O restaurante {nome_restaurante} foi ativado com sucesso' if restaurante['ativo'] else f'o restaurante {nome_restaurante} foi desativado com sucesso'
            print(mensagem)
    if not restaurante_encontrado:
        print('o restaurante nao foi encontrado')

    voltar_ao_menu_principal()
2 respostas
def escolher_opcao():
    '''Essa funcao e responsavel por armazenar a opcao escolhida do usuario'''
    try:
        opcao_escolhida = int(input('Escolha uma opcao: '))
        # opcao_escolhida = int(opcao_escolhida)

        if opcao_escolhida == 1:
            cadastrar_novo_restaurante()
        elif opcao_escolhida == 2:
            listar_restaurantes()
        elif opcao_escolhida == 3:
           alternar_estado_restaurante()
        elif opcao_escolhida == 4:
            finalizar_app()
        else:
            opcao_invalida()
    except:
        opcao_invalida()

def main():
    '''Essa funcao exibi as funcoes q serao executadas em ordem de cima para baixo se o arquivo __name__ for igual a __main__)'''
    os.system('cls')
    exibir_nome_do_programa()
    exibir_opcoes()
    escolher_opcao()
if __name__ == '__main__':
    main()

Oi, Apollo. Como vai?

Gostei da forma como você aplicou docstrings nas funções do projeto. Isso mostra cuidado com a organização do código e com a leitura por outras pessoas, porque cada função já deixa mais claro o que faz, como em cadastrar_novo_restaurante() e listar_restaurantes(). Esse é um passo muito bom de documentação, ainda mais no começo dos estudos em Python.

Uma dica interessante para o futuro é usar help() para visualizar a documentação de uma função no terminal. Veja este exemplo:

def somar(a, b):
    '''funcao que soma dois numeros'''
    return a + b

help(somar)

Nesse código, help(somar) mostra a descrição da função e ajuda a entender rapidamente seu uso. Isso é muito útil quando o projeto cresce e passa a ter mais funções.

💡 Dica de leitura: PEP 257 – Docstring Conventions

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