#My_desafio
import textwrap
def menu():
menu = """\n
====================== Menu ======================\n
\t[1] Depositar
\t[2] Sacar
\t[3] Extrato
\t[4] Consultar Usuáiro
\t[5] Cadastrar Usuário
\t[6] Consultar Conta
\t[7] Cadastrar Conta
\t[0] Sair
==================================================
=> """
return input(textwrap.dedent(menu))
def deposito(valor, saldo, extrato, /):
##valor = float(input("Informe o valor do depósito: "))
if valor > 0:
saldo += valor
extrato += f"Depósito: R$ {valor:.2f}\n"
print(f"Deposito realizado com sucesso no valor: R$ ", valor)
else:
print("\n@@@ Operação falhou! O valor informado é inválido. @@@")
return saldo, extrato
def saque(*, saldo, valor, extrato, limite, numero_saques, LIMITE_SAQUES):
#valor = float(input("Informe o valor do saque: "))
excedeu_saldo = valor > saldo
excedeu_limite = valor > limite
excedeu_saques = numero_saques >= LIMITE_SAQUES
if excedeu_saldo:
print("Operação falhou! Você não tem saldo suficiente.")
elif excedeu_limite:
print("Operação falhou! O valor do saque excede o limite.")
elif excedeu_saques:
print("Operação falhou! Número máximo de saques excedido.")
elif valor > 0:
saldo -= valor
extrato += f"Saque: R$ {valor:.2f}\n"
numero_saques += 1
print("\n=== Saque realizado com sucesso! ===")
else:
print("Operação falhou! O valor informado é inválido.")
return saldo, extrato, numero_saques
def exibir_extrato(saldo, /, *, extrato):
print("\n================ EXTRATO ================")
print("Não foram realizadas movimentações." if not extrato else extrato)
print(f"\nSaldo: R$ {saldo:.2f}")
print("==========================================")
def localizarCPF(cpf, usuarios):
pesquisar_usuario = [usuario for usuario in usuarios if usuario["cpf"] == cpf]
return pesquisar_usuario[0] if pesquisar_usuario else None
def cadastroUsuario(usuarios):
cpf = input("Informe o CPF (Somente números): ")
if len(cpf) != 2:
print("Digitar novamente o CPF.")
else:
usuario = localizarCPF(cpf, usuarios)
if usuario:
print("\n@@@ Já existe usuário cadastrado com esse CPF! @@@")
nome_completo = input("Informe o nome completo: ")
#data_nascimento = input("Informe a data de nascimento (dd--mm--aaaa): ")
#endereco = input("Informe o endereço (logradouro, nro - bairro - cidade/uf): ")
#usuarios.append({"nome": nome_completo, "data_nascimento": data_nascimento, "cpf": cpf, "endereço": endereco})
usuarios.append({"nome": nome_completo, "cpf": cpf})
print("====== Usuário criado com sucesso! ======")
def criar_conta(agencia, numero_conta, usuarios):
cpf = input("Informe o CPF do usuário: ")
usuario = localizarCPF(cpf, usuarios)
if usuario:
print("\n=== Conta criada com sucesso! ===")
return {"agencia": agencia, "numero_conta": numero_conta, "usuario": usuario}
print("\n=== Usuário não encontrado, fluxo de criação de conta encerrado! @@@")
def listar_contas(contas):
for conta in contas:
linha = f"""
Agência:\t{conta['agencia']}
C/C:\t\t{conta['numero_conta']}
Titular:\t{conta['usuario']['nome']}
CPF_Titular:\t{conta['usuario']['cpf']}
"""
print("=" * 100)
print(textwrap.dedent(linha))
def consulta_usuario(usuarios, contas):
cpf = input("Informe o CPF do usuário:")
usuario = localizarCPF(cpf, usuarios=usuarios)
lista_clientes = f"""\
Nome:\t{usuario['nome']}
CPF:\t{usuario['cpf']}
"""
print("=" * 40 + " Cliente Cadastrado " + "=" * 40)
print(textwrap.dedent(lista_clientes))
for conta in contas:
linha = f"""\
Agência:\t{conta['agencia']}
C/C:\t\t{conta['numero_conta']}
"""
if conta['usuario']['cpf'] == usuario['cpf']:
print(textwrap.dedent(linha))
print("=" * 100)
def main():
LIMITE_SAQUES = 3
AGENCIA = '0001'
saldo = 0
limite = 500
extrato = ""
numero_saques = 0
usuarios = []
contas = []
while True:
opcao = menu()
match opcao:
case "1":
#depositar
valor = float(input("Informe o valor do deposito: "))
saldo, extrato = deposito(valor, saldo, extrato)
case "2":
#saque
valor = float(input("Informe o valor do saque: "))
saldo, extrato, numero_saques = saque(
saldo=saldo,
valor=valor,
extrato=extrato,
limite=limite,
numero_saques=numero_saques,
LIMITE_SAQUES=LIMITE_SAQUES
)
case "3":
#extrato
exibir_extrato(saldo, extrato=extrato)
case "4":
consulta_usuario(usuarios, contas=contas)
case "5":
#cadastro de usuários
cadastroUsuario(usuarios)
case "6":
#
listar_contas(contas)
case "7":
#cadastrar conta
numero_conta = len(contas) + 1
conta = criar_conta(AGENCIA, numero_conta, usuarios)
if conta:
contas.append(conta)
case "0":
break
main()
#My_desafio
import textwrap
def menu():
def deposito(valor, saldo, extrato, /):
def saque(*, saldo, valor, extrato, limite, numero_saques, LIMITE_SAQUES):
def exibir_extrato(saldo, /, *, extrato):
print("\n================ EXTRATO ================")
print("Não foram realizadas movimentações." if not extrato else extrato)
print(f"\nSaldo: R$ {saldo:.2f}")
print("==========================================")
def localizarCPF(cpf, usuarios):
pesquisar_usuario = [usuario for usuario in usuarios if usuario["cpf"] == cpf]
return pesquisar_usuario[0] if pesquisar_usuario else None
def cadastroUsuario(usuarios):
def criar_conta(agencia, numero_conta, usuarios):
cpf = input("Informe o CPF do usuário: ")
usuario = localizarCPF(cpf, usuarios)
def listar_contas(contas):
for conta in contas:
linha = f"""
Agência:\t{conta['agencia']}
C/C:\t\t{conta['numero_conta']}
Titular:\t{conta['usuario']['nome']}
CPF_Titular:\t{conta['usuario']['cpf']}
"""
print("=" * 100)
print(textwrap.dedent(linha))
def consulta_usuario(usuarios, contas):
cpf = input("Informe o CPF do usuário:")
usuario = localizarCPF(cpf, usuarios=usuarios)
def main():
main()