Exercícios Resolvidos de Tuplas e dicionários

Ver Teoria

Enunciado

Escreva um programa para armazenar uma agenda de telefones em um dicionário. Cada pessoa pode ter um ou mais telefones e a chave do dicionário é o nome da pessoa. Seu programa deve ter as seguintes funções: ­

  • incluirNovoNome – essa função acrescenta um novo nome na agenda, com um ou mais telefones. Ela deve receber como argumentos o nome e os telefones. ­
  • incluirTelefone – essa função acrescenta um telefone em um nome existente na agenda. Caso o nome não exista na agenda, você deve perguntar se a pessoa deseja incluí-­lo. Caso a resposta seja afirmativa, use a função anterior para incluir o novo nome. ­
  • excluirTelefone – essa função exclui um telefone de uma pessoa que já está na agenda. Se a pessoa tiver apenas um telefone, ela deve ser excluída da agenda. ­
  • excluirNome – essa função exclui uma pessoa da agenda. ­
  • consultarTelefone – essa função retorna os telefones de uma pessoa na agenda.

Passo 1

Fala aí, doido! A gente precisa fazer um montão de função pra resolver essa questão aqui, mas relaxa. A próxima vai ser pior!

Mas bora fazer uma de cada vez. E repara que a doida não falou pra gente fazer nada com as funções, só criar mesmo… E nós, como bons gados de professor, vamos fazer só o que foi pedido! Bora começar pela função incluirNovoNome(); mas como nenhuma das funções recebe o dicionário como parâmetro, a gente vai ter que usar variável global…

Olha! A gente recebe o nome (String) e os números (uma lista) e cria o par key-value no dicionário. E só! Uma linha de função… Partiu criar a próxima!

Passo 2

Pô, a próxima função insere um número em uma key já criada. A gente precisa, também, verificar se essa key já foi criada (com o operador in), e se não, a gente cria com a função anterior. Se liga:

Não esquece que a gente tá guardando nos valores, listas de números. Então, quando a gente quer acrescentar um novo número, a gente usa o método de lista append(). Bora pra próxima!

Passo 3

Bora escrever a função excluirNome dessa vez. Essa função recebe o nome do indivíduo e exclui ele do dicionário. Mas, antes de deletar, a gente precisa checar se existe. Nossa função vai ficar com esse cara:

E pronto! Se aquele nome realmente existir no dicionario, a gente deleta ele. Partiu fazer a próxima função...

Passo 4

Pra fazer a função excluirTelefone, a gente pode usar a outra função que a gente criou pra deletar o contato também...

Primeiro a gente tá checando se o nome existe na agenda. Se existe, a gente confere se o telefone que recebemos pra apagar também se encontra lá na lista de números. Se tiver, a gente deleta esse telefone.

Por último, se o contato estiver sem nenhum número registrado, a gente pode deletar o nome (com a outra função que criamos, inclusive).

Passo 5

Por último, a gente precisa da função que retorna os números de uma certa pessoa. Pra isso, primeiro a gente verifica se esse contato existe, e depois retorna sua lista de números…

E pronto! Finalizamos o exercício, doido!

Resposta