Potência Tech powered by iFood | Ciência de Dados: minha entrega do segundo desafio
- #GitHub
- #Git
- #Python
Introdução
O segundo desafio do bootcamp tratou-se de uma evolução do primeiro desafio. Nele, o objetivo era organizar o código em funções para cada feature do sistema bancário fictício. Além disso, foi proposto que houvessem três novas features: cadastro de cliente, criação de conta e lista com as contas.
Minha experiência ao desenvolver o segundo desafio
Eu já tinha boa parte do código escrito, visto que busquei implementar o paradigma funcional (ou quase isso) já no primeiro desafio, pois sempre tento dar "meu toque" em coisas que são propostas (faço isso em praticamente tudo na vida e aconselho todos a fazerem, pois mexe bastante com a criatividade e demonstra proatividade).
Contudo, desta vez eu "puxei o freio de mão" ao pensar em coisas mais avançadas para o desafio. No vídeo de solução do problema, descobri que as coisas que pensei para implementar serão abordadas posteriormente (pelo menos foi isso que o especialista disse). Portanto, decidi dar uma segurada na implementação do que pensei, mas, mesmo assim, dei "meu toque" em algumas coisas no código.
Ideias e desenvolvimento do desafio
Minhas ideias para essa parte do desafio se resumiram em implementar algumas validações para as entradas, e em manipular algumas strings com métodos.
A ideia original do desafio usa o CPF do usuário como meio de garantir que apenas uma pessoa por CPF pode se cadastrar como usuário. O mesmo ocorre na criação da conta corrente, mas por outro motivo. Aqui, a verificação é se o usuário tem cadastro no banco ou não. Após verificar, uma conta é criada para o usuário se ele é cadastrado no banco.
Para fazer a validação da entrada do CPF, pensei em utilizar um loop "while" para que o CPF fosse pedido enquanto o usuário não fornece apenas números e enquanto a cadeia de caracteres inserida não fosse de exatamente 11 números (quantidade de caracteres em um CPF).
while True:
cpf = input("Please enter your CPF number (only numbers): ")
if cpf.isdigit() and (len(cpf) == 11):
break
else:
print("Invalid input. Please enter only numbers!")
Assim que o usuário digita o CPF corretamente, a informação é encaminhada para a função auxiliar que irá filtrar para saber se o CPF já é cadastrado ou não (essa função também auxilia no mesmo objetivo para criar uma nova conta bancária).
Uma coisa que fiz diferente da implementação do especialista foi em dividir o endereço em variáveis separadas e, no fim, juntá-las para formar a informação desejada e na formatação proposta. Além disso, tive essa ideia porque facilitaria validar alguns dos dados sem precisar utilizar métodos de string e loops para percorrer a variável "endereço" que havia sido proposta.
Utilizei a mesma validação do CPF para validar o número da casa, visto que só números poderiam compor essa informação.
while True:
number = input("Please enter the number of your house: ")
if number.isdigit():
break
else:
print("Invalid input. Please enter only numbers!")
Outra coisa que pensei foi na validação e padronização do estado digitado pelo usuário. Para isso, criei uma lista com a abreviação das 27 Unidades Federativas do Brasil (26 estados mais o DF). Após o usuário digitar o estado, a informação só será aceita se estiver contida na lista fornecida.
while True:
state = input("Please enter your State: ").upper()
if state in states:
break
else:
print("Invalid input. Please enter only numbers!")
Além dessas validações, utilizei os métodos ".tittle()" e ".upper" para padronizar a informação, principalmente para sua saída. O método ".upper()" pode ser visto acima na variável "state": ele converte em maiúsculo os caracteres digitados. Já o método ".tittle()" foi utilizado em variáveis em que seria interessante que a primeira letra de cada palavra fosse exibida em maiúsculo, como no nome da rua, cidade, etc.
As outras alterações que pensei em relação ao projeto inicial já foram abordadas no artigo que escrevi para o primeiro desafio.
Documentação
Assim como no primeiro desafio, investi algum tempo para documentar o projeto utilizando para isso o README do mesmo.
Conclusão
Ver o programa rodando redondinho e ver que as coisas que pensei funcionavam me deixou com ótima sensação. Foi gratificante concluir mais esta etapa do bootcamp, além de entender mais ainda a importância de ter um código organizado para poder tratar os erros que vão surgindo na execução do projeto. Estou empolgado para aplicar esses conhecimentos em novos desafios e continuar aprimorando minhas habilidades em Python e programação de forma geral. Gratidão à DIO e ao iFood por tornarem isso possível. 🤗
Extra (e importante para mim)
Peço que, por gentileza, acessem o meu repositório no GitHub com minha solução para o desafio. Adoraria ler o que vocês acharam da implementação e da documentação que fiz. Podem deixar suas mensagens nos comentários deste artigo ou, se preferir (e talvez seja melhor), assinem o livro de visitas que criei para o repositório, dizendo o que acharam da implementação, da documentação, e compartilhando suas experiências e ideias também. Isso será muito enriquecedor para mim, e acredito que também pode ser para você. Gratidão para quem leu até aqui, e até a próxima! o/