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.