Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

Resolução de Atividades - 12. Calculando a média de notas

# A profª Helena quer um programa para calcular a média de notas que ela entregar

def main():

    print ("Olá profª Helena, tudo bem? Digite as notas dos alunos para eu realizar o cálculo da média")

    lista_notas = input ("Insira aqui: ").split(", " or " e ")

    # Por ser uma string, é necessário converter a lista para floats. Foi utilizado o float()

    lista_formatada = [float (nota_individual) for nota_individual in lista_notas]

    media = sum (lista_formatada) / len (lista_formatada)

    print ("\nMédia final do aluno:", media)



if __name__ == "__main__":

    main()
3 respostas
solução!

Olá, Victor. Tudo bem por aí?

Vi que você resolveu o exercício usando list comprehension pra converter as notas, ficou uma solução enxuta e funcional. Só encontrei um ponto que vale ajuste antes de fechar essa atividade.

O .split(", " or " e "). Isso não funciona do jeito que você imaginou: o operador or em Python avalia a primeira string, e como ", " não é vazia, ela é considerada "verdadeira" e o or sempre retorna só ", ", ignorando o " e ". Então se o aluno digitar as notas separadas por " e ", o split vai falhar. O ideal é usar .split(",") e dar um .strip() em cada item pra tirar espaços extras, assim você cobre variações de digitação:

lista_notas = input("Insira aqui: ").split(",")
lista_formatada = [float(nota.strip()) for nota in lista_notas]

Você já testou o programa com entradas que tenham espaços diferentes entre as notas, tipo sem espaço depois da vírgula?

Parabéns pelo empenho, Victor. Qualquer dúvida, o fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Sim, acabei de testar deixando o slipt() só com a " , " e depois com o strip(). A única dúvida é se o usuário digitar um " e " no final, mas acredito que precisaria passar por outra validação.

Oi, Victor.

Seguindo a proposta da atividade, basta orientar o usuário a informar as notas separadas por vírgulas, então não é necessário tratar entradas com " e ". Sua solução com split(",") e strip() já atende muito bem ao exercício. Se quiser deixar o programa mais robusto por prática, aí sim vale adicionar uma validação para identificar formatos diferentes e exibir uma mensagem informando o padrão esperado.

Obrigado por testar a sugestão e compartilhar o resultado.