Duvida exercicio

1. Duvida exercicio

thalis
himen3

(usa Arch Linux)

Enviado em 02/06/2018 - 03:49h

Passei a madruga tentando fazer isso certinho, no final deu algo que me doeu a cabeca e ja sao 03:47 e vou durmir, deixando aqui esperando uma resposta.

Desenvolver um programa para verificar a nota do aluno em uma prova com 10 questões, o programa deve perguntar ao aluno a resposta de cada questão e ao final comparar com o gabarito da prova e assim calcular o total de acertos e a nota (atribuir 1 ponto por resposta certa). Após cada aluno utilizar o sistema deve ser feita uma pergunta se outro aluno vai utilizar o sistema. Após todos os alunos terem respondido informar:
Maior e Menor Acerto;
Total de Alunos que utilizaram o sistema;
A Média das Notas da Turma.
Gabarito da Prova:

01 - A
02 - B
03 - C
04 - D
05 - E
06 - E
07 - D
08 - C
09 - B
10 - A
Após concluir isto você poderia incrementar o programa permitindo que o professor digite o gabarito da prova antes dos alunos usarem o programa.

Consegui fazer corretamente sem que o professor digite o gabarito, agora com essa opcao algo da errado, meu code:

gabarito = ' '
gabarito2 = ' '
count = total = count2 = maior = menor = 0
for e in range(1,11):
gabarito = input(f"{e} - Digite o gabarito das notas: ").strip().upper()[0]
gabarito2 += (gabarito)

print("-="*30)
continuar = ' '
while continuar not in 'N':
for c in range(1,11):
resposta = input(f"{c} - Resposta da questao: ").strip().upper()[0]
if c == 1:
if resposta == gabarito2[0]:
count+=1
if c == 2:
if resposta == gabarito2[1]:
count +=1
if c == 3:
if resposta == gabarito2[2]:
count +=1
if c == 4:
if resposta == gabarito2[3]:
count+=1
if c == 5:
if resposta == gabarito2[4]:
count+=1
if c == 6:
if resposta == gabarito2[5]:
count+=1
if c == 7:
if resposta == gabarito2[6]:
count+=1
if c == 8:
if resposta == gabarito2[7]:
count +=1
if c == 9:
if resposta == gabarito2[8]:
count+=1
if c == 10:
if resposta == gabarito2[9]:
count+=1
print("-="*30)
continuar = input("Quer continuar [N] para sair ").strip().upper()[0]

total+=1
if count > maior:
maior = count
if count < menor or count == 1:
menor = count

print("-="*30)
print("Gabarito das respostas")
for d in gabarito2:
count2+=1
print(f"{count2} - {d}")
print("-="*30)

print(f"Total de acertos: {count}")
print(f"Pontos recebidos: {count}")
print(f"Maior acerto {maior}")
print(f"Menor acerto: {menor}")
print(f"Total de alunos a utilizar o sistema: {total}")




Nao peco que me deem o codigo pronto, pelo contrario, so quero saber oque eu fiz errado e oque adicionar.


  


2. Re: Duvida exercicio

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 02/06/2018 - 11:43h

Opa!

Ajustando o seu código para funcionar, fica assim:

# Iniciando as varáveis
gabarito = ''
gabarito2 = ''
count = total_acertos = total = count2 = maior = menor = 0

for e in range(1,11):
gabarito = input(f"{e} - Digite o gabarito das notas: ").strip().upper()[0]
gabarito2 += (gabarito)

print("-="*30)
continuar = ' '
while continuar not in 'N':

# Zerando o Contador de acertos
total_acertos = 0

for c in range(1,11):
resposta = input(f"{c} - Resposta da questao: ").strip().upper()[0]
if c == 1:
if resposta == gabarito2[0]:
count += 1
total_acertos += 1
if c == 2:
if resposta == gabarito2[1]:
count += 1
total_acertos += 1
if c == 3:
if resposta == gabarito2[2]:
count += 1
total_acertos += 1
if c == 4:
if resposta == gabarito2[3]:
count += 1
total_acertos += 1
if c == 5:
if resposta == gabarito2[4]:
count += 1
total_acertos += 1
if c == 6:
if resposta == gabarito2[5]:
count += 1
total_acertos += 1
if c == 7:
if resposta == gabarito2[6]:
count += 1
total_acertos += 1
if c == 8:
if resposta == gabarito2[7]:
count += 1
total_acertos += 1
if c == 9:
if resposta == gabarito2[8]:
count += 1
total_acertos += 1
if c == 10:
if resposta == gabarito2[9]:
count += 1
total_acertos += 1
print("-="*30)
continuar = input("Quer continuar [N] para sair ").strip().upper()[0]
total+=1

