Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Comando Format

A minha dúvida se refere a formatação, no exemplo abaixo, foi definido que seriam 7 caracteres, 4 valores antes do ponto e mais duas casa decimais, porém ao testar o programa com um número maior de caracteres, vide abaixo, não houve nenhuma crítica quanto ao uso de 11 caracteres, é isso mesmo? Ou entendi tudo errado sobre a funcionalidade?

print("R$ {:7.2f}".format(123456789.50))
R$ 123456789.50
2 respostas

Laura,

Quando você usa :7.2f acredito que seja um total de 7 caracteres (inclusive o ponto e as 2 casas após o ponto) e 2 casas após o ponto. Em C era dessa forma, testei em Python e aparentemente segue da mesma forma.

Como seu número de exemplo (123456789.50) tem 12 caracteres não tem diferença alguma utilizar :7.2f ou :11.2 pois em ambos está estourando. Tente com por exemplo :13.2f e você poderá observar a diferença.

print("R$ {:7.2f}".format(123456789.50))
#R$ 123456789.50
print("R$ {:11.2f}".format(123456789.50))
#R$ 123456789.50
print("R$ {:13.2f}".format(123456789.50))
#R$  123456789.50
solução!

Olá Laura.

Vamos olhar o seu exemplo.

print("R$ {:7.2f}".format(123456789.50))
R$ 123456789.50

Nele o 7 é o numero minimo de caracteres, então se o tamanho do numero for menor ele preenche o que falta com espaços.

O 2 determina exatamente quantos números teremos depois da virgula.

Vamos a outro exemplo para entender melhor:

>>> print("R$ {:07.2f}".format(123.5000))
R$ 0123.50

Nesse exemplo fixamos que teremos dois números depois da virgula o restante é descartado, então ficamos com 123.50 que são seis caracteres (incluímos o ponto). Já que setamos que o minimo será sete o carácter que falta seria o espaço porem inclui o zero antes do sete então o resultado será 0123.50 .

Voltando no seu exemplo:

print("R$ {:7.2f}".format(123456789.50))
R$ 123456789.50

Fixamos que serão 2 números depois da virgula 123456789.50, um total de 12 caracteres e como 12 é maior que o minimo que colocamos que é 7 a String ficara do mesmo jeito.

R$ 123456789.50

Espero ter ajudado, qualquer duvida não hesite em perguntar.

Bons Estudos.