Ir ao conteúdo

Posts recomendados

Postado

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()

 

Postado

@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 .

 

  • Membro VIP
Postado

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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...