Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions 00 - Fundamentos/convertendo_tipos.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
print(int(1.97348728))
print(int("10"))
print(float("10.10"))
print(float(100))

valor = 10
valor_str = str(valor)
print(type(valor))
print(type(valor_str))

print(100 / 2)
print(100 // 2)
285 changes: 285 additions & 0 deletions 00 - Fundamentos/desafio.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,285 @@
LIMITE_SAQUES = 3
AGENCIA = "0001"
saldo = 0
limite = 500
extrato = ""
numero_saques = 0
enderecos = {}
usuarios = {}
contas_corrente = []

def menu():
return """

[1] Cadastrar Usuário
[2] Mostrar Usuários
[3] Criar conta
[4] Listar contas
[5] Depositar
[6] Sacar
[7] Extrato
[8] Sair

=> """

def menu_confirma_usuario():
return """

[n] Nome
[d] Data de nascimento
[c] Cpf
[e] Endereco
[p] Pronto

=> """

def confirma_nome_usuario():
while True:
nome = input("Digite o nome do usuario:")

confirmacao = input("Tem certeza que é esse o nome?[s/n]: ").lower()

if confirmacao == "s":
return nome
else:
return "Nome não cadastrado, tente novamente."

def confirma_data_nascimento():
while True:
data_nascimento = input("Digite a data de nascimento do usuario [DD/MM/AAAA]: ")

confirmacao = input("Tem certeza que é essa a sua data de nascimento?[s/n]: ").lower()

if confirmacao == "s":
return data_nascimento
else:
return "Data de nascimento não cadastrada, tente novamente"

def confirma_cpf_usuario():
while True:
cpf = input("Digite o cpf do usuario (apenas números): ").strip()

if len(cpf) != 11 or not cpf.isdigit():
print("Cpf deve conter exatamento 11 números. tente novamente")
continue
elif cpf in usuarios:
print("Esse cpf já é cadastrado. Tente novamente.")
continue

confirmacao = input("Tem certeza que é esse o seu cpf?[s/n]: ").lower()

if confirmacao == "s":
return cpf
else:
return "Cpf não cadastrada, tente novamente."

def format_endereco(logradouro, numero, bairro, cidade_sigla, estado):
return {
"logradouro": logradouro,
"numero": numero,
"bairro": bairro,
"cidade_sigla": cidade_sigla,
"estado": estado
}

def confirma_endereco():
print("\n--- Cadastro de Endereço ---")
logradouro = input("Logradouro (rua, avenida, etc.): ")
numero = input("Número: ")
bairro = input("Bairro: ")
cidade_sigla = input("Cidade/Sigla: ")
estado = input("Estado: ")

while True:
confirmacao = input("Confirma os dados do endereço? [s/n]: ").lower()
if confirmacao == "s":
return format_endereco(logradouro, numero, bairro, cidade_sigla, estado)
else:
print("Endereço não confirmado, vamos recomeçar:")
logradouro = input("Logradouro: ")
numero = input("Número: ")
bairro = input("Bairro: ")
cidade_sigla = input("Cidade/Sigla: ")
estado = input("Estado: ")


def cadastrar_usuario(nome, data_nascimento, cpf, endereco):
usuarios[cpf] = {
"nome": nome,
"data_nascimento": data_nascimento,
"endereco": endereco
}

return "Usuario cadastrado com sucesso!"


def menu_cadastro_usuario():
dados_usuario = {}

while True:
opc = input(menu_confirma_usuario()).lower()

match opc:
case "n":
dados_usuario['nome'] = confirma_nome_usuario()
print(f"Nome definido: {dados_usuario['nome']}")
case "d":
dados_usuario['data_nascimento'] = confirma_data_nascimento()
print(f"Data de nascimento definido: {dados_usuario['data_nascimento']}")
case "c":
dados_usuario['cpf'] = confirma_cpf_usuario()
print(f"CPF definido: {dados_usuario['cpf']}")
case "e":
dados_usuario['endereco'] = confirma_endereco()
print(f"Endereco definido: {dados_usuario['endereco']}")
case "p":
# Verifica se todos os dados foram preenchidos
campos_obrigatorios = ['nome', 'data_nascimento', 'cpf', 'endereco']
if all(campo in dados_usuario for campo in campos_obrigatorios):
resultado = cadastrar_usuario(
dados_usuario['nome'],
dados_usuario['data_nascimento'],
dados_usuario['cpf'],
dados_usuario['endereco']
)
print(resultado)
break
else:
print("Preencha todos os dados antes de finalizar!")
campos_faltantes = [campo for campo in campos_obrigatorios if campo not in dados_usuario]
print(f"Campos faltantes: {', '.join(campos_faltantes)}")

case _:
print("Opção inválida! Tente novamente.")

def confirma_cpf_conta():
while True:
cpf = input("Digite o cpf do usuario (apenas números): ").strip()

if len(cpf) != 11 or not cpf.isdigit():
print("Cpf deve conter exatamento 11 números. tente novamente")
continue
elif cpf not in usuarios:
print("Esse cpf não exitse. Cadastre um novo usuário ou tente novamente.")
continue

confirmacao = input(f"Confirma que o {usuarios[cpf]['nome']} é o titular?[s/n]: ").lower()

if confirmacao == "s":
return cpf
else:
return "Cpf não cadastrada, tente novamente."


def abrir_conta(agencia, numero_conta, usuarios):
cpf = confirma_cpf_conta()

if cpf is None:
return None

print("\nConta criada com sucesso!")
return {
"agencia": agencia,
"numero_conta": numero_conta,
"usuario": usuarios[cpf],
"cpf": cpf
}


def listar_contas(contas_corrente):
if not contas_corrente:
print("Nenhuma conta cadastrada.")
return

for i, conta in enumerate(contas_corrente, 1):
print(f"""
Conta {i}:
Agência:\t{conta['agencia']}
C/C:\t\t{conta['numero_conta']}
Titular:\t{conta['usuario']['nome']}
""")


def deposito(valor, saldo, extrato):
if valor > 0:
saldo += valor
extrato += f"Depósito: R$ {valor:.2f}\n"
print(f"Depósito de R$ {valor:.2f} realizado com sucesso!")
return saldo, extrato
else:
print("Operação falhou! O valor informado é inválido.")
return saldo, extrato

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

def saque(*, valor, saldo=saldo, extrato=extrato, numero_saques=numero_saques):
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.")
return saldo, extrato, numero_saques
elif excedeu_limite:
print("Operação falhou! O valor do saque excede o limite.")
return saldo, extrato, numero_saques
elif excedeu_saques:
print("Operação falhou! Número máximo de saques excedido.")
return saldo, extrato, numero_saques
elif valor > 0:
saldo -= valor
extrato += f"Saque: R$ {valor:.2f}\n"
numero_saques += 1
print(f"Saque de R$ {valor:.2f} realizado com sucesso!")
return saldo, extrato, numero_saques
else:
print("Operação falhou! O valor informado é inválido.")
return saldo, extrato, numero_saques

while True:
opc = input(menu())

match opc:
case "1":
menu_cadastro_usuario()
case "2":
if usuarios:
print("########-USUARIOS CADASTRADOS-########")
for cpf, dados in usuarios.items():
print(f"CPF: {cpf}")
print(f"Nome: {dados['nome']}")
print(f"Data de nascimento: {dados['data_nascimento']}")
print(f"Endereco: {dados['endereco']['logradouro']}, {dados['endereco']['numero']} - {dados['endereco']['bairro']} - {dados['endereco']['cidade_sigla']} {dados['endereco']['estado']}")
print("-" * 30)
else:
print("Nenhum usuario encontrado.")
case "3":
numero_conta = len(contas_corrente) + 1
conta = abrir_conta(AGENCIA, numero_conta, usuarios)
contas_corrente.append(conta)
case "4":
if contas_corrente:
listar_contas(contas_corrente)
else:
print("\nNão existem contas cadastradas.")
case "5":
valor = float(input("Informe o valor do depósito: "))
saldo, extrato = deposito(valor, saldo, extrato)
case "6":
valor = float(input("Informe o valor do saque: "))
saldo, extrato, numero_saques = saque(saldo=saldo,
valor=valor,
extrato=extrato,
numero_saques=numero_saques,
limite_saques=LIMITE_SAQUES,)
case "7":
extrair(extrato, saldo)
case "8":
print("Saindo do sistema...")
break
case _:
print("Operação inválida, por favor selecione novamente. a operação desejada.")
29 changes: 29 additions & 0 deletions 00 - Fundamentos/estrutura_condicional_aninhada.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
conta_normal = False
conta_universitaria = False
conta_especial = True

saldo = 2000
saque = 1500
cheque_especial = 450

if conta_normal:

if saldo >= saque:
print("Saque realizado com sucesso!")
elif saque <= (saldo + cheque_especial):
print("Saque realizado com uso do cheque especial!")
else:
print("Não foi possivel realizar o saque, saldo insuficiente!")

elif conta_universitaria:

if saldo >= saque:
print("Saque realizado com sucesso!")
else:
print("Saldo insuficiente!")

elif conta_especial:
print("Conta especial selecionada!")

else:
print("Sistema não reconheceu seu tipo de conta, entre em contato com o seu gerente.")
6 changes: 6 additions & 0 deletions 00 - Fundamentos/estrutura_condicional_ternaria.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
saldo = 2000
saque = 2500

status = "Sucesso" if saldo >= saque else "Falha"

print(f"{status} ao realizar o saque!")
18 changes: 18 additions & 0 deletions 00 - Fundamentos/estrutura_repeticao_break.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
while True:
numero = int(input("Informe um número: "))

if numero == 10:
break

if numero % 2 == 0:
continue

print(numero)


# for numero in range(100):

# if numero % 2 == 0:
# continue

# print(numero, end=" ")
15 changes: 15 additions & 0 deletions 00 - Fundamentos/estrutura_repeticao_for.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
texto = input("Informe um texto: ")
VOGAIS = "AEIOU"


# Exemplo utilizando um iterável
for letra in texto:
if letra.upper() in VOGAIS:
print(letra, end="")
else:
print() # adiciona uma quebra de linha


# Exemplo utilizando a função built-in range
for numero in range(0, 51, 5):
print(numero, end=" ")
11 changes: 11 additions & 0 deletions 00 - Fundamentos/estrutura_repeticao_while.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
opcao = -1

while opcao != 0:
opcao = int(input("[1] Sacar \n[2] Extrato \n[0] Sair \n: "))

if opcao == 1:
print("Sacando...")
elif opcao == 2:
print("Exibindo o extrato...")
else:
print("Obrigado por usar nosso sistema bancário, até logo!")
Loading