Mean between vectors within functions (python)

Asked

Viewed 615 times

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, sums up all the pairs, counts how many pairs it has, switches the position odd by playing forward and writes. this part for what I need is OK.

Now I would need to do the arithmetic mean of even numbers within the vector and I can not at all, and this mean cannot be through function, but in the main program, below the Type vector (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]

1 answer

0


Follow the solution as stated:

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 #

Exit:

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
  • Thank you friend for the answer, but I am "obliged" to do the rest with functions: Read two vectors of integer numbers of 10 positions; Print the two vectors read; Calculate the sum of even numbers contained in each vector. Count how many even values there are in each vector For each vector read in the item to exchange odd-order elements with those of immediately following even-order for each vector Print the two vectors after the exchanges. Previous items should be developed by functions.No main program calculates the arithmetic mean of even numbers contained in vectors

  • @Gustavosantos: Feito!

  • Thank you very much, however returned me this error: Traceback (most recent call last):&#xA;Vetor A: [5]&#xA;Vetor B: [8]&#xA; File "C:/Users/Dovah/PycharmProjects/trabalhoPROG/Trabalho2.py", line 56, in <module>&#xA;Soma dos Numeros Pares do Vetor A: 0&#xA; media1 = sum(pares1) / float(len(pares1))&#xA;Soma dos Numeros Pares do Vetor B: 8&#xA;ZeroDivisionError: float division by zero&#xA;Qtd. de Numeros Pares no Vetor A: 0&#xA;Qtd. de Numeros Pares no Vetor B: 1&#xA;Vetor A Trocado: [5]&#xA;Vetor B Trocado: [8]

  • Note that the data entry is done in the format: n1, n2, n3, ...

  • My lack of attention, thank you so much I will study the code and try to redo!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.