Ir para conteúdo
Fórum Script Brasil
  • 0

Código não compila, retorna:"string indices must be integers, not


overRider

Pergunta

Alguém pode me ajudar? Sou novo com Python e estou praticando pelo Codecademy, mas cheguei em um exercício que não consigo resolver. o código é o seguinte:

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]
}

classe = ["lloyd", "alice", "tyler"]

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

def get_average(student):
homework = average("homework"[student])
quizzes = average("quizzes"[student])
tests = average("tests"[student])
total = homework * 0.10 + quizzes * 0.30 + tests * 0.60
return total

def get_letter_grade(score):
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 classe:
get_average(student)
results = results.append()
results = average(results)
return results

Ele me retorna o seguinte erro:

get_class_average([alice]) resultou em um erro: string indices must be integers, not str

alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Ola overRider

já conseguiu resolver o problema com o script?

bom, vou relatar as coisas que eu vi.

1- a lista classe foi feita com tres strings, ela deveria ser feita com os tres dicionarios:

classe = [lloyd, alice, tyler]

2- a função get_class_average(students) pede students, e esta variável não é usada no corpo da função.

Isso não atrapalha a execução do código aqui em casa, mas mata a reutilização da função, pois o for usa a lista classe mas era para ser a lista students

ainda nesta função temos a função get_average(student) sem proposito, pois os dados de saída não estão sendo guardados para uso posterior.

results = results.append() vai retornar um erro, pois .append() precisa de argumento

results = average(results) é uma execução desnecessária, pois average() já foi chamada em get_average(student).

recomendo a solução

#Este for não esta edentado na função, foi uma falha durante a postagem da duvida?

for student in students:

results.append(get_average(student))
o return results pode ficar fora do for
3- em get_average(student) usa incorretamente a saida do dicionario
codigo original - homework = average("homework"[student])
codigo corrigido - homework = average(student["homework"])
###
com isso o seu codigo deve funcionar
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...