The logic is quite simple, but a little hard. Having the two lists, one of names and another of ages, follows:
Find the lowest age in the list of ages;
Find the position on the list where the youngest child is;
Check the name of the newest person in the list of names;
The code would look something like:
menor_idade = min(idades)
posicao_menor_idade = idades.index(menor_idade)
nome = pessoas[posicao_menor_idade]
print(f'{nome} é a pessoa mais nova, com {menor_idade} anos')
This is a crude way to do, which slightly compromises the legibility of the code. In my view, the ideal is not to store two information that is related to each other in different lists, but in a single structure, such as a tuple. For example:
pessoas = []
for _ in range(10):
nome = input('Digite o nome da pessoa: ')
idade = int(input('Digite agora a idade da pessoa: '))
pessoas.append((nome, idade))
And search for the youngest person with:
pessoa_mais_nova = min(pessoas, key=lambda p: p[1])
Having thus, a return like: ('João', 10)
.
To make matters even worse, you can use namedtuple
:
Pessoa = namedtuple('Pessoa', ['nome', 'idade'])
pessoas = []
for _ in range(10):
nome = input('Digite o nome da pessoa: ')
idade = int(input('Digite agora a idade da pessoa: '))
pessoas.append(Pessoa(nome, idade))
pessoa = min(pessoas, key=lambda p: p.idade)
See working at Repl.it | GitHub GIST
Getting the return: Pessoa(nome='João', idade=10)
, and can display it:
print(f'{pessoa.nome} é a pessoa mais nova, com {pessoa.idade} anos')
The syntax of print()
with the prefix f
works only in 3.6+ versions. For previous versions, use the format
method.
In version 3.7 of Python it was including the Data Class standard, which can be used in this situation, much like the LINQ put in your answer, but in a simpler way:
from dataclasses import dataclass
@dataclass
class Pessoa:
nome: str
idade: int
And follow the same way:
pessoas = []
for _ in range(10):
nome = input('Digite o nome da pessoa: ')
idade = int(input('Digite agora a idade da pessoa: '))
pessoas.append(Pessoa(nome, idade))
pessoa = min(pessoas, key=lambda p: p.idade)