1
resposta

[Projeto] Docsstrings na Pratica.

import os
restaurantes = [{'nome':'Praça', 'categoria':'Japonesa', 'ativo':False}, 
                    {'nome':'Pizza Superma', 'categoria':'Pizza', 'ativo':True},
                    {'nome':'Cantina', 'categoria':'Italiano', 'ativo':False}]

def exibir_nome_do_programa():
    ''' Para exibir o nome do programa, foi utilizado o site de fsymbols.
    '''
    print("""
░██████╗░█████╗░██████╗░░█████╗░██████╗░  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
╚█████╗░███████║██████╦╝██║░░██║██████╔╝  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗████  
""")

def exibir_opcoes():
    '''Exibe as Opcões que vão para o programa
    '''
    print('1. Cadastrar restaurante')
    print('2. Listar restaurante')
    print('3. Ativar ou desativar restaurante')
    print('4. Sair\n')

def finalizar_app():
     ''' Exibe mensagem de finalização do aplicativo
     '''
     exibir_subtitulos('Finalizando App.')

def voltar_ao_menu_principal():
    '''Faz o programa voltar ao menu inicial.
    '''
    input('\nDigite uma tecla para voltar ao menu inicial.')
    main()

def opcao_invalida():
    '''Exibe mensagem de opção inválida e volta ao menu principal 
    
    Outputs:
    Volta ao menu principal
    '''
    print('Opção invalida!\n')
    voltar_ao_menu_principal()

def exibir_subtitulos(texto):
    ''' Exibe um subtitulo estilizado na tela
    '''
    os.system('cls')
    linha = '*'* (len(texto))
    print(linha)
    print(texto)
    print(linha)
    print()

def cadastrar_novo_restaurante():
    '''Essa função é para cadastrar um novo Restaurante.
    Inputs:
    Nome do restaurante
    Categoria

    Outputs:
    Adiciona um novo restaurante a lista de restaurantes
    '''
    exibir_subtitulos('Cadastro de Restaurantes!')
    nome_do_restaurante = input('Digite o nome do Restaurante que 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!\n')
    input ('Digite uma tecla para voltar ao menu inicial.')
    main()

def listar_restaurantes():
    ''' Lista os restaurantes presentes na lista 
    
    Outputs:
    - Exibe a lista de restaurantes na tela
    '''
    exibir_subtitulos('Listando todos os restaurantes.')

    print(f'{'Nome do restaurante'.ljust(23)} | {'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_do_restaurante():
    ''' Altera o estado ativo/desativado de um restaurante 
    
    Outputs:
    Exibe mensagem indicando o sucesso da operação
    '''
    exibir_subtitulos('Alterando estado do restaurante')
    nome_restaurante = input('Digite o nome do restaurante que deseja ativar ou desativar.')
    restaurante_encontrado = False

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

    voltar_ao_menu_principal()

def escolher_opcao():
    ''' Solicita e executa a opção escolhida pelo usuário 
    
    Outputs:
    Executa a opção escolhida pelo usuário
    '''
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        # opcao_escolhida = int(opcao_escolhida)

        if opcao_escolhida == 1:
            cadastrar_novo_restaurante()
        elif opcao_escolhida == 2:
            listar_restaurantes()
        elif opcao_escolhida == 3:
            alternar_estado_do_restaurante()
        elif opcao_escolhida == 4:
            finalizar_app()
        else:
            opcao_invalida()
    except:
        opcao_invalida()        
def main():
     ''' Função que inicia o programa '''
     os.system('cls')
     exibir_nome_do_programa()
     exibir_opcoes()
     escolher_opcao()
if __name__ == '__main__':
    main()
1 resposta

Oi, Mateus! Como vai?

Gostei bastante da organização das docstrings que você implementou, ficou claro e bem estruturado, facilitando o entendimento das funções no seu projeto. Isso mostra um cuidado importante na documentação do código.

Uma dica interessante para o futuro é usar o método strip() para remover espaços extras das entradas do usuário, evitando problemas com comparações de strings. Veja este exemplo:


nome = input('Digite seu nome: ').strip()
print(nome)

Esse código remove espaços no início e no fim da string.

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