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

Asked

Viewed 139 times

0

Hello, I set a function to read 100 records, containing name, gender and age, and now I need a separate function to show on the screen how many people are male and another separate function to show the vector in ascending order of age. 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()

2 answers

1


To count how many are of a given sex, the logic is quite simple: go through the list and when you find a record with the desired sex, 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')

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

def ordenar_por_idade(registros):
    return sorted(registros, key=lambda it: it['Idade'])
  • @Joãomoreira just go through the list returned by ordenar_por_idade and display with print. I’ll leave that to you.

0

I haven’t tried it, but I believe it’s quite simple and it 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 function sexoMasculino() will scan by vector registros and check in which position the M, m, F or f and thus store in another vector, soon will be stored only the sex values.

For the function idadesCrescente(), will be checked if the sex term has been found and if yes, we know that the next value will be age, then the key is released and in the next loop the age if will be true and will store age. After function . Sort will make the organization in ascending order of values.

Now just call the methods where you want and no need to pass any parameter. Anything warns there

  • Its function of ordering by age did not seem to make much sense. It could explain it?

Browser other questions tagged

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