Python loop requesting data reentry

Asked

Viewed 96 times

-1

I have a problem in my Python code, it is giving loop. Every time I have to insert the list again to show the results.

Could someone help me?

Follows the code:

import numpy as np
import pandas as pd
import statistics as st
from collections import defaultdict

lista = []


def vetor(lista):
    print('\nREGRAS NA FORMAÇÃO DA LISTA:\n'
          '1.Um dos valores tem que estar repetido\n'
          '2.O conjunto de dados deve apresentar, pelo menos, 6 valores únicos.\n'
          '3.NÃO É PERMITIDO escolher todos os números iguais.\n'
          '4.A LISTA POSSUI APENAS 12 ELEMENTOS\n')

    for i in range(0, 12):
        elementos = int(
            input('Elemento inserido no índice {}: '.format(i)))  
        lista.append(elementos)  
    return (lista)


print('A sua lista é: ', vetor(lista))
print('A média dos índices é: {:.4f} '.format(np.mean(vetor(lista))))
print('A moda é: {:.4f} '.format(st.mode(lista)))
print('A Mediana é: {:.4f} '.format(st.median(vetor(lista))))
print('A variância amostral é: {:.4f}'.format(st.pvariance(vetor(lista))))
print('O desvio padrão amostral é: {:.4f}'.format(st.stdev(vetor(lista))))
print('O coeficiente de variação é: {:.4f}'.format(st.variance(vetor(lista))))

2 answers

2

Change the function name vetor for something that makes clear the intention to read user data and store the results in a variable, ensuring that this function is called once and only once. For example:

import numpy as np
import statistics as st

def ler_dados():
    lista = []
    print('\nREGRAS NA FORMAÇÃO DA LISTA:\n'
          '1.Um dos valores tem que estar repetido\n'
          '2.O conjunto de dados deve apresentar, pelo menos, 6 valores únicos.\n'
          '3.NÃO É PERMITIDO escolher todos os números iguais.\n'
          '4.A LISTA POSSUI APENAS 12 ELEMENTOS\n')

    for i in range(0, 12):
        elemento = int(input('Elemento inserido no índice {}: '.format(i)))  
        lista.append(elemento)  
    return lista

lista = ler_dados()
print('A sua lista é: ', lista)
print('A média dos índices é: {:.4f} '.format(np.mean(lista)))
print('A moda é: {:.4f} '.format(st.mode(lista)))
print('A Mediana é: {:.4f} '.format(st.median(lista)))
print('A variância amostral é: {:.4f}'.format(st.pvariance(lista)))
print('O desvio padrão amostral é: {:.4f}'.format(st.stdev(lista)))
print('O coeficiente de variação é: {:.4f}'.format(st.variance(lista)))

1


You’re calling the function every time you make one print() on the last lines. That is every first time you will call the function to "print" 'Your list is: 'then you call it again to "print" 'The average of the indexes is: {:. 4f} '.

You should save this in a variable like . format() you would put it. For example:


valores = vetor(lista)

def vetor(lista):
    #código

print('A sua lista é: ', valores)
print('A média dos índices é: {:.4f} '.format(np.mean(valores)))
#continuação do código

Browser other questions tagged

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