1° Desafio: Sistema Bancário Python - NTT DATA
- #Python
Introdução
Esse é o 1° desafio de projeto do NTT DATA - Engenharia de Dados com Python. Quero compartilhar o código com vocês e um pouco do meu raciocínio também, espero que ajude quem estiver com dificuldades.
Objetivo do Projeto
O objetivo deste projeto é criar um sistema bancário que permita ao usuário realizar três operações principais: depósito, saque e consulta de extrato.
git: https://github.com/dataramus/sistema-banco-python
Estrutura do Código
1. Menu de Operações
A interface do sistema começa com um menu simples que permite ao usuário escolher entre as operações disponíveis: depósito, saque, extrato e saída. Este menu é essencial para guiar o usuário e garantir que o sistema receba inputs válidos.
```
menu = """
Digite:
[d] para Depositar
[s] para Sacar
[e] para Extrato
[q] para sair
"""
```
2. Parâmetros Iniciais
Antes de iniciar o loop principal do programa, definimos alguns parâmetros iniciais que controlam o estado do sistema:
```
saldo = 0
limite = 500
extrato = ""
num_saque = 0
lim_saque = 3
```
- saldo: Armazena o saldo atual da conta.
- limite: Define o valor máximo que pode ser sacado em uma única operação.
- extrato: Registra o histórico de transações.
- num_saque: Contador de saques realizados no dia.
- lim_saque: Limite diário de saques permitidos.
Esses parâmetros garantem que o sistema possa monitorar e restringir operações conforme necessário, mantendo a segurança e a integridade dos dados.
3. Controle de Fluxo: Loop Principal
O loop principal é onde a mágica acontece. Ele continua rodando até que o usuário escolha sair do sistema:
```python
while True:
seleciona = input(menu)
```
Dentro desse loop, o programa verifica qual operação o usuário selecionou e chama a função correspondente.
4. Operação de Depósito
A operação de depósito permite que o usuário adicione fundos à sua conta, atualizando o saldo e registrando a transação no extrato:
```python
if seleciona == "d":
valor = float(input("Valor a ser depositado: "))
if valor > 0:
saldo += valor
extrato += f"Depósito: R$ {valor: .2f}\n"
else:
print("Valor inválido.")
```
Aqui, garantimos que apenas valores positivos sejam aceitos. Caso contrário, uma mensagem de erro é exibida.
5. Operação de Saque
A operação de saque é um pouco mais complexa, pois envolve várias verificações de segurança:
```
elif seleciona == "s":
valor = float(input("Digite o valor a ser sacado: "))
sem_saldo = valor > saldo
sem_limite = valor > limite
sem_saque = num_saque >= lim_saque
if 0 < valor <= saldo and valor <= limite and num_saque < lim_saque:
saldo -= valor
extrato += f"Saque: R$ {valor: .2f}\n"
num_saque += 1
elif sem_saldo:
print("Saldo Insuficiente.")
elif sem_limite:
print("Valor de Saque Excedido.")
elif sem_saque:
print("Limite de Saques Excedido.")
else:
print("Valor Inválido")
```
Antes de permitir o saque, o sistema verifica:
- Se o saldo é suficiente.
- Se o valor solicitado está dentro do limite permitido.
- Se o usuário não ultrapassou o número máximo de saques permitidos.
Essas verificações evitam problemas como saldo negativo ou saques excessivos.
6. Consulta de Extrato
A consulta de extrato permite que o usuário veja todas as transações realizadas e o saldo atual:
```python
elif seleciona == "e":
print(f"Saldo: R$ {saldo: .2f}")
print("Extrato:")
print(extrato if extrato else "Nenhuma transação realizada.")
```
Esta função garante que o usuário tenha uma visão clara do estado de sua conta, promovendo transparência e confiança no sistema.
7. Saída do Sistema
Finalmente, o sistema permite que o usuário saia a qualquer momento:
```python
elif seleciona == "q":
break
```
Essa simplicidade garante que o usuário tenha controle total sobre quando finalizar suas operações.
Análise e Considerações Finais
Este sistema bancário básico é um excelente exemplo de como conceitos fundamentais de programação, como controle de fluxo, condições e manipulação de strings, podem ser utilizados para criar aplicações práticas. A implementação de limites de segurança, como o número máximo de saques e limites de valor, demonstra uma compreensão das necessidades de segurança em sistemas financeiros.
Conclusão
Este projeto não só serve como uma introdução à programação em Python, mas também demonstra habilidades importantes como lógica de negócios, controle de fluxo e manipulação de dados.