Em um concurso público, a prova é composta por 15 questões de múltipla escolha com 5 opções (A, B, C, D ou E). Faça um programa que auxilie na correção automática das provas dos candidatos, permitindo que cada candidato entre com seu nome e suas respostas. As respostas devem ser fornecidas como uma única sequencia de 15 letras, onde a primeira letra corresponde a opção marcada para a primeira questão, a segunda letra a opção para a segunda questão, e assim por diante. Após a entrada de cada candidato, o programa deve perguntar se serão inseridas os dados de um novo candidato. Em caso positivo, o processo se repete. Em caso negativo, o programa deve perguntar o gabarito como uma sequencia de 15 letras. Por fim, o programa deve indicar quantas respostas certas cada candidato acertou, comparando suas respostas com a do gabarito fornecido, conforme exemplo abaixo:
Nome: Afonso
Respostas: ABCDADEDDEABCDD
Deseja Continuar? S
Nome: Maria
Respostas: CBCDADEDDEABCDC
Deseja Continuar? S
Nome: João
Respostas: DABCEDEBAACDEEA
Deseja Continuar: N
Gabarito: ABCDBDEDDEBBCDD
Afonso - 13 respostas certas
Maria - 11 respostas certas
João - 2 respostas certas

Passo 1

Entendendo o Problema e o Conteúdo Necessário
Vamos começar resumindo o que o exercício pede. Temos um concurso público com uma prova de 15 questões de múltipla escolha, cada uma com 5 opções (A, B, C, D ou E). Precisamos criar um programa que ajude na correção automática das provas dos candidatos. O programa deve:
  1. Permitir que cada candidato entre com seu nome e suas respostas como uma sequência de 15 letras.
  2. Perguntar se querem inserir os dados de um novo candidato. Se sim, repete o processo.
  3. Se não, pedir o gabarito (a sequência correta de respostas).
  4. Comparar as respostas de cada candidato com o gabarito e indicar quantas respostas cada um acertou.
Para resolver isso, vamos precisar aplicar conceitos de programação como estruturas de repetição (loops), estruturas de decisão (condicionais), armazenamento de dados (listas ou dicionários) e manipulação de strings.

Passo 2

Escolhendo a Linguagem de Programação
Primeiro, precisamos escolher uma linguagem de programação para implementar o programa. Vamos optar pelo Python por ser uma linguagem fácil de entender e muito usada para esse tipo de tarefa.

Passo 3

Estruturando os Dados dos Candidatos
Vamos armazenar os dados dos candidatos, ou seja, seus nomes e respostas. Para isso, usaremos uma lista de dicionários, onde cada dicionário representará um candidato com seu nome e suas respostas.
candidatos = []

Passo 4

Coletando os Dados dos Candidatos
Precisamos permitir que o usuário insira os dados dos candidatos repetidamente até que ele decida parar. Usaremos um loop while para isso e perguntaremos ao final de cada iteração se deseja continuar.
while True:
    nome = input("Nome: ")
    respostas = input("Respostas: ").upper()
    candidatos.append({"nome": nome, "respostas": respostas})
    continuar = input("Deseja Continuar? (S/N): ").strip().upper()
    if continuar != 'S':
        break
Explicação:
  • input() recebe a entrada do usuário.
  • .upper() converte as respostas para maiúsculas para padronização.
  • candidatos.append() adiciona um novo dicionário à lista de candidatos.
  • Se o usuário digitar algo diferente de ‘S’, o loop para.

Passo 5

Coletando o Gabarito
Após inserir todos os candidatos, precisamos pedir o gabarito para comparar as respostas.
gabarito = input("Gabarito: ").upper()

Passo 6

Comparando as Respostas e Calculando as Notas
Agora, vamos comparar as respostas de cada candidato com o gabarito e contar quantas respostas estão corretas.
for candidato in candidatos:
    correct = 0
    for i in range(len(gabarito)):
        if i < len(candidato["respostas"]) and candidato["respostas"][i] == gabarito[i]:
            correct += 1
    print(f"{candidato['nome']} - {correct} respostas certas")
Explicação:
  • for candidato in candidatos: percorre cada candidato na lista.
  • correct inicia a contagem de respostas corretas.
  • for i in range(len(gabarito)): percorre cada questão.
  • if i < len(candidato["respostas"]) and candidato["respostas"][i] == gabarito[i]: verifica se a resposta do candidato na posição i está correta.
  • print() exibe o resultado para cada candidato.

Passo 7

Finalizando o Programa com uma Resposta Completa
Unindo todos os passos, temos o programa completo que realiza a correção automática das provas.
# Lista para armazenar os candidatos
candidatos = []

# Coletando dados dos candidatos
while True:
    nome = input("Nome: ")
    respostas = input("Respostas: ").upper()
    candidatos.append({"nome": nome, "respostas": respostas})
    continuar = input("Deseja Continuar? (S/N): ").strip().upper()
    if continuar != 'S':
        break

# Coletando o gabarito
gabarito = input("Gabarito: ").upper()

# Comparando e exibindo os resultados
for candidato in candidatos:
    correct = 0
    for i in range(len(gabarito)):
        if i < len(candidato["respostas"]) and candidato["respostas"][i] == gabarito[i]:
            correct += 1
    print(f"{candidato['nome']} - {correct} respostas certas")

Resposta

Prontinho! Agora temos um programa em Python que permite inserir os dados dos candidatos, coletar o gabarito e mostrar quantas respostas cada candidato acertou comparando com o gabarito fornecido.

Exercícios relacionados

Em uma competição de ginástica, cada atleta recebe votos de sete jurados. A melhor e a pior nota são eliminadas. A sua nota fica sendo a média dos votos restantes. Você deve fazer um programa que receba o nome do ginasta e as notas dos sete jurados alcançadas pelo atleta em sua apresentação e depois informe a sua média, conforme a descrição acima informada (retirar o melhor e o pior salto e depois calcular a média com as notas restantes). As notas não são informados ordenadas. Um exemplo de saída do programa deve ser conforme o exemplo abaixo:
Atleta: Aparecido Parente
Nota: 9.9
Nota: 7.5
Nota: 9.5
Nota: 8.5
Nota: 9.0
Nota: 8.5
Nota: 9.7
Resultado final:
Atleta: Aparecido Parente
Melhor nota: 9.9
Pior nota: 7.5
Média: 9,04
Sugestão: usem o método max, min, pop de vetores para facilitar a resolução da questão
Dado o seguinte sistema de equações lineares com determinante e Número de Condição :
Utilizando o método da Decomposição LU de Crout ou Doolittle, mostre como fica a Matriz L (triangular Inferior) a Matriz U (triangular superior), a solução y e a solução . Coloque os resultados na caixa de texto.
Faça um programa em Python que dado um número N, onde , calcule o valor da série:
OBS: Se for fornecido um valor inválido, deve ser apresentada uma mensagem de erro e solicitado que usuário digite um valor válido.
Dados os vetores e , calcular