Exercícios Resolvidos de Tuplas e dicionários

Ver Teoria

Enunciado

Faça um programa que leia nomes de alunos e suas respectivas notas até que o nome ’oooo’ seja informado, após o fim da leitura, imprima o nome do aluno que possui a maior nota. Obs.: Use dicionário para resolver essa questão.

Passo 1

Fala aí, guerreiro sayajin! A ideia é perguntar nome e nota de alunos e adicionar em um dicionário. Como a gente precisa repetir esse processo até que o nome inserido seja “oooo”, então a gente tem um caso de repetição indeterminada, que vamos precisar resolver com um laço while. Então bora começar!

Como não sabemos quando o loop precisa parar, a gente pode construir um loop infinito e, quando for digitado ‘oooo’, a gente usa a palavra-chave break pra sair do loop. Então bora perguntar o nome com a função input();

Pronto! Se o usuário digitar aquela parada ali, igual tá no enunciado, o loop vai parar. Mas, caso não digite, a gente precisa perguntar a nota e depois salvar num dicionário. Acontece que a gente nem criou esse dicionário ainda… Bora criar!

Show! Vamos pensar agora sobre como pegar o aluno de maior nota...

Passo 2

Cara, pra gente checar qual dos alunos tem a maior nota, a gente pode fazer uma iteração e comparar todos os alunos, salvando o maior dentro de uma variável...

O método notas.items() retorna uma lista de tuplas que a gente pode iterar ao mesmo tempo por nome e nota (nessa ordem). Se não tiver ninguém adicionado como maior nota ainda, então a gente adiciona. Se já tiver alguém lá, a gente verifica se a nota dele realmente é maior que a atual e atualizamos se necessário. Por último, a gente só precisa exibir pro usuário o nome do indivíduo que ficou em maior_nota.

E pronto! Finalizamos o exercício, ok?! Até o próximo!

Resposta