Calcule a quantidade de números pares e ímpares, a média de valores pares e a média geral dos números lidos. O número que encerrará a leitura será zero.
Soluções para a tarefa
Resposta:
Talvez não tenha ficado a melhor coisa, não conheço nada de phyton fiquei apanhando aqui para usar a sintaxe de escrita dele, mas lógica se aplica a qualquer linguagem, o código abaixo faz exatamente o que você queria:
pares = 0
impares = 0
mediaPares = 0
mediaGeral = 0
nDigitado = int(input())
while nDigitado != 0:
if nDigitado % 2 == 0:
pares += 1
mediaPares += nDigitado
elif nDigitado % 2 == 1:
impares += 1
mediaGeral += nDigitado
nDigitado = int(input())
if pares != 0:
mediaPares /= pares
if mediaGeral != 0:
mediaGeral /= (pares + impares)
print("Total de números pares: ", pares)
print("Total de números ímpares: ", impares)
print("Média geral = ", mediaGeral, " Média pares = ", mediaPares)
Explicação:
Primeiro criei 5 variáveis, dentre elas uma para armazenar a quantidade de números pares, outra para os números ímpares. Criei também um para mediaPares e outra para mediaGeral, inicialmente eles só vão adicionar o que o usuário digitar e ao fim será feito a conta da média.
Por fim a variável nDigitado que vai armazenar o número digitado, com isso eu coloquei logo de cara uma leitura para que o usuário digitasse um valor e para que este fosse armazenado na variável nDigitado, lembrando que input() retorna o tipo texto e nesse caso nós queremos o tipo numérico, por isso fiz a conversão int(input()), ficando:
nDigitado = int(input())
Com isso criei um laço de repetição do tipo while() e coloquei como condição para que ele seja executado que nDigitado seja diferente(!=) de 0:
while nDigitado != 0:
Isso fará com que o laço pare quando o usuário digitar 0, e vai servir também para verificar se o valor digitado na linha de cima também não foi 0.
A partir disso nós usamos o pulo do gato para descobrir quais números são pares e quais são ímpares, para isso vamos fazer uma operação utilizando o operador mod, que tem o mesmo símbolo de porcentagem(%), ele calcula o resto da divisão e veja só, todo número par divido por 2 tem resto 0 e todo número ímpar dividido por 2 tem resto 1, com isso criamos a condição:
if nDigitado % 2 == 0:
Ou seja, quando o resto da divisão for zero, que é o caso se ele for par, o programa vai executar um comando específico. Que nada mais é do que somar +1 a variável pares
pares += 1 (é o mesmo que pares = pares + 1)
E depois somamos a variável mediaPares o valor que foi digitado pelo usuário, ao final esse valor será dividido pela variável pares, para que deste modo possamos saber qual é a media dos números pares, isso ocorrerá mais a frente por enquanto vamos só somar nDigitado a mediaGeral:
mediaPares += nDigitado (é o mesmo que mediaPares = mediaPares + nDigitado)
Agora abaixo da estrutura do if vamos criar um elif para ver se o número digitado é ímpar, lembrando que % é o operador que calcula o resto e todo o número ímpar dividido por 2 tem resto 1, então temos que:
elif nDigitado % 2 == 1:
E dentro deles somares +1 a quantidade de valores ímpares, que é armazenado na variável impares:
impares += 1 (mesmo que impares = impares + 1)
E só isso já que não teremos a média dos números ímpares, abaixo do elif agora basta colocar que mediaGeral recebe o valor que já havia nele + o número digitado pelo usuário:
mediaGeral += nDigitado
E por fim dentro do while colocamos novamente o comando de leitura e o porquê disso? É que colocando ao final o laço obrigatoriamente terá que voltar ao começo e checar a condição e se o usuário digitar 0 ele para o laço. Esse comando será feito dá mesma forma que foi feito antes, utilizando o input() com uma conversão para int: int(input())
nDigitado = int(input())
Pronto é só isso dentro do laço while agora fora dele vamos calcular a média dos números pares e a média geral. Começando pelos pares, basta pegar a variável mediaPares e dividi-la pela quantidade de números pares, que está armazenado na variável pares ficando:
if pares != 0:
mediaPares /= pares (mesmo que mediaPares = mediaPares / pares)
DETALHE: Coloquei um if pares != 0: antes porque números divididos por 0 dão erro dentro do Phyton, mesma coisa com o debaixo só que nele verifiquei se mediaGeral é diferente(!=) de 0.
Depois para a média geral precisamos dividir média geral pela soma da quantidade de números pares e ímpares, para tal é importante isolar essa operação com parênteses, pois esta deverá ser executada primeiro
(pares + impares)
Ao final temos que:
if mediaGeral != 0:
mediaGeral /= (pares + impares)
Pra fechar com chave de ouro apenas coloquei algumas mensagens e concatenei com variáveis para que estas aparecessem no console :D
print("Total de números pares: ", pares)
print("Total de números ímpares: ", impares)
print("Média geral = ", mediaGeral, " Média pares = ", mediaPares)