Created
March 31, 2024 17:40
-
-
Save jessicacardoso/026de6450afbed944d489affb80df4ff to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# cadastrar usuário e cadastrar conta | |
def criar_usuario(usuarios, cpfs): | |
print("Crie seu usuário") | |
nome = input("Nome: ") | |
data_nascimento = input("Data de nascimento (dd-mm-aaaa): ") | |
cpf = input("CPF (somente números): ") | |
if cpf in cpfs: | |
print("CPF já cadastrado.") | |
return | |
endereco = input("Endereço (logradouro, nro - bairro - cidade/sigla estado): ") | |
usuarios.append( | |
{ | |
"nome": nome, | |
"data_nascimento": data_nascimento, | |
"cpf": cpf, | |
"endereco": endereco, | |
} | |
) | |
cpfs.add(cpf) | |
def criar_conta(agencia, numero_conta, usuarios, contas, cpfs): | |
print("Crie sua conta") | |
cpf = input("CPF (somente números): ") | |
if cpf not in cpfs: | |
print("CPF não cadastrado.") | |
return | |
for usuario in usuarios: | |
if usuario["cpf"] == cpf: | |
contas.append( | |
{ | |
"agencia": agencia, | |
"numero_conta": numero_conta, | |
"usuario": usuario, | |
} | |
) | |
print("Conta criada com sucesso.") | |
return contas[-1] | |
def saque(*, saldo, valor, extrato, limite, numero_saques, limite_saques): | |
if numero_saques < limite_saques: | |
if valor > 0 and valor > limite: | |
print(f"Valor acima do limite de saque. Limite máximo de {limite} reais.") | |
elif saldo >= valor: | |
saldo -= valor | |
extrato += f"Saque de R$ {valor:.2f}\n" | |
numero_saques += 1 | |
else: | |
print("Saldo insuficiente.") | |
else: | |
print("Limite diário de saques atingido.") | |
return numero_saques, saldo, extrato | |
def deposito(saldo, valor, extrato, /): | |
if valor > 0: | |
saldo += valor | |
extrato += f"Depósito de R$ {valor:.2f}\n" | |
else: | |
print("Valor inválido.") | |
return saldo, extrato | |
def mostrar_extrato(saldo, /, *, extrato): | |
print("===============EXTRATO================") | |
print(f"Saldo atual: R$ {saldo:.2f}") | |
print("Extrato:") | |
print(extrato) | |
print("=====================================") | |
AGENCIA = "0001" | |
LIMITE_SAQUES = 3 | |
def main(): | |
saldo = 0 | |
limite = 500 | |
extrato = "" | |
numero_saques = 0 | |
usuarios = [] | |
contas = [] | |
cpfs = set() | |
print("Bem-vindo ao Banco do Python!") | |
menu = """ | |
[d] Depositar | |
[s] Sacar | |
[e] Extrato | |
[cu] Criar usuário | |
[cc] Criar conta | |
[q] Sair | |
=> """ | |
while True: | |
opcao = input(menu) | |
if opcao == "d": | |
valor = float(input("Quanto deseja depositar? ")) | |
saldo, extrato = deposito(saldo, valor, extrato) | |
elif opcao == "s": | |
valor = float(input("Quanto deseja sacar? ")) | |
numero_saques, saldo, extrato = saque( | |
saldo=saldo, | |
valor=valor, | |
extrato=extrato, | |
limite=limite, | |
numero_saques=numero_saques, | |
limite_saques=LIMITE_SAQUES, | |
) | |
elif opcao == "e": | |
mostrar_extrato(saldo, extrato=extrato) | |
elif opcao == "cu": | |
criar_usuario(usuarios, cpfs) | |
elif opcao == "cc": | |
conta = criar_conta(AGENCIA, len(contas) + 1, usuarios, contas, cpfs) | |
if conta: | |
print(f"Agência: {conta['agencia']}") | |
print(f"Número da conta: {conta['numero_conta']}") | |
print(f"Titular: {conta['usuario']['nome']}") | |
elif opcao == "q": | |
break | |
else: | |
print("Opção inválida.") | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment