Define functions for equal values and values in ascending order - Python

0
Hello, I have defined a function for reading 100 records records, containing name, gender and age, and now I need a separate function to show how many people are male and another separate function to show the vector in order growing. How could it be done? Thank you.

#Fazendo a ficha com nome sexo e idade
def leitura_registros():
    registros = []
    for x in range(100):
        fichaderegistros = {
        "Nome": input("Digite o nome: "),
        "Sexo": input("Digite o sexo: "),
        "Idade": int(input("Digite a idade: "))
        }
        registros.append(fichaderegistros)
    return registros


if __name__ == '__main__':
    # Faz a leitura dos registros
    registros = leitura_registros()
    
asked by anonymous 08.06.2018 / 00:21

2 answers

1

To count how many are of a particular gender, the logic is very simple: go through the list and when you find a record with the gender you want, add a counter. Basically, it would look like this:

def contar_por_sexo(registros, sexo):
    resultado = 0
    for registro in registros:
        if registro['Sexo'] == sexo:
            resultado += 1
    return resultado

qtd_homens = contar_por_sexo(registros, 'M')
print(f'Há {qtd_homens} na lista')

Now to sort in ascending order, just use the native function sorted :

def ordenar_por_idade(registros):
    return sorted(registros, key=lambda it: it['Idade'])
    
08.06.2018 / 00:55
0

I did not test, but I think it's very simple and should work:

#Fazendo a ficha com nome sexo e idade
registros = []
masculinos = []
idadesCrescente = []

def leitura_registros():

for x in range(100):
    fichaderegistros = {
    "Nome": input("Digite o nome: "),
    "Sexo": input("Digite o sexo F ou M: "),
    "Idade": int(input("Digite a idade: "))
    }
    registros.append(fichaderegistros)
    return registros


if __name__ == '__main__':
# Faz a leitura dos registros
    registros = leitura_registros()


def sexoMasculino(registros):

    for i in registros:
        if i == "M" or i == "m":
            masculinos.append(i)

def idadesCrescente(){
    cont = 0   # cont serve como uma chave, 0 fechada e 1 aberta
    for a in registros:
    if cont != 0: #Quando cont for zero, não entra nesse if
            idadesCrescentes.append(a)
            cont = 0 #Após armazenar o valor a chave é fechada

    if a == "M" or a == "m":
            cont = 1 # se as condições acima forem verdadeiras, significa que o termo seguinte será o valor de idade e a chave será liberada para o próximo loop.

    return idadesCrescentes.sort()
    }

Considerations: The sexoMasculino() function will scan the registros vector and check the position M , m , F or f and store it in another vector, so it will be stored only or gender values.

For the function idadesCrescente() , it will be verified if the sex term was found and if yes, we know that the next value will be the age, soon the key is released and in the following loop the age if will be true and store the age. After the .sort function will sort the organization in ascending order of values.

Now just call the methods where you want and without having to pass any parameters. Anything warns you

    
08.06.2018 / 00:45