(0.5) Você deve criar um programa em Python para simular as transações bancárias de um cliente, sendo C para crédito e D para despesa. Para cada dia, deve-se solicitar ao usuário o saldo bancário e, em seguida, o código da operação (C ou D) e o valor. Ao final, o programa deve informar o saldo final em conta.
Passo 1
O enunciado pede que você faça um programa em Python que simule transações bancárias de um cliente. As regras e informações dadas são:
- Cada transação tem um código:
para crédito (entra dinheiro) e para despesa (sai dinheiro). - Para cada dia, deve-se solicitar ao usuário o saldo bancário e, em seguida, o código da operação e o valor.
- Ao final, o programa deve informar o saldo final em conta.
Perguntas que o programa precisa responder (o que o enunciado quer que o programa faça):
- Como vamos receber os dados do usuário (quantos dias, ou até quando)?
- Como vamos aplicar cada operação ao saldo para obter o saldo final?
- Que validações vamos fazer (por exemplo: código inválido, valor negativo)?
Observação: o enunciado é curto e deixa ambiguidade sobre se pedimos o saldo no início apenas uma vez ou em cada dia. Vou escolher uma forma prática e clara para a prova (veja explicação no próximo passo).
Passo 2
Decisão do método (por que escolhi assim):
- Para eliminar ambiguidade e manter o programa simples e determinístico na prova, vou pedir primeiro ao usuário quantos dias de transações ele quer registrar — ou seja, a quantidade de operações
, (um inteiro). Isso torna claro quando o programa termina. - Em seguida peço o saldo inicial uma única vez (saldo antes do primeiro dia). A partir desse saldo inicial aplico as
, operações, uma por dia, atualizando o saldo a cada operação.
Justificativa: pedir o número de dias é uma forma comum e robusta de controlar repetição em exercícios de programação iniciante, evita sentinelas ambíguas e é fácil de explicar e testar na prova.
Passo 3
Algoritmo em alto nível (pseudocódigo) — leia com calma como se fosse uma receita:
- Ler
, = número de dias (quantidade de operações). Valide que , é inteiro positivo. - Ler
, (número real). Inicializar ,. - Para dia = 1 até
, faça: - Pedir o código da operação (aceitar maiúsculas/minúsculas). Repetir até o usuário digitar
ou . - Pedir o valor da operação (número real não negativo). Repetir até ser um número válido >= ,0,.
- Se código for
então , (crédito). - Se código for
então , (despesa). - (Opcional) Mostrar o saldo parcial após a operação.
- Pedir o código da operação (aceitar maiúsculas/minúsculas). Repetir até o usuário digitar
- Ao final, imprimir o saldo final com duas casas decimais.
Passo 4
Explicando as partes do programa em Python, passo a passo, de forma didática (para você aplicar na prova):
- Ler um inteiro positivo
,:
- Função:
input(prompt)retorna uma string. Para transformar em inteiro usamosint(...). - Como o usuário pode digitar algo errado (texto, número negativo), usamos um
whilecomtry/exceptpara insistir até receber um inteiro válido e maior que zero. - Exemplo rápido:
n = int(input("Quantos dias? "))pode travar se o usuário digitar “x”. Por isso usamostry.
- Ler saldo inicial (número real):
- Usamos
float(...)para converter. Em português muitos usuários digitam,como separador decimal; para tornar o programa amigável podemos trocar vírgula por ponto antes de converter:s.replace(',','.'). - Também validamos com
try/except.
- Loop principal (repetição
, vezes):
for dia in range(1, n+1):percorre os dias deaté ,. - Para o código da operação: pedimos
op = input(...).strip().upper()—strip()tira espaços sobrando eupper()converte para maiúscula, assim aceitamosc,C,detc. - Repetimos (
while) atéopestar em('C','D'). Isso evita processar um código inválido.
- Ler o valor da operação:
- Novamente,
float(...)com tratamento de vírgula. Validamos que o valor não seja negativo; caso seja, pedimos novamente.
- Atualizar o saldo:
- Se
op == 'C'entãosaldo += valor. - Se
op == 'D'entãosaldo -= valor. - Isso é só aritmética básica: somar ou subtrair do acumulador
saldo.
- Mostrar o resultado final:
- Para imprimir com duas casas decimais usamos formatação:
print(f"Saldo final: {saldo:.2f}"). O:.2fformata o número com duas casas decimais, com arredondamento tradicional.
Dica prática: escreva e teste parte por parte — primeiro leitura de
, depois saldo, depois um loop simples, depois adicione validações. Vai dar mais segurança na prova!
Passo 5
Exemplo de interação esperada (para você imaginar o fluxo):
- Programa pergunta: “Quantos dias?” → você digita
. - Programa pergunta: “Saldo inicial:” → você digita
(o programa aceita vírgula). - Dia 1: pede código (C/D) e valor; você digita
De200. Saldo vira 800,50. - Dia 2: digita
Ce150,75. Saldo vira 951,25. - Dia 3: digita
De50. Saldo final: 901,25.
No final o programa imprimeSaldo final: 901.25(ou com vírgula, dependendo do formato; aqui usamos ponto nofloatpadrão).
Resposta
# Programa para simular transações bancárias (C = crédito, D = despesa)
# Lê um inteiro positivo: número de dias (n)
while True:
try:
n = int(input("Quantos dias (n)? "))
if n <= 0:
print("Digite um número inteiro positivo para a quantidade de dias.")
continue
break
except ValueError:
print("Entrada inválida. Digite um número inteiro para os dias.")
# Lê saldo inicial (aceita vírgula ou ponto como separador decimal)
while True:
s = input("Saldo inicial: ").strip()
try:
s = s.replace(",", ".")
saldo = float(s)
break
except ValueError:
print("Saldo inválido. Digite um número (ex.: 1000.50 ou 1000,50).")
# Faz n operações, uma por dia
for dia in range(1, n + 1):
print(f"\n--- Dia {dia} ---")
# lê código da operação e valida
while True:
op = input("Código da operação (C para crédito, D para despesa): ").strip().upper()
if op in ("C", "D"):
break
print("Código inválido. Digite 'C' para crédito ou 'D' para despesa.")
# lê valor da operação e valida
while True:
v = input("Valor da operação: ").strip()
try:
v = v.replace(",", ".")
valor = float(v)
if valor < 0:
print("Valor inválido. Digite um valor não negativo.")
continue
break
except ValueError:
print("Valor inválido. Digite um número (ex.: 250.75 ou 250,75).")
# aplica a operação ao saldo
if op == "C":
saldo += valor
else: # op == "D"
saldo -= valor
print(f"Saldo após o dia {dia}: {saldo:.2f}")
# Imprime saldo final
print(f"\nSaldo final: {saldo:.2f}")