2
respostas

[Hora da prática]: Dicionários - Parte 1

import os

# 1 - Crie um dicionário representando informações sobre uma pessoa, como nome, idade e cidade.

usuarios = [ 
        {'Nome' : 'Pamela', 'Idade' : '25', 'Cidade' : 'Rio Claro'},
        {'Nome' : 'Pedro', 'Idade' : '19', 'Cidade' : 'Piracicaba'},
        {'Nome' : 'Ricardo', 'Idade' : '53', 'Cidade' : 'Campinas'},
        {'Nome' : 'Carla', 'Idade' : '41', 'Cidade' : 'Limeira'}]

# 2   - Utilizando o dicionário criado no item 1:
# 2.1 - Modifique o valor de um dos itens no dicionário (por exemplo, atualize a idade da pessoa);
# 2.2 - Adicione um campo de profissão para essa pessoa;
# 2.3 - Remova um item do dicionário.

# Função para listar e fornecer os dados iniciais, mesmo que tenham sido removidos
def listar_usuarios():
    print('Nome'.ljust(16) + '|' + 'Idade'.ljust(10) + '|' + 'Cidade')
    print('-' * 40)
    for usuario in usuarios:
        nome_usuario = usuario.get('Nome','[Removido]')
        idade_usuario = usuario.get('Idade','[Removido]')
        cidade_usuario = usuario.get('Cidade','[Removido]')
        print(
            nome_usuario.ljust(16) + '|' +
            idade_usuario.ljust(10) + '|' +
            cidade_usuario
        )
        print('-' * 40)

# Função para listar e fornecer os dados após a inclusão de uma profissão.
def listar_usuarios_profissao():
    print('Nome'.ljust(15) + '|' + 'Idade'.ljust(7) + '|' + 'Cidade'.ljust(15) + '|' + 'Profissão')
    print('_' * 65)
    for usuario in usuarios:
        nome_usuario = usuario.get('Nome','Removido')
        idade_usuario = usuario.get('Idade','Removido')
        cidade_usuario = usuario.get('Cidade','Removido')
        profissao_usuario = usuario.get('Profissão','Sem profissão Informada')
        # Vai verificar se a variável profissão_usuário está vazia, e definir seu valor
        if not profissao_usuario:
            profissao_usuario = 'Sem profissão informada'
        print(
            nome_usuario.ljust(15) + '|' +
            idade_usuario.ljust(7) + '|' +
            cidade_usuario.ljust(15) + '|' +
            profissao_usuario
        )
    print('-' * 65)

# Função que exibe as opções que o operador do sistema pode executar
def exibir_opcoes():
    listar_usuarios()
    print('1. Alterar dados já preenchidos do usuário;')
    print('2. Adicionar profissão do usuário;')
    print('3. Remover dado do usuário;')
    print('4. Sair.\n')

# Função que exibe os dados que podem ser deletados.
def exibir_dados():
    print('1. Nome;')
    print('2. Idade;')
    print('3. Cidade;')
    print('4. Retornar.\n')

# Função de retorno ao menu principal e encerramento de sistema.
def retorno_menu():
    print('Deseja retornar ao menu?\n')
    retorno_menu = input('Digite 1 para Sim, desejo voltar ao menu | Digite outra tecla para Não - Finalizar o programa: ')
    if retorno_menu == '1':
        main()
    else:
        print('Encerrando...')
        exit()

# Função que adiciona uma profissão a um usuário cadastrado
def adicionar_profissao_usuario():
    usuario_profissao = input('Digite o nome do usuário que deseja adicionar uma profissão: ')
    profissao_adicionada = input(f'Digite o nome da profissão que deseja inserir para {usuario_profissao}: ')
    print()
    encontrado = False
    for usuario in usuarios:
            if usuario_profissao == usuario.get('Nome',''):
                usuario['Profissão'] = profissao_adicionada
                encontrado = True
                break # Interrompe o loop ao identificar o usuário mencionado
    if not encontrado:
        print(f'{usuario_profissao} Não encontrado. Não houve alteração\n')        
    listar_usuarios_profissao()
    retorno_menu()                

# Função que remove uma informação de um usuário
def remover_item_usuarios():
   usuario_alterado = input('Digite o nome do usuário que deseja remover a informação: ')
   print()
   exibir_dados()
   opcoes_a_remover ={1: 'Nome', 2: 'Idade', 3: 'Cidade'}
   print(opcoes_a_remover)

   try: 
        item_removido = int(input(f'Insira a opção que deseja remover de {usuario_alterado}: \n'))
   except Exception:    
       print('A informação já foi excluida')
   except ValueError:
        print('Opção inválida. Digite um número.')
        return
   if item_removido not in opcoes_a_remover:
    print('Opção inserida não é válida.')
    return

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
2 respostas

