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!