if total_acertos > maior:
maior = total_acertos
if total_acertos < menor or total_acertos == 1:
menor = total_acertos

print("-="*30)
print("Gabarito das respostas")
for d in gabarito2:
count2+=1
print(f"{count2} - {d}")
print("-="*30)

print(f"Total de acertos: {count}")
print(f"Pontos recebidos: {count}")
print(f"Maior acerto {maior}")
print(f"Menor acerto: {menor}")
print(f"Total de alunos a utilizar o sistema: {total}")


Você pode melhorar, diminuindo os 'IFs' do seu código da seguinte forma:
# Iniciando as varáveis
gabarito = ''
gabarito2 = ''
count = total_acertos = total = count2 = maior = menor = 0

for e in range(1,11):
gabarito = input(f"{e} - Digite o gabarito das notas: ").strip().upper()[0]
gabarito2 += (gabarito)

print("-="*30)
continuar = ' '
while continuar not in 'N':

# Zerando o Contador de acertos
total_acertos = 0

for c in range(1,11):
resposta = input(f"{c} - Resposta da questao: ").strip().upper()[0]
if c == 1 and resposta == gabarito2[0]:
count += 1
total_acertos += 1
elif c == 2 and resposta == gabarito2[1]:
count += 1
total_acertos += 1
elif c == 3 and resposta == gabarito2[2]:
count += 1
total_acertos += 1
elif c == 4 and resposta == gabarito2[3]:
count += 1
total_acertos += 1
elif c == 5 and resposta == gabarito2[4]:
count += 1
total_acertos += 1
elif c == 6 and resposta == gabarito2[5]:
count += 1
total_acertos += 1
elif c == 7 and resposta == gabarito2[6]:
count += 1
total_acertos += 1
elif c == 8 and resposta == gabarito2[7]:
count += 1
total_acertos += 1
elif c == 9 and resposta == gabarito2[8]:
count += 1
total_acertos += 1
elif c == 10 and resposta == gabarito2[9]:
count += 1
total_acertos += 1

if c == 10:
print("-="*30)
continuar = input("Quer continuar [N] para sair ").strip().upper()[0]
total+=1

if total_acertos > maior:
maior = total_acertos
if total_acertos < menor or total_acertos == 1:
menor = total_acertos

print("-="*30)
print("Gabarito das respostas")
for d in gabarito2:
count2+=1
print(f"{count2} - {d}")
print("-="*30)

print(f"Total de acertos: {count}")
print(f"Pontos recebidos: {count}")
print(f"Maior acerto {maior}")
print(f"Menor acerto: {menor}")
print(f"Total de alunos a utilizar o sistema: {total}")


Ou diminuir mais ainda, deixando bem compacto:
# Iniciando as varáveis
gabarito = ''
gabarito2 = ''
count = total_acertos = total = count2 = maior = menor = 0

for e in range(1,11):
gabarito = input(f"{e} - Digite o gabarito das notas: ").strip().upper()[0]
gabarito2 += (gabarito)

print("-="*30)
continuar = ' '
while continuar not in 'N':

# Zerando o Contador de acertos
total_acertos = 0

for c in range(1,11):
resposta = input(f"{c} - Resposta da questao: ").strip().upper()[0]
if (c == 1 and resposta == gabarito2[0]) or (c == 2 and resposta == gabarito2[1]) or (c == 3 and resposta == gabarito2[2]) or (c == 4 and resposta == gabarito2[3]) or (c == 5 and resposta == gabarito2[4]) or (c == 6 and resposta == gabarito2[5]) or (c == 7 and resposta == gabarito2[6]) or (c == 8 and resposta == gabarito2[7]) or (c == 9 and resposta == gabarito2[8]) or (c == 10 and resposta == gabarito2[9]):
count += 1
total_acertos += 1

if c == 10:
print("-="*30)
continuar = input("Quer continuar [N] para sair ").strip().upper()[0]
total+=1

