1
resposta

[Dúvida] Testo Erro com Lista vazia

Ao fazer o exercício 7: - "Construa um código que calcule a média dos valores em uma lista. Utilize um bloco try-except para lidar com a divisão por zero, caso a lista esteja vazia."

Mesmo quando deixo propositalmente a lista vazia, retorna o erro "name 'media' is not defined". Caso eu altere a posição do Printi(media) para dentro do laço for, o terminal não informa erro, mas em nenhum momento aparece o erro de ZeroDivision ou a mensagem do print do seu tratamento.


lista_numeros = []

soma = 0

try:
    for i in lista_numeros:
        soma += i
        media = soma / len(lista_numeros)
    print(media)
except ZeroDivisionError:
    print('A lista está vazia, não é possível calcular a média')
except Exception as e:
    print(f'Ocorrre o erro: {e}')
1 resposta

Olá, Iuri!

Parece que o problema está na posição do cálculo da média e na chamada da variável "media". O cálculo da média deve ser feito fora do laço for, pois você precisa somar todos os elementos da lista primeiro e depois dividir pelo total de elementos. Além disso, a variável "media" deve ser definida antes do bloco try-except para que o Python saiba que ela existe, mesmo que a lista esteja vazia.

Aqui está uma versão corrigida do seu código:

lista_numeros = []

soma = 0
media = 0  # Definindo a variável media antes do bloco try-except

try:
    for i in lista_numeros:
        soma += i
    media = soma / len(lista_numeros)  # Calculando a média fora do laço for
    print(media)
except ZeroDivisionError:
    print('A lista está vazia, não é possível calcular a média')
except Exception as e:
    print(f'Ocorreu o erro: {e}')

Neste exemplo, se a lista estiver vazia, a exceção ZeroDivisionError será disparada e a mensagem 'A lista está vazia, não é possível calcular a média' será impressa.

Espero ter ajudado e bons estudos!