Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Criando um Sistema Bancário com Python - **Alterando enquanto aprendo** #165

Open
VLry1N opened this issue Jul 6, 2024 · 1 comment
Open

Comments

@VLry1N
Copy link

VLry1N commented Jul 6, 2024

saldo = 0
limite = 500
extrato = ""
numero_saques = 0
LIMITE_SAQUES = 3

#Contas cadastradas no Sistema: Joao:234 e Maria:432

print("Olá, Seja Bem-Vindo(a)")

while True:
    print("Por favor, insira o codigo de sua conta")
    conta = input()

    if conta == "234":
        print("Como vai, Joao? Deseja ver seu Saldo")
        saldo = 5000
        
        verificar = input().upper()
        if verificar == ("S"):
            print(f"Seu saldo e de {saldo}")
        break

    elif conta == "432":
        print("Como vai, Maria? Deseja ver seu Saldo")
        saldo = 1200

        verificar = input("").upper()
        if verificar == ("S"):
            print (f"Seu saldo e de {saldo}")
        break

    else:
        print("Conta não encontrada.")


menu = """

[d] Depositar
[s] Sacar
[e] Extrato
[q] Sair

=> """

while True:

    opcao = input(menu)

    if opcao == "d":
        valor = float(input("Informe o valor do depósito: "))

        if valor > 0:
            saldo += valor
            extrato += f"Depósito: R$ {valor:.2f}\n"

        else:
            print("Operação falhou! O valor informado é inválido.")

    elif opcao == "s":
        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

        else:
            print("Operação falhou! O valor informado é inválido.")

    elif opcao == "e":
        print("\n================ EXTRATO ================")
        print("Não foram realizadas movimentações." if not extrato else extrato)
        print(f"\nSaldo: R$ {saldo:.2f}")
        print("==========================================")

    elif opcao == "q":
        break

    else:
        print("Operação inválida, por favor selecione novamente a operação desejada.")
@VLry1N
Copy link
Author

VLry1N commented Jul 10, 2024

  import textwrap
  
  
  def menu():
      menu = """\n
      ================ MENU ================
      [d]\tDepositar
      [s]\tSacar
      [e]\tExtrato
      [nc]\tNova conta
      [lc]\tListar contas
      [nu]\tNovo usuário
      [q]\tSair
      => """
      return input(textwrap.dedent(menu))
  
  
  def depositar(saldo, valor, extrato, /):
      if valor > 0:
          saldo += valor
          extrato += f"Depósito:\tR$ {valor:.2f}\n"
          print("\n=== Depósito realizado com sucesso! ===")
      else:
          print("\n@@@ Operação falhou! O valor informado é inválido. @@@")
  
      return saldo, extrato
  
  
  def sacar(*, saldo, valor, extrato, limite, numero_saques, limite_saques):
      excedeu_saldo = valor > saldo
      excedeu_limite = valor > limite
      excedeu_saques = numero_saques >= limite_saques
  
      if excedeu_saldo:
          print("\n@@@ Operação falhou! Você não tem saldo suficiente. @@@")
  
      elif excedeu_limite:
          print("\n@@@ Operação falhou! O valor do saque excede o limite. @@@")
  
      elif excedeu_saques:
          print("\n@@@ Operação falhou! Número máximo de saques excedido. @@@")
  
      elif valor > 0:
          saldo -= valor
          extrato += f"Saque:\t\tR$ {valor:.2f}\n"
          numero_saques += 1
          print("\n=== Saque realizado com sucesso! ===")
  
      else:
          print("\n@@@ Operação falhou! O valor informado é inválido. @@@")
  
      return saldo, extrato
  
  
  def exibir_extrato(saldo, /, *, extrato):
      print("\n================ EXTRATO ================")
      print("Não foram realizadas movimentações." if not extrato else extrato)
      print(f"\nSaldo:\t\tR$ {saldo:.2f}")
      print("==========================================")
  
  
  def criar_usuario(usuarios):
      cpf = input("Informe o CPF (somente número): ")
      usuario = filtrar_usuario(cpf, usuarios)
  
      if usuario:
          print("\n@@@ Já existe usuário com esse CPF! @@@")
          return
  
      nome = 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/sigla estado): ")
  
      usuarios.append({"nome": nome, "data_nascimento": data_nascimento, "cpf": cpf, "endereco": endereco})
  
      print("=== Usuário criado com sucesso! ===")
  
  
  def filtrar_usuario(cpf, usuarios):
      usuarios_filtrados = [usuario for usuario in usuarios if usuario["cpf"] == cpf]
      return usuarios_filtrados[0] if usuarios_filtrados else None
  
  
  def criar_conta(agencia, numero_conta, usuarios):
      cpf = input("Informe o CPF do usuário: ")
      usuario = filtrar_usuario(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']}
          """
          print("=" * 100)
          print(textwrap.dedent(linha))
  
  
  def main():
      LIMITE_SAQUES = 3
      AGENCIA = "0001"
  
      saldo = 0
      limite = 500
      extrato = ""
      numero_saques = 0
      usuarios = []
      contas = []
  
      while True:
          opcao = menu()
  
          if opcao == "d":
              valor = float(input("Informe o valor do depósito: "))
  
              saldo, extrato = depositar(saldo, valor, extrato)
  
          elif opcao == "s":
              valor = float(input("Informe o valor do saque: "))
  
              saldo, extrato = sacar(
                  saldo=saldo,
                  valor=valor,
                  extrato=extrato,
                  limite=limite,
                  numero_saques=numero_saques,
                  limite_saques=LIMITE_SAQUES,
              )
  
          elif opcao == "e":
              exibir_extrato(saldo, extrato=extrato)
  
          elif opcao == "nu":
              criar_usuario(usuarios)
  
          elif opcao == "nc":
              numero_conta = len(contas) + 1
              conta = criar_conta(AGENCIA, numero_conta, usuarios)
  
              if conta:
                  contas.append(conta)
  
          elif opcao == "lc":
              listar_contas(contas)
  
          elif opcao == "q":
              break
  
          else:
              print("Operação inválida, por favor selecione novamente a operação desejada.")
  
  
  main()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant