Trabalhar com uma lista de dicionários

1 resposta
E

Estou criando um programa que não posso usar banco de dados e tenho que me virar com listas e dicionários. A ideia é fazer com que cada dicionário armazene os seguintes itens Tema: ‘tema’, Titulo : ‘Titulo’, Texto: ‘Era uma vez…’. Estou tentando fazer com que o usuário possa apagar ou trocar um desses itens, ou se ele preferir apagar todo o dicionário existente na lista.

Tenho outras dúvidas mais a principal é essa, vou encaminhar o código:

from time import sleep

def cadTemas():
     
        try:
            tema = str(input('Digite o tema: ')).capitalize()
            temas.append(tema)        
            print('\033[31mTema {} armazenado!\033[m'.format(tema))
        except (ValueError, TypeError):
            print("Erro na leitura dos temas!")   
        return temas

def cadHistorias(tema, titulo, historias):    
     try:             
         historia.clear()
         historia['tema'] = tema         
         historia['titulo'] = titulo
         historia[titulo] = str(input('Entre com a historia: '))    
         historias.append(historia.copy())
         print('Historia armazenada!')
         print(historias)
     except (ValueError, TypeError):
            print("Erro na leitura das histórias!")   
     return historias

def mostrarHistorias(historias): 
      print('As historias cadastradas foram: \n')
      for hist in historias:
          print(f'{historia["titulo"]} ')
           
def apagarHistoria(titulo, historias): # A dúvida estar nessa parte
    mostrarHistorias(historias)
    titulo = str(input("Qual a historia que voce deseja apagar?"))
    for hist in historias:
        if (hist[titulo] == titulo):            
            historias = historias.pop(titulo, "Historia apagada") 
    print(historias)        

def trocarHistoria(titulo, historias):
    mostrarHistorias(historias)
    
def mostrarTemas(temas):
    print('Temas cadastrados: ')
    for t in temas:
        print(tema)
            
           
           
           
#=-=-=-=-=-=-=-==-=-=-=-= Menu Principal -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=           

def leiaInt(msg): #Exercicio 113
    while True:
        try:
            n = int(input(msg))
        except (ValueError, TypeError):
            print('\033[31mERRO: por favor, digite um número inteiro válido.\033[m')
            continue
        except (KeyboardInterrupt):
            print('\n\033[31mUsuario preferiu nao digitar esse número.\033[m')
            return 0
        else:
            return n

def linha(tam = 42):
    return '-' * tam

def cabecalho(txt):
    print(linha())
    print(txt)
    print(linha())

def menu(lista):
    cabecalho('MENU PRINCIPAL')   
    for c, iten in enumerate(lista):
        print(f'\033[33m{c+1}\033[m - \033[34m{iten}\033[m')
    
    print(linha())
    opc = leiaInt('\033[32mSua Opcao: \033[m')
    return opc
  

####################################################################   
titulos = list()
temas = list()
cadastro = dict()
historia = dict()
historias = list()
resposta = 1
listaMenu = ['Cadastrar tema', 'Cadastrar historia', 'Mostrar historia', 
             'Apagar historia', 'Mostrar temas', 'Sair do Sistema']

while (resposta != 6):
    resposta = menu(listaMenu)    
    if (resposta == 1):
        mostrarTemas(temas)
        cadTemas()   
        
    elif (resposta == 2):
         mostrarTemas(temas) 
         
         while True:
             tema = str(input('Entre com o tema: '))             
             for t in temas:
                 if (t == tema ):
                     break
                 else:
                     print("Tema inexistente, por favor tente outra vez!")
             
         titulo = str(input('Entre com o ti­tulo da historia: '))         
         cadHistorias(t, titulo, historias)
         
    elif (resposta == 3):        
         mostrarHistorias(historias)
        
    elif (resposta == 4):         
        apagarHistoria(titulo, historias)
        
    elif (resposta == 5):        
        mostrarTemas(temas)        

    elif resposta == (len(listaMenu)):
        cabecalho('Saindo do sistema... Até logo!')
        break
    else:
        print('\033[31mERRO! Digite uma opção válida!\033[m')
        sleep(5)

1 Resposta

E
identar texto pré-formatado por 4 espaços

from time import sleep

def cadTemas():

try:

tema = str(input(Digite o tema: )).capitalize()

temas.append(tema)

print(’\033[31mTema {} armazenado!\033[m’.format(tema))

except (ValueError, TypeError):

print(Erro na leitura dos temas!)

return temas
def cadHistorias(tema, titulo, historias):

try:

historia.clear()

historia[‘tema’] = tema

historia[‘titulo’] = titulo

historia[titulo] = str(input('Entre com a historia: '))

historias.append(historia.copy())

print(Historia armazenada!’)

print(historias)

except (ValueError, TypeError):

print(Erro na leitura das histórias!”)

return historias
def mostrarHistorias(historias):

print(As historias cadastradas foram: \n)

for hist in historias:

print(f’{historia[“titulo”]} ')
def apagarHistoria(titulo, historias):

mostrarHistorias(historias)

titulo = str(input(Qual a historia que voce deseja apagar?))

for historia in historias:

if (historia[historia] == titulo):

historias = historias.pop(titulo, Historia apagada)

print(historias)

def trocarHistoria(titulo, historias):
mostrarHistorias(historias)

def mostrarTemas(temas):

print('Temas cadastrados: ')

for t in temas:

print(tema)

#=-=-=-=-=-=-=-==-=-=-=-= Menu Principal -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

def leiaInt(msg): #Exercicio 113

while True:

try:

n = int(input(msg))

except (ValueError, TypeError):

print(’\033[31mERRO: por favor, digite um número inteiro válido.\033[m)

continue

except (KeyboardInterrupt):

print(’\n\033[31mUsuario preferiu nao digitar esse número.\033[m)

return 0

else:

return n

def linha(tam = 42):
return ‘-’ * tam

def cabecalho(txt):
print(linha())
print(txt)
print(linha())

def menu(lista):

cabecalho(MENU PRINCIPAL)

for c, iten in enumerate(lista):

print(f\033[33m{c+1}\033[m - \033[34m{iten}\033[m)
print(linha())
opc = leiaInt('\033[32mSua Opcao: \033[m')
return opc

#####################################################################################
titulos = list()
temas = list()
cadastro = dict()
historia = dict()
historias = list()
resposta = 1
listaMenu = [‘Cadastrar tema’, ‘Cadastrar historia’, ‘Mostrar historia’,
‘Apagar historia’, ‘Mostrar temas’, ‘Sair do Sistema’]

while (resposta != 6):

resposta = menu(listaMenu)

if (resposta == 1):

mostrarTemas(temas)

cadTemas()
elif (resposta == 2):
     mostrarTemas(temas) 
     sair = 0
     while (sair != 3):
         tema = str(input('Entre com o tema: ')).capitalize()             
         if (tema in temas):
              sair = 3
         print("Tema inexistente, por favor tente outra vez!")
         sair += 1
     if (sair < 3):    
         titulo = str(input('Entre com o ti­tulo da historia: '))         
         cadHistorias(tema, titulo, historias)
     
elif (resposta == 3):        
     mostrarHistorias(historias)
    
elif (resposta == 4):         
    apagarHistoria(titulo, historias)
    
elif (resposta == 5):        
    mostrarTemas(temas)        

elif resposta == (len(listaMenu)):
    cabecalho('Saindo do sistema... Até logo!')
    break
else:
    print('\033[31mERRO! Digite uma opção válida!\033[m')
    sleep(5)
Criado 3 de novembro de 2020
Ultima resposta 4 de nov. de 2020
Respostas 1
Participantes 1