2
respostas

[Projeto] Faça como eu fiz: docstrings

import os, platform

restaurantes = [{'nome':'Matsu', 'categoria':'Japonesa', 'status':False}, {'nome':'Pizza Suprema', 'categoria':'Italiana', 'status':True}, {'nome':'Esfihas Alibabos', 'categoria':'Árabe','status':False}]

def exibir_opcoes(): ''' Exibe as opções deste applicativo. ''' print(f'{"1.":<3}Cadastrar restaurante') print(f'{"2.":<3}Listar restaurante') print(f'{"3.":<3}Ativar restaurante') print(f'{"4.":<3}Sair\n')

def finalizar_app(): ''' Finaliza o aplicativo mostrando uma mensagem de encerramento. ''' exibir_titulo('Finalizar app')

def voltar_ao_menu_principal(): ''' Volta ao menu principal. ''' input('\nDigite uma tecla para voltar ao menu. ') main()

def opcao_invalida(): ''' Exibe: opção inválida e retorna ao menu principal. ''' print('Opção inválida!\n') voltar_ao_menu_principal()

def exibir_titulo(texto): ''' Exibe o título.

    Args:
        texto (str): Texto a ser exibido como subtítulo ou título.
    
    Limpa a tela conforme o Sistema Operacional:
    - Windows, macOS, Linux
    Se Sistema Operacional não identificado:
    - Não limpa a tela
'''
sistema = platform.system()
if sistema == 'Windows':
    os.system('cls')
elif sistema == 'macOS' or 'Linux':
    os.system('clear')
else:
    print('Sistema Operacional, não identificado.')
linha = '*' * (len(texto))
print(linha, texto, linha,'\n')

def cadastrar_novo_restaurante(): ''' Cadastrar novos restaurantes.

    Inputs:
    - Nome do Restaurante
    - Categoria

    Outputs:
    - Restaurante inativo
    - Adiciona o restaurante a lista

'''
exibir_titulo('Cadastro de novos 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, 'status': False}
restaurantes.append(dados_do_restaurante)
print(f'O restaurante {nome_do_restaurante} foi cadastrado com sucesso!')   
voltar_ao_menu_principal()

def listar_restaurantes(): ''' Lista Restaurantes cadastrados: - Nome - Categoria - Ativo/Inativo ''' exibir_titulo('Listando restaurantes:')

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

voltar_ao_menu_principal()

def alternar_estado_restaurante(): ''' Altera estado do restaurante para Ativo/Inativo. Através do nome do restaurante, informado pelo usuário. ''' exibir_titulo('Alterando estado do restaurante.') nome_restaurante = input('Digite o nome do restaurante, o qual deseja alterar o estado: ') restaurante_encontrado = False

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

voltar_ao_menu_principal()

def escolher_opcao(): ''' Usuário escolhe uma opção da lista de opções. Trata entradas inválidas e redireciona de volta ao menu. ''' try: opcao_escolhida = int(input('Escolha uma opção: '))

    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 ValueError:
    opcao_invalida()

def main(): ''' Função principal do programa. ''' exibir_titulo('Delivery Restaurantes') exibir_opcoes() escolher_opcao()

if name == 'main': main()

2 respostas

Oi, Marcos! Como vai?

Seu cuidado em documentar com docstrings cada função foi muito bom! Isso deixa o código mais legível e fácil de manter, algo importante em projetos reais.

Uma dica interessante para o futuro é usar a função enumerate() ao iterar por listas, especialmente se quiser um índice junto com os itens.Veja este exemplo:


restaurantes = ['Matsu', 'Pizza Suprema', 'Alibabos']
for indice, nome in enumerate(restaurantes, start=1):
    print(f'{indice}. {nome}')

Esse código mostra os restaurantes numerados, começando do 1. Isso facilita a exibição de listas interativas.

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

Obrigado Armano.