# O Estudante se torna o professor 8/9

Alguem ajuda, não consigo resolver esse problema

Please furnish the actual code so we can copy and run it. The image is okay for some information, but woefully lacking in user-friendliness. Thank you.

``````Por favor, forneça o código real para que possamos copiar e executá-lo.
A imagem é tudo bem para algumas informações, mas lamentavelmente

lloyd = {
“name”: “Lloyd”,
“homework”: [90.0, 97.0, 75.0, 92.0],
“quizzes”: [88.0, 40.0, 94.0],
“tests”: [75.0, 90.0]
}
alice = {
“name”: “Alice”,
“homework”: [100.0, 92.0, 98.0, 100.0],
“quizzes”: [82.0, 83.0, 91.0],
“tests”: [89.0, 97.0]
}
tyler = {
“name”: “Tyler”,
“homework”: [0.0, 87.0, 75.0, 22.0],
“quizzes”: [0.0, 75.0, 78.0],
“tests”: [100.0, 100.0]
}

def average(numbers):
total = sum(numbers)
total = float(total) / len(numbers)

def get_average(student):
homework = 0.1 * average(student[“homework”])
quizzes = 0.3 * average(student[“quizzes”])
tests = 0.6 * average(student[“tests”])
return homework + quizzes + tests

if score >= 90:
return “A”
elif score >= 80:
return “B”
elif score >= 70:
return “C”
elif score >= 60:
return “D”
else:
return “F”

def get_class_average(students):
results =
for student in students:
get_average(student)
results.append(get_average(student))
return average(results)

Eu tenho isso escrito, deveria estar bem mas ele fica dando o erro “Oops, tente outra vez. get_class_average([alice, lloyd]) retornou 91.15 em vez de 85.85 como esperado”

2 Likes

lloyd = {
“name”: “Lloyd”,
“homework”: [90.0, 97.0, 75.0, 92.0],
“quizzes”: [88.0, 40.0, 94.0],
“tests”: [75.0, 90.0]
}
alice = {
“name”: “Alice”,
“homework”: [100.0, 92.0, 98.0, 100.0],
“quizzes”: [82.0, 83.0, 91.0],
“tests”: [89.0, 97.0]
}
tyler = {
“name”: “Tyler”,
“homework”: [0.0, 87.0, 75.0, 22.0],
“quizzes”: [0.0, 75.0, 78.0],
“tests”: [100.0, 100.0]
}

def average(numbers):
a = len(numbers)
total = float(sum(numbers))
def get_average(student):
homework = average(student[‘homework’])
quizzes = average(student[‘quizzes’])
tests = average(student[‘tests’])
return homework * 0.1 +quizzes * 0.3 + tests * 0.6
if score >= 90: return ‘A’
elif score >= 80: return ‘B’
elif score >= 70: return ‘C’
elif score >= 60: return ‘D’
else: return ‘F’
def get_class_average(students):
results =
for students in students:
nota = get_average(students)
results.append(nota)
return results

Esse é o codigo. Aparenta estar certo, mais está dando erro.

Olá, perdi um bom tempo nesta questão também. Creio que você deve ler e reler o item 4 das instruções novamente para um melhor entendimento do que está sendo pedido. Em minha opinião o que o item está pedindo está meio confuso e isso dificulta a resolução da atividade. Não vou dar a resposta porque julgo ser um erro de interpretação da questão e não um bug.

``````for student in students:
``````

Também não consigo avançar esse modulo. Alguém reconhece o erro no meu código ?

``````def get_class_average(students):
results=[]
for student in students:
results.append(get_average(student))
return results
``````

Indentation on `return` is two levels when it should be one. Line it up with `for`.

Recuo em `return` é dois níveis, quando deveria ser um. Alinhá-lo com o `for`.

1 Like

Eu perdi muito tempo tentando resolver e o problema na verdade é como está escrito o item 4, estou usando em português o site não sei se está claro em inglês. Depois de ler o comentário de uma pessoa aqui, eu consegui achar o que faltava. Era a chamada a função average com usando a variável results!
Como não curti perder tanto tempo com algo tão bobo pelo enunciado mal escrito(traduzido) envio aqui a solução. Não creio que enviar essa solução vai atrapalhar o aprendizado de ninguém.

``````def get_class_average(students):
results=[]
for student in students:
results.append(get_average(student))

return average(results)``````
3 Likes

O meu ta exatamente igual ao teu, ta dando o mesmo erro

Obrigado! perdi um tempão, nessa quentão por causa da identação de return
Tava colocando ele dentro do laço.