Software Design

Design de software em C, C++, Java, etc…

Primeiros passos com python: Calculando Imposto de Renda e INSS

Estou lendo um pouco sobre python. Em breve vou escrever um pouco mais sobre esta linguagem e fazer algumas comparações.

Hoje encontrei este código de exemplo que achei interessante:

# wages.py
# Computes the taxes and wages for an employee given the
# number of hours worked and their pay rate.
# Set tax rates as constants.
STATE_TAX_RATE = 0.035
FED_TAX_RATE = 0.15

# Extract data from the user.
employee = raw_input( "Employee name: " )
hours = float( raw_input( "Hours worked: " ) )
payRate = float( raw_input( "Pay rate: " ) )

# Compute the employee's taxes and wages.
wages = hours * payRate
stateTaxes = wages * STATE_TAX_RATE
fedTaxes = wages * FED_TAX_RATE
takeHome = wages - stateTaxes - fedTaxes

# Print the results.
print "PAY REPORT"
print "Employee: ", employee
print "----------------------------------"
print "Wages:       ", wages
print "State Taxes: ", stateTaxes
print "Fed Taxes:   ", fedTaxes
print "Pay:         ", takeHome

Referência: http://python4java.necaiseweb.org/Fundamentals/UserInteraction.

Como esses gringos são felizes né? Olha como é fácil calcular os impostos deles…

Bom, resolvi adaptar esse script pra nossa realidade. Depois de alguns minutos pesquisando como é calculado o IRPF aqui ( seguindo informações da receita ), cheguei ao seguinte script:

#!/usr/bin/python

# impostos.py
# Calcula o valor do INSS e Imposto de Renda descontados em folha do funcionario

def readFloat(s, d):
  v = raw_input (s)
  if not v: 
    return d
  return float(v)

FAIXAS = [ 3743.19, 2995.70, 2246.75, 1499.15 ]
ALIQUOTAS = [ 27.5, 22.5, 15.0, 7.5 ]
VALOR_DEP = 150.69

nome = raw_input( "Nome: " )
salarioBruto = readFloat("Salario Bruto(1000): ",1000)
inss = readFloat("Aliquota INSS ( % ): ", 11)
dependentes = readFloat("Dependentes: ",0)
pensao_alim = readFloat("Pensao Alimenticia: ", 0) 
outras_deduc = readFloat("Outras Deducoes: ", 0) 

valorInss = salarioBruto * (inss/100)

saldoIR = salarioBruto - valorInss - (dependentes * VALOR_DEP) - pensao_alim - outras_deduc
valorIR = 0
for a,b in zip(FAIXAS, ALIQUOTAS):
  if saldoIR > a: 
    valorIR += ( saldoIR - a ) * ( b/100 )
    saldoIR -= ( saldoIR - a ); 

salarioLiquido = salarioBruto - valorInss - valorIR

print "************ RESUMO **************"
print "Nome.........: ", nome
print "----------------------------------"
print "Salario Bruto:", salarioBruto
print "INSS.........:", valorInss
print "IR...........:", valorIR
print "Liquido......:", salarioLiquido

Um pouco mais complicado que o script gringo, mas nada absurdo.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado às julho 3, 2012 por em Python e marcado , , , .
%d blogueiros gostam disto: