Mean between vectors within functions (python)

0

Good afternoon guys, I have the following code:

def Ler_vetor():
VET= []*10
for i in range(0,10):
    VET.append(int(input('Digite um número: ')))
return VET

def Escreva_vetor(VET):
print('Dentro do vetor (permutado) tem:',VET)

def Somar_vetor(VET):
pares = []
for i in range (0,10):
    if VET[i] % 2 == 0:
        pares.append(VET[i])
soma = sum(pares)
print('A soma dos pares é: ',soma)
return pares

def Contar_vetor(VET):
contador = 0
for i in range (0,10):
    if VET[i] % 2 == 0:
        contador += 1
print('Possui dentro do vetor: {} pares'.format(contador))
return contador

def Trocar_vetor(VET):
for i in range(0,10,2):
    aux = VET[i]
    VET[i] = VET[i+1]
    VET[i+1] = aux

print('----- Vetor A : -----')
vetA = Ler_vetor()
Somar_vetor(vetA)
Contar_vetor(vetA)
Trocar_vetor(vetA)
Escreva_vetor(vetA)

Basically it reads a vector of 10 positions, adds all pairs, counts how many pairs it has, exchanges the odd positions by playing forward and writes. this part for what I need is OK.

Now I would have to do the arithmetic mean of the even numbers within the vector and I can not do it at all, and that average can not be through function but in the main program, below the Write_vetor (vetA). Could someone help me?

Here is an example of the output:

----- Vetor A : -----
Digite um número: 1
Digite um número: 2
Digite um número: 3
Digite um número: 4
Digite um número: 5
Digite um número: 6
Digite um número: 7
Digite um número: 8
Digite um número: 9
Digite um número: 10
A soma dos pares é:  30
Possui dentro do vetor: 5 pares
Dentro do vetor (permutado) tem: [2, 1, 4, 3, 6, 5, 8, 7, 10, 9]
    
asked by anonymous 04.07.2018 / 17:09

1 answer

0

The solution is as follows:

def Ler():
    entrada = input('Entre com o vetor: ')
    return [ int(n) for n in entrada.split(",") ]

def Somar(v):
    return sum(v)

def Contar(v):
    return len(v)

def Pares(v):
    return [ n for n in v if not n % 2 ]

def Somar_Pares(v):
    return Somar(Pares(v))

def Contar_Pares(v):
    return Contar(Pares(v))

def Trocar(v):
    vaux = v[:]
    for i in range( 0, len(vaux) - 1, 2 ):
        vaux[i], vaux[i + 1] = vaux[ i + 1 ], vaux[i]
    return vaux

# 1 - Leia dois vetores de numeros inteiros de 10 posicoes
v1 = Ler()
v2 = Ler()

# 2 - Imprima os dois vetores lidos
print("Vetor A: {}".format(v1))
print("Vetor B: {}".format(v2))

# 3 -  Calcule a soma dos numeros pares contidos em cada vetor.
print("Soma dos Numeros Pares do Vetor A: {}".format(Somar_Pares(v1)))
print("Soma dos Numeros Pares do Vetor B: {}".format(Somar_Pares(v2)))

# 4 - Conte quantos valores pares existem em cada vetor
print("Qtd. de Numeros Pares no Vetor A: {}".format(Contar_Pares(v1)))
print("Qtd. de Numeros Pares no Vetor B: {}".format(Contar_Pares(v2)))

# 5 - Para cada vetor lido no item a troque os elementos de ordem impar
#     com os de ordem par imediatamente seguinte para cada vetor
vtr1 = Trocar(v1)
vtr2 = Trocar(v2)

# 6 - Imprima os dois vetores apos as trocas.
print("Vetor A Trocado: {}".format(vtr1))
print("Vetor B Trocado: {}".format(vtr2))

# 7 - No programa principal calcule a media aritmetica dos numeros pares
#     contidos nos vetores
pares1 = [ n for n in v1 if not n % 2 ]
pares2 = [ n for n in v2 if not n % 2 ]

media1 = sum(pares1) / float(len(pares1))
media2 = sum(pares2) / float(len(pares2))

print("Media Vetor A: {}".format(media1))
print("Media Vetor B: {}".format(media2))

# Fim #

Output:

Entre com o vetor: 1,2,3,4,5,6,7,8,9,10
Entre com o vetor: 1,3,5,7,9,2,4,6,8,8
Vetor A: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Vetor B: [1, 3, 5, 7, 9, 2, 4, 6, 8, 8]
Soma dos Numeros Pares do Vetor A: 30
Soma dos Numeros Pares do Vetor B: 28
Qtd. de Numeros Pares no Vetor A: 5
Qtd. de Numeros Pares no Vetor B: 5
Vetor A Trocado: [2, 1, 4, 3, 6, 5, 8, 7, 10, 9]
Vetor B Trocado: [3, 1, 7, 5, 2, 9, 6, 4, 8, 8]
Media Vetor A: 6.0
Media Vetor B: 5.6
    
04.07.2018 / 17:40