[Python] Como ordenar array que vai buscar valores á class?

9 respostas
classesclassclassearrayarraylist
R

Bom dia galera, estou aqui com um probleminha, tentei usar o max() e min() mas não adiantou…

É o seguinte, fiz uma agenda, e coloquei a opção para organizar a idade da pessoa do menor para o maior… O problema é que não tô conseguindo…

Essa imagem é um exemplo do que está acontecedo:

image

E eu queria que acontecesse isso assim:

image

Aqui está o código:

Este é o código de ordenar…

def ordenarporidade():

print("\n— Ordenado por idade —")

for pessoa in pessoas:

Dadospessoasordenar(pessoa)

E aqui é o código que tô usando pra ele dar print

def Dadospessoasordenar(pessoa):
print("[Pessoa %s]\nNome: %s \nNúmero de Telemóvel: %s \nIdade: %s anos\nAltura: %s metros\nPeso: %s kg\n" % (pessoa.getId(), pessoa.getNome(), pessoa.getNumero(), pessoa.getIdade(), pessoa.getAltura(), pessoa.getPeso()))

Obrigado a quem puder me ajudar! Valeu…

9 Respostas

R

Veja se ajuda…

ordenadoIdade = sorted(pessoas, key=lambda x: x.getIdade(), reverse=False)
print(ordenadoIdade)

Eu coloquei getIdade() ai mas nem sei o que vc usa pra pegar idade, ajuste ao seu código…

O reverse=False quer dizer ordenado naturalmente (1,2,3,4,5…), se quiser do maior para o menor é só mudar pra True (5,4,3,2,1…)

Tirei esse exemplo daqui

R

Mas onde posso colocar esse código? Estou um pouco confuso… :confused:

R

Coloquei seu código na minha

def Dadospessoasordenar(pessoa)

mas ficou assim:

image

R

Se conseguir me ajudar, seria muito foda…

R

Também não sei se tou colocando no sítio correto…

R

Isso era só exemplo jovem, era pra colocar em outro lugar só pra testar, vc também precisa exercitar um pouco a mente e não ficar só no copia e cola, nem tudo o que a gente passa é solução definitiva, colocar em prática é sua obrigação, mas entender o que está fazendo é essencial!

def ordenarporidade():
    pessoas.sort(key=lambda p: p.getIdade(), reverse=False)
    ...

Volto a dizer, não sei o que vc usa pra pegar a idade de cada pessoa, ajuste ao seu código…

O resto continua do jeito que estava, vc precisa ordenar a lista antes de imprimir pegou? sucesso

R

Valeu, ajudou mesmo…

Só uma coisa…

Esse código aqui:

pessoas.sort(key=lambda pessoa: pessoa.getIdade(), reverse=False)

Não dá pra tirar ele de fazer print?

image

R

Não entendi, esse trecho não imprime nada, apenas reordena a lista…

R

Consegui resolver, valeu cara.

Criado 13 de dezembro de 2018
Ultima resposta 13 de dez. de 2018
Respostas 9
Participantes 2