(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: "C" para crédito (entra dinheiro) e "D" 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):
  1. Como vamos receber os dados do usuário (quantos dias, ou até quando)?
  2. Como vamos aplicar cada operação ao saldo para obter o saldo final?
  3. 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 \,n, (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 \,n, 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, = número de dias (quantidade de operações). Valide que \,n, é inteiro positivo.
  • Ler \,saldo\_inicial, (número real). Inicializar \,saldo = saldo\_inicial,.
  • Para dia = 1 até \,n, faça:
    • Pedir o código da operação (aceitar maiúsculas/minúsculas). Repetir até o usuário digitar "C" ou "D".
    • 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 "C" então \,saldo = saldo + valor, (crédito).
    • Se código for "D" então \,saldo = saldo - valor, (despesa).
    • (Opcional) Mostrar o saldo parcial após a operação.
  • 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):
  1. Ler um inteiro positivo \,n,:
  • Função: input(prompt) retorna uma string. Para transformar em inteiro usamos int(...).
  • Como o usuário pode digitar algo errado (texto, número negativo), usamos um while com try/except para 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 usamos try.
  1. 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.
  1. Loop principal (repetição \,n, vezes):
  • for dia in range(1, n+1): percorre os dias de \,1 até \,n,.
  • Para o código da operação: pedimos op = input(...).strip().upper()strip() tira espaços sobrando e upper() converte para maiúscula, assim aceitamos c, C, d etc.
  • Repetimos (while) até op estar em ('C','D'). Isso evita processar um código inválido.
  1. 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.
  1. Atualizar o saldo:
  • Se op == 'C' então saldo += valor.
  • Se op == 'D' então saldo -= valor.
  • Isso é só aritmética básica: somar ou subtrair do acumulador saldo.
  1. Mostrar o resultado final:
  • Para imprimir com duas casas decimais usamos formatação: print(f"Saldo final: {saldo:.2f}"). O :.2f formata o número com duas casas decimais, com arredondamento tradicional.
Dica prática: escreva e teste parte por parte — primeiro leitura de \,n, 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 "3".
  • Programa pergunta: “Saldo inicial:” → você digita "1000,50" (o programa aceita vírgula).
  • Dia 1: pede código (C/D) e valor; você digita D e 200. Saldo vira 800,50.
  • Dia 2: digita C e 150,75. Saldo vira 951,25.
  • Dia 3: digita D e 50. Saldo final: 901,25.
    No final o programa imprime Saldo final: 901.25 (ou com vírgula, dependendo do formato; aqui usamos ponto no float padrã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}")

Exercícios relacionados