Olá, Cod3rs. Tudo tranquilo? Durante esse artigo entenderemos na prática como arrays funcionam em Python ao mesmo tempo que praticamos a lógica da programação.

Vamos criar um código que incorpora elementos do universo de Harry Potter, isso inclui  fazer uma array contendo o nome dos alunos de Hogwarts e classificar eles em suas respectivas casas usando o array de casas de Hogwarts.

Você pode acompanhar o artigo enquanto soluciona o desafio com sua própria lógica!

Parte 1

Primeiramente, vamos definir o array de casas de Hogwarts:

hogwarts_casas = ["Grifinória", "Lufa-Lufa", "Corvinal", "Sonserina"]

Agora, como são muitos alunos, vamos fazer outro array, porém, contendo apenas os alunos mais relevantes para o nosso projeto não ficar enorme e confuso:

hogwarts_alunos = [
   "Harry Potter",
   "Hermione Granger",
   "Ron Weasley",
   "Draco Malfoy",
   "Luna Lovegood",
   "Cedric Diggory",
]

Pronto. Agora já temos dois arrays diferentes, um para as casas e um para os alunos de Hogwarts.

Para alcançar o objetivo proposto, vamos definir uma função que irá classificar os alunos em suas devidas casas:

def definir_hogwarts_alunos():

E, para isso, será criado um dicionario para gravar alunos pelas casas:

alunos_por_casa = {casa: [] for casa in hogwarts_casas}

Tudo certo. Falta então desenvolver a lógica por trás de como a classificação em si será feita.

Existem várias formas de fazer isso. Porém, pensando nesse projeto como um primeiro rascunho para alguém que está apenas praticando, implementaremos uma lógica simples:

Classificar alunos por casas baseados no último nome.

Já sabemos de antemão quais personagens pertencem a quais casas, o que torna a classificação mais fácil.

for aluno in hogwarts_alunos:
       ultimo_nome = aluno.split()[-1]

Essencialmente, no código acima:

O loop for itera sobre cada aluno na lista hogwarts_alunos.

Para cada aluno, a função aluno.split() é usada para dividir o nome do aluno em uma lista de palavras. O índice [-1] é então usado para acessar a última palavra da lista, que representa o sobrenome do aluno.

A variável ultimo_nome agora contém o sobrenome do aluno atual.

Para o restante da lógica, uma boa opção é fazer o uso de if/else, “se sobrenome começa com letra tal, então:”

if ultimo_nome.startswith("P"):
    alunos_por_casa["Grifinória"].append(aluno)
elif ultimo_nome.startswith("D"):
    alunos_por_casa["Lufa-Lufa"].append(aluno)
elif ultimo_nome.startswith("L"):
    alunos_por_casa["Corvinal"].append(aluno)
elif ultimo_nome.startswith("M"):
    alunos_por_casa["Sonserina"].append(aluno)

Nesse trecho, as instruções if e elif verificam a primeira letra do ultimo_nome usando o método startswith().

Usando a primeira instrução do if como exemplo, se o sobrenome começar com “P”, o aluno é encaminhado para a casa “Grifinória”.

O aluno é adicionado à lista de alunos da casa “Grifinória” usando alunos_por_casa["Grifinória"].append(aluno).

E esse é o mesmo molde usado para classificar os outros alunos em outras casas.

Para ver se a lógica deu certo, devemos imprimir o resultado:

for casa in hogwarts_casas:
    alunos_casas = alunos_por_casa[casa]
    print(f"{casa}: {alunos_casas}")

Essencialmente, esta parte do código percorre cada casa e pega a lista correspondente de alunos.

Então, o print() é usado para exibir o nome da casa e a lista de alunos dessa casa. A string formatada “{casa}: {alunos_casas}” é usada para concatenar o nome da casa e a lista de alunos.

Daí ficou apenas chamar a função:

definir_hogwarts_alunos()

E o resultado no output:

Grifinória: ['Harry Potter']
Lufa-Lufa: ['Cedric Diggory']
Corvinal: ['Luna Lovegood']
Sonserina: ['Draco Malfoy']

Finalizamos a proposta com êxito!

Parte 2

Após terminar um projeto ou um desafio, é importante reler seu prórpio código e procurar por coisas que você pode otimizar e melhorar.

Por vezes, você não conseguirá pensar em nada e isso pode ser bem frustrante. Porém, quanto mais experiencia ganha e quanto mais você avança no curso, você vai aos poucos mudando sua visão em relação as coisas que desenvolveu antes.

E é um sentimento muito bom, poder olhar para trás com mais experiência sobre algo que você teve dificuldade ao desenvolver.

Existem algumas formas de melhorar o código acima, seguindo uma lógica mais concisa e que faça mais sentido com relação a construção do mundo fantasia de Harry Potter.

Esse artigo terá uma continuação onde o código que foi desenvolvido hoje será melhorado.

Até lá, é interessante você que chegou até aqui tentar e implementar com sua pŕopria lógica e da sua própria maneira. Se já for incrito aqui no blog, sinta-se na liberdade até de mandar sua solução aqui nos comentários!

Conclusão

Refazer, ler e entender, e implementar códigos são uma parte intrínseca do aprendizado.

Quando se fala de praticar e desenvolver projetos do zero, não hesite em tornar isso algo divertido ao usar referências e exemplos que fazem mais sentido para você.

Nos vemos na continuação!