2
respostas

Caixa eletronico simples - O que acham?

Depois de terminar esse primeiro curso, resolvi me aventurar e criar um sistema simples de caixa eletrônico, gostaria de saber o que acharam do código, se posso melhorar em algo... Enfim, segue o código:

import random

print('\nOlá, digite seus dados de acesso para poder efetuar um saque no caixa 24 horas.\n')

#Variaveis globais
balance = 1000
withdraw = 5
account_data = 0

cpf = int(input('Digite seu CPF: '))
password = int(input('Digite sua senha: '))

#Introdução ao bloco de sistemas
if (cpf == 123 and password == 123):
    print('Olá, seja muito bem vindo a sua conta')
    print('(1) Extrato\n(2) Sacar\n(3) Depositar\n(4) Fechar')
    account_data = int(input('Digite o que você deseja realizar: '))

if (account_data == 1):
    account_number = random.randint(1000,9999) #Gerar números aleatórios entre 1000 e 9999
    print('Número da conta:', account_number)
    print('Saldo: R$', balance)
    print('Saques disponíveis:', withdraw)

elif(account_data == 2):
    withdraw_ok = int(input('Digite o valor que você deseja sacar: '))
    if(withdraw_ok <= balance):
        balance = balance - withdraw_ok #Conta simples pra somar o valor da variavel balance depois de realizar o saque
        print('Você sacou R${} da sua conta.'.format(withdraw_ok))
        print('Agora você tem R${} disponível em conta.'.format(balance))
        withdraw = withdraw -1 #Conta simples pra saber quantos saques podem ser realizados
        print('Você só pode realizar mais {} saques da sua conta.'.format(withdraw))
    if(withdraw_ok >= balance): 
        print('Você não tem esse valor disponível na conta!')

elif(account_data == 3):
    deposit = int(input('Digite o valor que você deseja depositar: '))
    balance = deposit + balance #Conta simples pra saber o valor que tem na conta após depositar
    print('Você depositou R${} na sua conta com sucesso e ficou com R${} disponível na conta!'.format(deposit, balance))    

elif(account_data == 4):
    exit
else:
    print('Dados inválidos')
2 respostas

Olá Kauan, tudo bem com você?

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado com a comunidade do fórum Alura.

Uma dica sobre a função exit(), ela tem como objetivo finalizar um código de forma “graciosa”, para que seu uso seja realizado de forma correta devemos utilizar os dois parênteses.

Uma outra implementação que podemos fazer com o uso da função é informarmos uma mensagem padrão que será apresentada para o usuário, como no exemplo a seguir.

elif(account_data == 4):
    exit('Agradecemos pelo uso do nosso sistema.')
else:
    print('Dados inválidos')

Conte sempre com o fórum, seja para compartilhar o seu desenvolvimento ou para tirar dúvidas.

Abraços e bons estudos.

Olá Kauan, tudo bem?

Seu código ficou muito! Porém percebi um pequeno problema nele. Quando a opção 2 é selecionada, caso sua variável withdraw_ok seja igual a ao balance seu programa vai executar os dois if.

elif(account_data == 2):
    withdraw_ok = int(input('Digite o valor que você deseja sacar: '))
    if(withdraw_ok <= balance):
        balance = balance - withdraw_ok #Conta simples pra somar o valor da variavel balance depois de realizar o saque
        print('Você sacou R${} da sua conta.'.format(withdraw_ok))
        print('Agora você tem R${} disponível em conta.'.format(balance))
        withdraw = withdraw -1 #Conta simples pra saber quantos saques podem ser realizados
        print('Você só pode realizar mais {} saques da sua conta.'.format(withdraw))
    if(withdraw_ok >= balance): 
        print('Você não tem esse valor disponível na conta!')

Imprimindo assim as seguintes mensagens: Você sacou R$1000 da sua conta. Agora você tem R$0 disponível em conta. Você só pode realizar mais 4 saques da sua conta. Você não tem esse valor disponível na conta!

Para evitar esse comportamento você pode trocar o segundo if por um else.

elif(account_data == 2):
    withdraw_ok = int(input('Digite o valor que você deseja sacar: '))
    if(withdraw_ok <= balance):
        balance = balance - withdraw_ok #Conta simples pra somar o valor da variavel balance depois de realizar o saque
        print('Você sacou R${} da sua conta.'.format(withdraw_ok))
        print('Agora você tem R${} disponível em conta.'.format(balance))
        withdraw = withdraw -1 #Conta simples pra saber quantos saques podem ser realizados
        print('Você só pode realizar mais {} saques da sua conta.'.format(withdraw))
    else: 
        print('Você não tem esse valor disponível na conta!')

Agora vão algumas sugestões para incrementar seu código. Quando vamos imprimir valores monetários é interessante formata-los. A formatação mais comum de se utilizar é a seguinte: print('R$ {:.2f}'.format(balance)), assim seu valor vai estar formatado com duas casas decimais para os centavos.

Outra sugestão é adicionar um else depois do seu ultimo elif account_data == 4: para caso o usuário escolha alguma opção diferente das disponíveis

    elif account_data == 4:
        exit('Agradecemos pelo uso do nosso sistema.')
    else:
        print('Opção inválida!')

E por ultimo, mas não menos importante, todos os if para verificação do variável account_data deveriam estar indentados, para uma melhor compreensão do código, pois eles só devem ser executados caso seu primeiro if, que verifica o cpf e senha seja verdadeiro.

Segue o código completo com as mudanças sugeridas:

import random

print('\nOlá, digite seus dados de acesso para poder efetuar um saque no caixa 24 horas.\n')

#Variaveis globais
balance = 1000
withdraw = 5
account_data = 0

cpf = int(input('Digite seu CPF: '))
password = int(input('Digite sua senha: '))

#Introdução ao bloco de sistemas
if cpf == 123 and password == 123:
    print('Olá, seja muito bem vindo a sua conta')
    print('(1) Extrato\n(2) Sacar\n(3) Depositar\n(4) Fechar')
    account_data = int(input('Digite o que você deseja realizar: '))

    if account_data == 1:
        account_number = random.randint(1000,9999) #Gerar números aleatórios entre 1000 e 9999
        print('Número da conta:', account_number)
        print('Saldo: R${:.2f}'.format(balance))
        print('Saques disponíveis:', withdraw)

    elif account_data == 2:
        withdraw_ok = int(input('Digite o valor que você deseja sacar: '))
        if withdraw_ok <= balance:
            balance = balance - withdraw_ok #Conta simples pra somar o valor da variavel balance depois de realizar o saque
            print('Você sacou R${:.2f} da sua conta.'.format(withdraw_ok))
            print('Agora você tem R${:.2f} disponível em conta.'.format(balance))
            withdraw = withdraw -1 #Conta simples pra saber quantos saques podem ser realizados
            print('Você só pode realizar mais {} saques da sua conta.'.format(withdraw))
        else:
            print('Você não tem esse valor disponível na conta!')

    elif account_data == 3:
        deposit = int(input('Digite o valor que você deseja depositar: '))
        balance = deposit + balance #Conta simples pra saber o valor que tem na conta após depositar
        print('Você depositou R${:.2f} na sua conta com sucesso e ficou com R${:.2f} disponível na conta!'.format(deposit, balance))

    elif account_data == 4:
        exit('Agradecemos pelo uso do nosso sistema.')
    else:
        print('Opção inválida!')
else:
    print('Dados inválidos')

Abraços e bons estudos.