1
resposta

[Sugestão] Desafio Hora Prática: Aula 5 (Exercício 9)

  1. Desenvolva um programa que informa a nota de um(a) aluno(a) de acordo com suas respostas. Ele deve pedir a resposta desse(a) aluno(a) para cada questão e é preciso verificar se a resposta foi igual ao gabarito. Cada questão vale um ponto e existem as alternativas A, B, C ou D.

gabarito = {1: "D", 2: "A", 3: "C", 4: "B", 5: "A", 6: "D", 7: "C", 8: "C", 9: "A", 10: "D"}
pontos = 0

for i in range (1, 11):
resposta = input(f'Resposta da questão {i}:')
if resposta.upper() == gabarito[i]:
print('Resposta correta!')
pontos += 1
else:
print('Resposta incorreta.')

print(f'Pontuação final: {pontos}')

1 resposta

Olá, Malderson! Tudo bem?

Sua resolução para o exercício do gabarito ficou muito limpa e eficiente! Como Consultor de TI, você aplicou uma das melhores práticas de programação: o uso de um dicionário para mapear dados relacionados (Questão -> Resposta), o que torna a busca muito mais rápida do que se estivesse usando uma lista de listas ou múltiplos if.

Aqui estão os pontos de destaque do seu código:

1. Uso Estratégico do Dicionário

Ao definir gabarito = {1: "D", ...}, você criou uma estrutura de dados de chave-valor que permite acessar a resposta correta instantaneamente através do índice do laço for. Isso é fundamental em Data Science para mapear categorias ou rótulos.

2. Tratamento de Entrada com .upper()

O uso do método .upper() na variável resposta demonstra uma ótima preocupação com a experiência do usuário (UX). Isso evita que o programa considere a resposta errada apenas porque o aluno digitou "a" em vez de "A", tornando o código mais robusto.

3. Lógica do Laço range(1, 11)

Você utilizou o range de forma precisa para alinhar o contador do laço com as chaves do seu dicionário (que começam em 1). Isso evita confusões comuns de "índice zero" que costumam gerar erros de KeyError em dicionários.


Dica de Especialista para Evolução

Para deixar seu programa ainda mais "profissional", você pode utilizar o método .items() do dicionário. Isso permite percorrer a questão e a resposta correta ao mesmo tempo, sem precisar acessar o gabarito manualmente pelo índice dentro do if.

Exemplo de como ficaria:

for questao, resposta_correta in gabarito.items():
    resposta_aluno = input(f'Resposta da questão {questao}: ').upper()
    if resposta_aluno == resposta_correta:
        print('Resposta correta!')
        pontos += 1
    else:
        print(f'Resposta incorreta. A correta era {resposta_correta}.')

Essa abordagem é considerada mais "Pythônica" (segue melhor os padrões da linguagem) e facilita a leitura do código.

Parabéns pela dedicação e por compartilhar sua lógica com a comunidade! Você já pensou em como adaptar esse código para calcular a porcentagem de acerto em vez de apenas os pontos brutos?

Bons estudos!