1. Função para calcular o imposto de renda retido:
  • Esta função deve receber a base de cálculo como parâmetro.
  • Ela deve retornar o valor do imposto de renda retido de acordo com a tabela progressiva do IRPF.
Protótipo da função:
def calcular_imposto(base_calculo: float):
# Implemente aqui

Passo 1

O que o enunciado pede:
  • Implementar a função def calcular_imposto(base_calculo: float): que recebe a base de cálculo e retorna o valor do imposto de renda retido na fonte segundo a tabela progressiva do IRPF.
Informações relevantes (não havia tabela explícita no enunciado, portanto vou usar a tabela progressiva mensal frequentemente usada em exercícios e exemplos práticos):
  • faixa isenta: até \,1.903,98
  • faixa 1: de \,1.903,99 até \,2.826,65 — alíquota \,7{,}5\%, parcela a deduzir \,142,80
  • faixa 2: de \,2.826,66 até \,3.751,05 — alíquota \,15\%, parcela a deduzir \,354,80
  • faixa 3: de \,3.751,06 até \,4.664,68 — alíquota \,22{,}5\%, parcela a deduzir \,636,13
  • faixa 4: acima de \,4.664,68 — alíquota \,27{,}5\%, parcela a deduzir \,869,36
Observação importante: como o enunciado não especificou o ano/tabela, escolhi essa tabela clássica usada em muitos exercícios. Se a sua prova usa outra tabela, troca-se apenas os números.

Passo 2

Entendendo a regra de cálculo (a ideia por trás da fórmula que vamos implementar).
  • Há duas formas equivalentes de ver o imposto progressivo:
    1. Somar imposto por faixa marginal (calcular quanto incide em cada pedaço da base que ultrapassa cada limite).
    2. Usar, para cada faixa, uma fórmula direta do tipo \text{imposto} = \text{base} \times \text{alíquota} - \text{parcela\_a\_deduzir}í. Essa segunda forma é a prática adotada na retenção na fonte no Brasil: a parcela a deduzir é um ajuste que transforma o somatório marginal em uma expressão linear simples para cada faixa.
  • Vamos usar a forma direta porque é simples, compacta e adequada para implementação em prova/algoritmo.
Definição das variáveis (explicando a fórmula):
  • \text{base} é a entrada da função, ou seja, \text{base} = parâmetro \text{base\_calculo}.
  • \text{alíquota}í é a taxa percentual da faixa, por exemplo \,0,075 para \,7{,}5\%.
  • \text{parcela\_a\_deduzir} é um valor fixo associado àquela faixa.
  • Fórmula aplicada em cada faixa:
\text{imposto} = \text{base} \cdot \text{alíquota} - \text{parcela\_a\_deduzir}.í
Se o resultado for negativo (pode ocorrer por arredondamento), devolvemos \,0,00.

Passo 3

Algoritmo passo a passo que a função seguirá (explicado como se fosse para a prova):
  1. Recebo \text{base} (parâmetro \text{base\_calculo}). Se \text{base}\le 0, devolvo \,0,00.
  2. Verifico em qual faixa a \text{base} está, usando os limites da tabela:
    • Se \text{base}\le 1.903,98: isento \Rightarrow imposto =0,00.
    • Se 1.903,99 \le \text{base} \le 2.826,65: use \text{alíquota}=0,075í e \text{parcela}=142,80.
    • Se 2.826,66 \le \text{base} \le 3.751,05: use \text{alíquota}=0,15í e \text{parcela}=354,80.
    • Se 3.751,06 \le \text{base} \le 4.664,68: use \text{alíquota}=0,225í e \text{parcela}=636,13.
    • Se \text{base} > 4.664,68: use \text{alíquota}=0,275í e \text{parcela}=869,36.
  3. Calculo \text{imposto} = \text{base} \times \text{alíquota} - \text{parcela}í.
  4. Garanto que não devolvo valor negativo: \text{imposto} = \max(\text{imposto}, 0{,}00).
  5. Opcional (prático para a prova / para folha de pagamento): arredondo para 2 casas decimais e retorno o valor (por exemplo, usando arredondamento bancário simples com round(..., 2)).

Passo 4

Implementação em Python (o código que corresponde ao algoritmo acima). Aqui mostro o código comentado e didático para você entender cada linha antes de ver a resposta final:
  • Primeiro tratamos entradas inválidas (base menor ou igual a zero).
  • Em seguida usamos testes encadeados para identificar a faixa correta.
  • Aplicamos a fórmula direta e arredondamos.
(Explicação da escolha do teste: usar condições do tipo <= limite evita ambiguidades nas fronteiras, porque as faixas da tabela são definidas com limites fechados / abertos conforme apresentado.)

Passo 5

Exemplo numérico passo a passo (para consolidar a ideia):
  • Suponha \text{base} = 3.000,00.
  • Pela tabela, \,2.826,66 \le 3.000,00 \le 3.751,05, então estamos na faixa com \text{alíquota}=0,15í e \text{parcela}=354,80.
  • Aplicando a fórmula:
\text{imposto} = 3.000,00 \times 0,15 - 354,80 = 450,00 - 354,80 = 95,20.
  • Resultado: imposto retido = \,95,20.

Resposta

def calcular_imposto(base_calculo: float):
“”"
Calcula o imposto de renda retido na fonte segundo a tabela progressiva (exemplo clássico).
Retorna o valor do imposto (float), arredondado para 2 casas decimais.
Tabela usada (valores em R$):
- até 1.903,98: isento
- 1.903,99 a 2.826,65: 7,5% -> parcela a deduzir 142,80
- 2.826,66 a 3.751,05: 15% -> parcela a deduzir 354,80
- 3.751,06 a 4.664,68: 22,5% -> parcela a deduzir 636,13
- acima de 4.664,68: 27,5% -> parcela a deduzir 869,36
“”"
# entrada inválida ou isenção
if base_calculo is None or base_calculo <= 0:
return 0.0
if base_calculo <= 1903.98:
    return 0.0
elif base_calculo <= 2826.65:
    aliquota = 0.075
    parcela = 142.80
elif base_calculo <= 3751.05:
    aliquota = 0.15
    parcela = 354.80
elif base_calculo <= 4664.68:
    aliquota = 0.225
    parcela = 636.13
else:
    aliquota = 0.275
    parcela = 869.36

imposto = base_calculo * aliquota - parcela
imposto = max(imposto, 0.0)
return round(imposto, 2)

Exercícios relacionados