Formatando números na função print

Você foi contratado pela Caixa Econômica Federal para atualizar seu sistema.
Como primeira tarefa, você vai criar um script que diga quanto cada ganhador da Mega-Sena vai receber, ao ter o prêmio dividido com outros ganhadores.


Solução:
Faça com que o programa peça um valor (float) ao usuário, que é um valor em dinheiro do prêmio.

Em seguida, peça o número de pessoas (inteiro) que acertaram.
Por fim, exibimos quanto cada um vai ganhar.

Nosso código fica:

# Prêmio da Mega-Sena
total = float( input('Premio total da Mega: ') )

# Número de ganhadores
num = int( input('Numero de ganhadores: ') )

print('Cada um vai ficar com R$ ', (total/num) )


Mas veja como ficou a saída quando colocamos o prêmio de 1 milhão de reais para 3 pessoas:
Mudar casas decimais exibidas
Mas...que número feio! R$ 333333.333333333 ?



Formatando Números em Python

Ninguém escreve com tantas casas decimais, nem existe esse valor pequeno de centavos.

O correto é ter apenas duas casas decimais, ou seja, dois números depois da vírgula.

Para isso, vamos usar o operador %f, que representa um decimal que iremos formatar (mudar a forma como é exibido).

Por exemplo, se eu usar %.2f, o Python vai entender que quer duas casas decimais após o ponto.

Se usar %.1f, o Python exibe só uma casa decimal.

Colocamos esse treco aí dentro da função print.
Mas, calma, não vai aparecer isso aí, e sim o número que colocamos na função print.

Veja um exemplo correto do código anterior:

# Prêmio da Mega-Sena
total = float( input('Premio total da Mega: ') )

# Número de ganhadores
num = int( input('Numero de ganhadores: ') )

print('Cada um vai ficar com R$ %.2f' % (total/num) )

Pronto, agora o resultado vai ser:
Como programar em Python

Veja agora este outro exemplo de formatação:

# Prêmio da Mega-Sena
total = float( input('Premio total da Mega: ') )

# Número de ganhadores
num = int( input('Numero de ganhadores: ') )

print('O premio total foi R$%.2f para %d ganhadores, onde cada um ficou \
com R$%.2f' %(total,num,total/num))

Usamos %.2f duas vezes, para os valores em dinheiro, decimais.
Para o número inteiro 'num', se usa %d

8 comentários:

  1. # Divisão de prêmio
    valorPremio = float(input('Valor total do prêmio: '))

    # Total de ganhadores
    totalGanhodores = int(input('Total de ganhadores: '))

    # print('Cada ganhadores receberá R$ %.2f ' %(valorPremio / totalGanhodores))

    print('O premio total foi R$ %.2f para %d ganhadores, onde cada um ficou \
    com R$ %.2f' %(valorPremio,totalGanhodores,valorPremio/totalGanhodores))

    ResponderExcluir
  2. Muito obrigada pela explicação, entendi perfeitamente!

    ResponderExcluir
  3. mega_sena = float(input("Valor total da Mega: "))
    ganhadores = int(input("Numero de ganhadores: "))
    calculo = mega_sena/ganhadores
    print(f"O premio total foi R${mega_sena:.2f} para {ganhadores} ganhadores onde cada um ficou com R${calculo:.2f}")

    ResponderExcluir
  4. Obrigado por compartilhar a informação

    ResponderExcluir
  5. #Mega-Sena
    total=float(input('Valor Total: '))
    ganhadores=int(input('Numero de Ganhadores: '))
    print('Premio total: R$%.2f , para %d ganhadores, '
    'onde cada um ficou com R$%.2f.'%(total,ganhadores,total/ganhadores))

    ResponderExcluir
  6. Olá pessoal.
    Como formatar a saída de valores financeiros desta forma:
    R$ xx.xxx,xx - Padrão Brasil
    Grande abraço

    ResponderExcluir
    Respostas
    1. Em minhas pesquisas, encontrei a solução a seguir no site
      Formatação de moeda e internacionalização com Python. Lá,
      você encontrará:

      from decimal import Decimal
      import locale
      locale.setlocale(locale.LC_ALL, 'pt_BR')
      valor = Decimal('1254897.25')
      print(locale.currency(valor, grouping=True))

      O resultado será:

      R$1.254.897,25
      Espero ter ajudado.

      Excluir
  7. como eu faço pra deixar esse comm duas casas decimais

    r = float(input())
    pi = 3.14159
    print (2 * r)
    print (pi * r ** 2)
    print (2 * r * pi )

    ResponderExcluir