Falta pouco!

0 dias

0 horas

0 min

0 seg

1
resposta

[Dúvida] Try-except aula 3 exercício 7

Criei o seguinte código para tratar o erro de divisão por zero:

lista = []
media = 0
for n in lista:
    try:
        media += (n / len(lista))
    except ZeroDivisionError:
        print('A lista está vazia!')
print(media)
print('Tamanho da lista: ', len(lista))

No entanto, ao rodar o código, ele não cai no except.

Não consigo entender qual é o problema desse código...

1 resposta

Olá, Izabela, como vai?

No seu código, o try-except está dentro do for. Como a lista está vazia, o laço nunca é executado, e por isso o ZeroDivisionError não acontece. A divisão por zero ocorre no momento em que você tenta usar len(lista) com a lista vazia, mas como o laço não inicia, esse trecho nunca roda.

Uma forma de resolver é colocar o cálculo da média fora do for. Por exemplo:

lista = []
try:
    media = sum(lista) / len(lista)
except ZeroDivisionError:
    print("A lista está vazia!")
    media = 0

print(media)
print("Tamanho da lista:", len(lista))

Assim, a divisão acontece de uma vez só e, se a lista estiver vazia, o except será executado corretamente.

Espero ter ajudado.

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado