Dúvida Python

544 views
Skip to first unread message

vinici...@gmail.com

unread,
Apr 5, 2018, 4:20:48 PM4/5/18
to Python Brasil
Boa tarde a todos!

Estou começando a programar agora, então o código pode estar confuso.

Estou fazendo um programa que é o seguinte: 

Faça um programa em Python para o cálculo do desconto do Imposto de Renda (IR). 
A tabela atual do IR é a seguinte:

tabela1

- Há dedução no IR de R$ 179,71 por dependente, caso haja. 
- Também é possível deduzir despesas com previdência, pensão, entre outros.  
Uma função deve receber como parâmetros o salário líquido, caso tenha dependentes, o número de dependentes, e caso haja deduções, o valor das deduções
- Se o número de dependentes e/ou o valor das deduções não for informado, a função assume o valor 0 (zero) para esses parâmetros. 
A função deve devolver o valor do desconto do IR

Exemplo:
- Salário Líquido: R$ 4500,00
- Dependentes: 1
- Deduções: R$ 320,00
- Base de cálculo: R$ 4500,00 – R$ 179,71 – R$ 320,00 = R$ 4.000,29

- Alíquota de 22,5%. Desconto de:  R$ 900,07

- Utilize modularização para separar as funções e procedimentos do código principal do programa.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Código:

Só que na hora de compilar, o print da def condicoes(calculo) não aparece quando compilo.

Será que tem alguma coisa relacionada a variável cálculo que estou usando de forma errada nessa função?


salarioLiquido = float(input('Entre com o salário líquido que deseja calcular o desconto do Imposto de Renda: '))
dep = int(input('Entre com o número de dependentes: '))
deducoes = float(input('Entre com o valor total das deduções: '))


def dependentes(dep):
if dep == 1:
dep = 179.71
elif dep == 2:
dep = 179.71 * 2
elif dep == 3:
dep = 179.71 * 3
elif dep == 4:
dep = 179.71 * 4
elif dep == 5:
dep = 179.71 * 5
elif dep == 6:
dep = 179.71 * 6
elif dep == 7:
dep = 179.71 * 7
elif dep == 8:
dep = 179.71 * 8
elif dep == 9:
dep = 179.71 * 9
elif dep == 10:
dep = 179.71 * 10
return dep
dependentes(dep)

def subtracao(deducoes):
calculo = salarioLiquido - dependentes(dep) - deducoes
#print('\n--------------------Cálculo-------------------')
#print('- O salário junto com as deduções é: {}'.format(calculo))
return calculo
subtracao(deducoes)

def condicoes(calculo):
if calculo <= 1787.77:
print('Você está isento do Imposto de Renda!')
elif calculo >= 1787.78 and calculo <= 2679.29:
calculo = (calculo * 7.5) / 100
print('Alíquota de 7,5%. Desconto de:{}'.format(calculo))
elif calculo >= 2678.30 and 3572.43:
calculo = (calculo * 15) / 100
print('Alíquota de 15,0%. Desconto de:{}'.format(calculo))
elif calculo >= 3572.44 and calculo <= 4463.81:
calculo = (calculo * 22.5) / 100
print('Alíquota de 22,5%. Desconto de:{}'.format(calculo))
elif calculo > 4463.81:
calculo = (calculo * 27.5) / 100
print('Alíquota de 27,5%. Desconto de:{}'.format(calculo))
subtracao(deducoes)
Auto Generated Inline Image 1

Linux - Junior Polegato

unread,
Apr 5, 2018, 4:38:45 PM4/5/18
to python...@googlegroups.com
Em 05-04-2018 17:20, vinici...@gmail.com escreveu:
[...] Só que na hora de compilar, o print da def condicoes(calculo) não aparece quando compilo.

Será que tem alguma coisa relacionada a variável cálculo que estou usando de forma errada nessa função?

[...]


Olá!

        É que você nunca está chamando a função "condicoes", está na verdade chamando "subtracao" no final, erro comum de copiar e colar... rsrs

-- 

[]'s

Junior Polegato

vinici...@gmail.com

unread,
Apr 5, 2018, 4:42:08 PM4/5/18
to Python Brasil
Na hora que vi isso você me respondeu kkk

Agora está isso: NameError: name 'calculo' is not defined, na linha 52.

Preciso definir o nome calculo? Como faço isso?

Linux - Junior Polegato

unread,
Apr 5, 2018, 5:15:16 PM4/5/18
to python...@googlegroups.com
Em 05-04-2018 17:42, vinici...@gmail.com escreveu:
> Na hora que vi isso você me respondeu kkk
> Agora está isso: NameError: name 'calculo' is not defined, na linha 52.
> Preciso definir o nome calculo? Como faço isso?

Acho que a variável que você quer passar para essa função seja o salário
líquido que o usuário digitou no início do seu programa. A variável
"calculo" não exite no seu programa, ela existe somente dentro da sua
função.

Mais um dica: usar os "ifs" para calcular o desconto dos dependentes não
ficou legal, seria melhor trocar tudo por "return dep * 179.71".

Outra coisa, o cálculo o IR é feito por faixas, então você tem que usar
a tabela de decréscimos ou calcular cada faixa separadamente e ir somando.

--

[]'s

Junior Polegato

vinici...@gmail.com

unread,
Apr 5, 2018, 7:53:45 PM4/5/18
to Python Brasil
Eu queria passar a variável calculo da função subtracao(deducoes) e não o salário líquido que o usuário coloca.

vinici...@gmail.com

unread,
Apr 5, 2018, 8:03:23 PM4/5/18
to Python Brasil
Assim, com a variável calculo da função subtracao, eu veria em qual faixa ela entraria pra fazer o calculo na função condicoes.

Linux - Junior Polegato

unread,
Apr 6, 2018, 2:42:23 AM4/6/18
to python...@googlegroups.com
Em qui, 5 de abr de 2018 21:03, <vinici...@gmail.com> escreveu:
Assim, com a variável calculo da função subtracao, eu veria em qual faixa ela entraria pra fazer o calculo na função condicoes.

Olá!

Você teria que chamar então "condicoes(subtracao(deducoes))", lembrando que a forma como você está fazendo está errada, pois tem que calcular o percentual de cada faixa sobre o valor menos a base e somar os resultados, ou calcular direto como você está fazendo e subtrair um valor redutor para cada faixa, geralmente fornecido, mas como não foi fornecido você precisará calcular e colocar na seu código.

[]'s

Junior Polegato
Reply all
Reply to author
Forward
0 new messages