PARTE 2

celula_removida = opcoes_a_remover[item_removido] # Vincula qual célula será removida a uma variável.

   for usuario in usuarios:
        if usuario_alterado == usuario.get('Nome',''): # Usando o comando .get evitamos um erro caso o usuário já tenha sido removido previamente.
            if celula_removida in usuario: # Ao encontrar o usuário desejado, caso ele ainda possua a célula escolhida, o código segue para removê-la.
                del usuario[celula_removida]
                print(f'Dado "{celula_removida}" removido com sucesso de {usuario_alterado}.')
            else:
                print(f'O dado "{celula_removida}" já foi removido anteriormente de {usuario_alterado}.')
   else:
        print('Usuário não encontrado.')
   listar_usuarios()
   retorno_menu()

# Função para definir o caminho a seguir após a escolha do operador.
def escolher_opcao():
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        print()
        if opcao_escolhida == 1: 
            alterar_dados_usuario()
        elif opcao_escolhida == 2:
            adicionar_profissao_usuario()
        elif opcao_escolhida == 3:
            remover_item_usuarios()
    except Exception:
        print('Ocorreu um erro ao escolher a opção. Tente novamente.')
        retorno_menu()
        os.system('cls')

# Função para alterar os dados de um determinado usuário        
def alterar_dados_usuario():
    usuario_alterado = input('Digite o nome do usuário a ser alterado: ')
    print()
    exibir_dados()
    try:
        dado_alterado = int(input('Escolha uma  opção a ser alterada: '))
        if dado_alterado == 1: # Caso deseje alterar o Nome de um usuário já cadastrado
            for usuario in usuarios:
                if usuario_alterado == usuario.get('Nome','') :
                    usuario['Nome'] = input('Insira o novo nome de usuário: ')
                    print()
                    print (f'O nome de usuário {usuario_alterado} foi alterado para {usuario["Nome"]}\n')
                    listar_usuarios()
            retorno_menu()
        elif dado_alterado == 2: # Caso deseje alterar a Idade de um usuário já cadastrado
            for usuario in usuarios:
                if usuario_alterado == usuario.get('Nome','') :
                    usuario['Idade'] = input('Insira a nova idade do usuário: ')
                    print()
                    print (f'A idade do {usuario_alterado} foi alterado para {usuario["Idade"]}\n')
                    listar_usuarios()
            retorno_menu()
        elif dado_alterado == 3: # Caso deseje alterar a Cidade de um usuário já cadastrado
            for usuario in usuarios:
                if usuario_alterado == usuario.get('Nome','') :
                    usuario['Cidade'] = input('Insira a nova cidade do usuário: ')
                    print()
                    print (f'A cidade do {usuario_alterado} foi alterado para {usuario["Cidade"]}\n')
                    listar_usuarios()
            retorno_menu()
        elif dado_alterado == 4: 
            main()
        else: 
            main()
    except:
        main()

def main():
    os.system('cls')
    exibir_opcoes()
    escolher_opcao()

if __name__ == '__main__':
    main()

# 3 - Crie um dicionário que relacione os números de 1 a 5 aos seus respectivos quadrados.

numeros_quadrados = {x: x**2 for x in range(1, 6)}
print('X'.ljust(2)+'→'.ljust(2)+ 'X²')
for chave, valor in numeros_quadrados.items(): # .items() retorna uma sequência de tuplas do tipo (chave, valor).
    print(f'{chave} → {valor}') #  Assim a visualização fica mais nítida no terminal

# 4 - Crie um dicionário e verifique se uma chave específica existe dentro desse dicionário.

pessoa = {'Nome' : 'Bruna', 
          'Idade' : '27', 
          'Altura': '159cm', 
          'Cidade' : 'Limeira'}
chave_verificacao = input('Insira a nomenclatura da chave que deseja verificar a existência: ')

if chave_verificacao in pessoa:
    print(f'A chave {chave_verificacao} está presente no dicionário')
else:
    print(f'A chave {chave_verificacao} não está presente no dicionário')

# 5 - Escreva um código que conte a frequência de cada palavra em uma frase utilizando um dicionário.

frequencia_palavra = {}
frase = input('Insira a frase que deseja saber a quatidade de cada palavra que a compõe: ')
quantidade_palavras = frase.split()

for quantidade_palavra in quantidade_palavras:
    frequencia_palavra[quantidade_palavra] = frequencia_palavra.get(quantidade_palavra, 0) + 1
print(frequencia_palavra)

Bom dia, Felipe! Tudo bem?

Analisando seus códigos, posso dizer que você fez um excelente trabalho. Todos os códigos estão corretos e seguem as instruções do desafio.

Então, continue com o bom trabalho e não hesite em pedir ajuda sempre que precisar.

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