if total_acertos > maior:
maior = total_acertos
if total_acertos < menor or total_acertos == 1:
menor = total_acertos

print("-="*30)
print("Gabarito das respostas")
for d in gabarito2:
count2+=1
print(f"{count2} - {d}")
print("-="*30)

print(f"Total de acertos: {count}")
print(f"Pontos recebidos: {count}")
print(f"Maior acerto {maior}")
print(f"Menor acerto: {menor}")
print(f"Total de alunos a utilizar o sistema: {total}")


Abraço,
Diego M. Rodrigues


3. Re: Duvida exercicio

ctw6av
ctw6av

(usa Nenhuma)

Enviado em 02/06/2018 - 12:14h

Leia os comentários, pois demorei mais tempo neles do que no código em sí, sou péssimo com palavras.
#!/usr/bin/env python3

import os

# Iniciamos todas as variaveis que o exercício pede.
biggest_note = 0 # Maior nota
total_users = 0 # Total de usuários
lowest_note = 0 # Menor nota
user_note = 0 # Nota do usuário atual
rate = 0 # Média, significa basicamente mediocridade kkkk

# Total das notas é um somatório para posteriormente usarmos
# para calcular a média com a fórmula apresentada abaixo.
# rate = total_notes / total_users
total_notes = 0

# Guarda o gabarito da prova
responses = list()

# Limpamos a tela, para ficar bonitinho ;)
os.system('cls' if os.name == 'nt' else 'clear')

# Imprimimos um cabeçalho para o gabarito
header = """
###############################
# GABARITO #
###############################"""
print(header)

# Para todas as 10 perguntas
for position in range(1, 11):
# Entre com as respostas de cada pergunta
response = input("digite a resposta da pergunta %s: " % position)
# Iserimos na lista que guarda o gabarito da prova em lower case!
responses.append(response.lower())

# Já tendo o cabeçalho preenchido, mudamos
# o cabeçalho antigo para o da prova
header = """
###############################
# PROVA #
###############################"""

while True: # Enquanto o programa estiver rodando...
# Limpamos a tela para ficar biiiiito ...
os.system('cls' if os.name == 'nt' else 'clear')

# Imprimimos um cabeçalho para a prova
print(header)

# Para cada posição e resposta na lista do gabarito
for position, question in enumerate(responses, 1):
response = input("digite a resposta da pergunta %s: " % position)
# Se a resposta do aluno é igual a resposta
# que está na lista de gabarito do professor
if response.lower() == question:
user_note += 1 # Damos um ponto a mais para o usuário

# Ao terminar de responder todas as perguntas
# aumentamos o número de usuários do programa
total_users += 1

# Calculamos a maior nota vendo se a nota do usuário
# atual foi maior do que a maior nota já registrada.
if user_note > biggest_note:
# Se sim, a maior nota passa a ser igual a nota do usuario atual
biggest_note = user_note

# Calculamos a menor nota vendo se a nota do usuário
# atual foi menor do que a menor nota já registrada.
if user_note < lowest_note or lowest_note == 0:
# Se sim, a menor nota passa a ser igual a nota do usuario atual
lowest_note = user_note

# Adicionamos a nota do usuário atual a todas as notas
total_notes += user_note

# Perguntamos se mais alguém vai ultilizar o programa...
answer = input("\nFazer a prova novamente: [S/n]: ")
if answer.lower() == '' or answer.lower() == 's': # Se sim ...
# Zeramos a nota do usuário atual
user_note = 0
continue # Executamos o loop novamente ...

# Se mais niguém vai ultilizar o programa
break # Paramos o loop while...

# Calculamos a média das notas
rate = total_notes // total_users # duas barras significa divisão exata.

# Limpamos a tela para continuar biiiiito ...
os.system('cls' if os.name == 'nt' else 'clear')

# Imprimimos os dados pedidos no exercício.
print("Maior acerto: %s" % biggest_note)
print("Menor acerto: %s" % lowest_note)
print("Total de alunos: %s" % total_users)
print("Média das notas: %s" % rate)



4. Re: Duvida exercicio

thalis
himen3

(usa Arch Linux)

Enviado em 02/06/2018 - 13:59h

Obrigado aos dois, compreendi agora.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts