You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
def autenticar(self, senha):
return self.senha == senha
def resetar_limites_diarios(self):
agora = datetime.now()
if agora - self.ultimo_reset_diario > timedelta(days=1):
self.saques_dia = 0
self.numero_saques = 0
self.ultimo_reset_diario = agora
def registrar_transacao(self, tipo, valor):
transacao = {
"tipo": tipo,
"valor": valor,
"data": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
self.historico_transacoes.append(transacao)
def depositar(self, valor):
self.resetar_limites_diarios()
if valor > 0:
self.saldo += valor
self.extrato += f"Depósito: R$ {valor:.2f}\n"
self.registrar_transacao("Depósito", valor)
return f"Depósito de {valor:.2f} concluído :)"
else:
return "Operação falhou :(. O valor informado é inválido."
def sacar(self, valor):
self.resetar_limites_diarios()
if valor <= 0:
return "Operação falhou :(. O valor informado é inválido."
elif valor > self.saldo:
return "Operação falhou :(. Você não tem saldo suficiente."
elif valor > self.limite_saque:
return "Operação falhou :(. O valor do saque excede o limite."
elif self.numero_saques >= self.limite_saques:
return "Operação falhou :(. Número máximo de saques excedido."
elif self.saques_dia + valor > self.limite_diario_saques:
return "Operação falhou :(. Você excedeu o limite diário de saques."
else:
self.saldo -= valor
self.extrato += f"Saque: R$ {valor:.2f}\n"
self.numero_saques += 1
self.saques_dia += valor
self.registrar_transacao("Saque", valor)
return f"Saque de {valor:.2f} realizado com sucesso."
def exibir_extrato(self):
extrato = "\n EXTRATO \n"
extrato += "Não foram realizadas movimentações." if not self.extrato else self.extrato
extrato += f"\nSaldo: R$ {self.saldo:.2f}\n "
return extrato
def exibir_historico_transacoes(self):
historico = "\n HISTÓRICO DE TRANSAÇÕES \n"
if not self.historico_transacoes:
historico += "Não foram realizadas transações."
else:
for transacao in self.historico_transacoes:
historico += f"{transacao['data']} - {transacao['tipo']}: R$ {transacao['valor']:.2f}\n"
historico += " "
return historico
def transferir(self, valor, conta_destino):
self.resetar_limites_diarios()
if valor <= 0:
return "Operação falhou :(. O valor informado é inválido."
elif valor > self.saldo:
return "Operação falhou :(. Você não tem saldo suficiente."
elif valor > self.limite_transferencia:
return "Operação falhou :(. O valor da transferência excede o limite."
else:
self.saldo -= valor
conta_destino.saldo += valor
self.extrato += f"Transferência: R$ {valor:.2f} para conta {conta_destino.numero}\n"
conta_destino.extrato += f"Transferência: R$ {valor:.2f} da conta {self.numero}\n"
self.registrar_transacao("Transferência Enviada", valor)
conta_destino.registrar_transacao("Transferência Recebida", valor)
return f"Transferência de {valor:.2f} para conta {conta_destino.numero} realizada com sucesso."
Gerenciamento de contas
contas = {}
def criar_conta(numero, titular, senha):
if numero in contas:
return "Número de conta já existente. Tente outro número."
else:
contas[numero] = ContaBancaria(numero, titular, senha)
return f"Conta {numero} criada com sucesso para {titular}."
def selecionar_conta(numero, senha):
conta = contas.get(numero)
if conta and conta.autenticar(senha):
return conta
else:
return None
Menus
menu_principal = """
[c] Criar Conta
[s] Selecionar Conta
[S] Sair
"""
menu_conta = """
[d] Depositar
[s] Sacar
[e] Extrato
[h] Histórico de Transações
[t] Transferir
[S] Sair
"""
Loop principal do sistema
while True:
opcao = input(menu_principal)
if opcao == "c":
numero = input("Informe o número da conta: ")
titular = input("Informe o nome do titular: ")
senha = input("Crie uma senha: ")
print(criar_conta(numero, titular, senha))
elif opcao == "s":
numero = input("Informe o número da conta: ")
senha = input("Informe a senha: ")
conta = selecionar_conta(numero, senha)
if conta:
while True:
opcao_conta = input(menu_conta)
if opcao_conta == "d":
valor = float(input("Informe o valor do depósito: "))
print(conta.depositar(valor))
elif opcao_conta == "s":
valor = float(input("Informe o valor do saque: "))
print(conta.sacar(valor))
elif opcao_conta == "e":
print(conta.exibir_extrato())
elif opcao_conta == "h":
print(conta.exibir_historico_transacoes())
elif opcao_conta == "t":
valor = float(input("Informe o valor da transferência: "))
numero_destino = input("Informe o número da conta destino: ")
conta_destino = contas.get(numero_destino)
if conta_destino:
print(conta.transferir(valor, conta_destino))
else:
print("Conta destino não encontrada.")
elif opcao_conta == "S":
break
else:
print("Operação Inválida. Selecione a operação desejada.")
elif opcao == "S":
break
else:
print("Operação Inválida. Selecione a operação desejada.")
The text was updated successfully, but these errors were encountered:
from datetime import datetime, timedelta
class ContaBancaria:
def init(self, numero, titular, senha):
self.numero = numero
self.titular = titular
self.saldo = 0
self.limite_saque = 500
self.limite_transferencia = 1000
self.extrato = ""
self.numero_saques = 0
self.limite_saques = 3
self.limite_diario_saques = 1000
self.saques_dia = 0
self.historico_transacoes = []
self.senha = senha
self.ultimo_reset_diario = datetime.now()
Gerenciamento de contas
contas = {}
def criar_conta(numero, titular, senha):
if numero in contas:
return "Número de conta já existente. Tente outro número."
else:
contas[numero] = ContaBancaria(numero, titular, senha)
return f"Conta {numero} criada com sucesso para {titular}."
def selecionar_conta(numero, senha):
conta = contas.get(numero)
if conta and conta.autenticar(senha):
return conta
else:
return None
Menus
menu_principal = """
[c] Criar Conta
[s] Selecionar Conta
[S] Sair
"""
menu_conta = """
[d] Depositar
[s] Sacar
[e] Extrato
[h] Histórico de Transações
[t] Transferir
[S] Sair
"""
Loop principal do sistema
while True:
opcao = input(menu_principal)
The text was updated successfully, but these errors were encountered: