3
respostas

Transformando Float em Int

impostos = ['MEI', 'Simples', 'Imposto de Renda']
taxa_impostos = [5.0, 4.0, 27.5]
novo_imposto = []

for imposto in impostos:
  imposto = imposto.strip().upper()
  novo_imposto.append(imposto)
print(novo_imposto)

imposto = input('Digite o Imposto: ')
imposto = imposto.strip().upper()
print(f'Taxa do Imposto: {taxa_impostos[novo_imposto.index(imposto)]} %')

Suponhamos que eu tenha o código acima, porém, eu gostaria de transformar apenas os números da lista 'taxa_impostos' que tenham o 0 após o ponto em inteiros.

Exemplo:

Esse é o meu print atual:

Digite o Imposto: mei Taxa do Imposto: 5.0 %

Eu gostaria que o print ficasse assim:

Digite o Imposto: mei Taxa do Imposto: 5 %

Porém, apenas quando a taxa tem o 0 depois do ponto.

3 respostas

Faaala Rafael, tudo tranquilo?

Você pode percorrer a lista e ver se o resto da divisão daquele número por 1 tem resto zero ou não. Caso não tenha resto você converte para inteiro e caso tenha resto, você não modifica. Pois, observe:

  • Qual o resto da divisão de 5.0 por 1? 0.0
  • Qual o resto da divisão de 27.5 por 1? 0.5
impostos = ['MEI', 'Simples', 'Imposto de Renda']
taxa_impostos = [5.0, 4.0, 27.5]
novo_imposto = []

for imposto in impostos:
  imposto = imposto.strip().upper()
  novo_imposto.append(imposto)
print(novo_imposto)

for i in range(len(taxa_impostos)):
    if(taxa_impostos[i] % 1 == 0.0):
       taxa_impostos[i] = int(taxa_impostos[i])

imposto = input('Digite o Imposto: ')
imposto = imposto.strip().upper()
print(f'Taxa do Imposto: {taxa_impostos[novo_imposto.index(imposto)]} %')

Qualquer dúvida é só falar. Espero ter ajudado. Abraços e bons estudos!

Faaala Nádia, bom dia.

Deu certo, ficou top !!! Só que eu, garoto novo na programação, não entendi um detalhe.

Eu tentei o código abaixo, ele deu certo, porém fora do meu código, quando eu levo ele para dentro do código, ele não funciona.

for i in taxa_impostos:
  if i % 1 == 0.0:
    i = int(i)
  print(i)

Fiquei com essa dúvida, pois vc utilizou range(len(taxa_impostos)), trazendo o índice da lista, eu não entendi.

Ei Rafael, bom dia.

Nesse caso foi utilizado o: for i in range(len(taxa_impostos)), porque precisaríamos alterar a lista onde tivesse resto igual 0.0.

Caso fosse apenas percorrer a lista para printar algum valor dentro do for, o for i in taxa_impostos seria uma boa opção, porém como temos que alterar algum valor, precisamos do índice daquele valor contido na lista.

O que é feito em: for i in range(len(taxa_impostos)) é percorrer a lista pelo índice para chegar ao valor que está naquela posição. Por exemplo:

  • taxa_impostos na posição 0
  • taxa_imposto na posição 1
  • taxa_imposto na posição 2

E esse índice é incrementado até chegar ao tamanho final da lista. Então se a lista tem tamanho 3, o i será:

  • 0
  • 1
  • 2

Então, quando é necessário fazer a alteração, o que o programa faz é ir lá na posição 0 da lista e converter aquele valor daquela posição para inteiro, excluindo assim a parte fracionária.

Pegou a ideia?

Qualquer dúvida é só falar. Abraços e bons estudos!