Ir ao conteúdo
  • Cadastre-se

Python Erro por divisão por zero


Posts recomendados

Quero a média de todos os números digitados, menos do zero! o erro quando o n=0

 

  def media(n, soma, cont):
      while n != 0:
          n = int(input())
          soma += n
          cont += 1
          if n == 0:
              cont -= 1
              break
      return soma / cont

  def main():
      n = 1 
      soma = 0
      cont = 0
      if n == 0:
          False
      else:
          print(media(n,soma,cont))

  if __name__ == '__main__':
      main()

 

Link para o post
Compartilhar em outros sites

@rickuchiha    hum erro típico ,  nunca se pode dividir um número por zero ,  e então seu código poderia ser assim  :

def media(n, soma, cont):
    while n != 0:
        n = int(input())
        soma += n
        cont += 1
        if n == 0:
            cont -= 1
            break
    if cont != 0:
        return soma / cont
    else:
        return "Na Matemática Moderna é Impossivel Dividir por Zero !";


def main():
    n = 1
    soma = 0
    cont = 0
    if n == 0:
        False
    else:
        print(media(n, soma, cont))


if __name__ == '__main__':# e o que você pretendia com essas Linhas Aqui  ?
    main()                # nunca se deve chamar main() , pois isso acumala dados na memória do pc
                          # que vai ficando cada vez mais lento até travar totalmente .

 

Link para o post
Compartilhar em outros sites
  • Simon Viegas alterou o título para Erro por divisão por zero
  • Moderador

Sobre o código:

 

No trecho:

6 horas atrás, devair1010 disse:

def main():
    n = 1
    soma = 0
    cont = 0
    if n == 0:
        False
    else:
        print(media(n, soma, cont))

 

Esse if não tem qualquer utilidade.. O resultado será sempre falso (é uma contradição - ou seria possível em algum momento 1 ser igual a 0?), logo não faz sentido existir. Chama logo o print().

 

Além disso, as variáveis poderiam ficar dentro da função.

 

Segue um código refatorado:

def media():
    n = 1
    soma = 0
    cont = 0
    while n != 0:
        n = int(input())
        if n == 0:
            break
        soma += n
        cont += 1
    if cont != 0:
        return soma / cont
    else:
        return "Nenhum valor foi inserido!";

def main():
    print(media())

if __name__ == '__main__':
    main()

 

ou poderia ser assim:

def media():
    n = 1
    soma = 0
    cont = 0
    while n != 0:
        n = int(input())
        if n == 0:
            break
        soma += n
        cont += 1
    if cont == 0:
        return "Nenhum valor foi inserido!";
    return soma / cont        

def main():
    print(media())

if __name__ == '__main__':
    main()

 

 

Só complementando...
 

6 horas atrás, devair1010 disse:

return "Na Matemática Moderna é Impossivel Dividir por Zero !";

Creio que não seja bem assim... De um modo geral, "Impossível" é uma palavra muito forte... Na matemática, a divisão por zero poderia ser classificada de duas formas: ou é indefinida (quando o numerador é diferente de 0), ou é indeterminada (quando o numerador também é 0). Observação: são duas coisas distintas e devem ser levadas em consideração.

 

No primeiro caso, poderiam-se até dizer "impossível entre os números". Mas não poderia generalizar, pois existe um caso que "pode".

 

De qualquer forma, o cerne aí é que não era nem para dividir, pois se foi digitado 0 logo de cara, nenhum número foi inserido.

 

 

Sobre:

6 horas atrás, devair1010 disse:

if __name__ == '__main__':# e o que você pretendia com essas Linhas Aqui  ?
    main()                # nunca se deve chamar main() , pois isso acumala dados na memória do pc
                          # que vai ficando cada vez mais lento até travar totalmente .

 

Creio que se faz necessário chamar o main(), caso contrário o trecho não é executado. 

 

O uso desse if seria uma funcionalidade do Python para evitar que os eventuais mains de alguma biblioteca importada também seja executada, ou seja: esse trecho faz com que apenas o main do próprio escopo seja executado. Nesse contexto, não precisaria dessa linha... (Mas acho tanto faz.)

 

  • Curtir 2
Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora


Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!