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

Duvida na formatação

Estou com duvida na formatação dos zeros, gostaria de saber como funciona essa função ":02d". E sempre que eu tiver que formatar sem uma menssagem eu devo colocar "f" antes da data ou do que eu quero inserir?

class Data:
    def __init__(self, dia, mes, ano):
        self.dia = 3
        self.mes = 8
        self.ano = 2021


    def imprimir_data(self):
        imprime = print("Hoje é {}, em Goiânia.".format(f'{self.dia:02d}/{self.mes:02d}/{self.ano:02d}'))
4 respostas

Olá,

essa é uma das formas de utilizar. Nesse caso, vc está utilizando f-string, introduzidas a partir da versão 3.6 do Python.

Existem outras formas de interpolar valores em strings, mas no caso de f-strings é assim mesmo.

valor = 10
print(f'Valor {valor}')

Strings literais formatas

[]'s

solução!

Esse f que você coloca antes das aspas é para indicar que você tá usando o que é chamado de f-strings que é uma maneira de formatar strings que foi adicionada ao Python 3, ela permite que você concatene strings de uma maneira mais intuitiva, podendo interpolar seu código python dentro da string.

Por exemplo, vamos supor que você tenha seu nome e queira imprimir algo como "Seu nom é SEU_NOME_AQUI"

nome = "Guilherme"
print("Seu nome é " + nome)
print("Seu nome é {}".format(nome))
print("Seu nome é %s" %nome)
print(f"Seu nome é {nome}")

Todas vão te mostrar algo como "Seu nome é Guilherme", entre tanto como você pode imaginar todas elas fazem a mesma coisa só que cada uma do seu jeito, o primeiro caso por exemplo ele só vai permitir a concatenação se os dois tipos forem string (tente adicionar a variável idade e fazer algo como como print("Seu nome é " + nome " e você tem " + idade), você verá um erro por causo do tipo então você teria que converter de número para string)

Usando meu nome e idade como exemplo,

nome = "Alexandre"
idade = 19
print("Seu nome é " + nome + " e você tem " + str(idade))
print("Seu nome é {} e você tem {}".format(nome, idade))
print("Seu nome é %s e você tem %s" %(nome, str(idade)))
print(f"Seu nome é {nome} e você tem {idade}")

Note que a medida que você quer concatenar muitas coisas, alguma das maneiras se tornam muito verbosas, e a f-string se destaca aqui, já que ela foi implementada para resolver esses diversos problemas com recursos dela mesma, basicamente o ":02d" é um recurso nativo dela que permite você formatar um inteiro com casa das dezenas e unidades, aí você perguta "e como saber que é um inteiro que estou formatando?" então o "d" diz isso e o "02" diz basicamente dezenas e unidades, por isso o dia é exibido "03" e o mês "08" e não somente 3 e 8. Claro você poderia usar qualquer uma das outras formas para concatenar sua string, mas a f-string permite esse tratamento de colocar o número com dezenas e unidades de uma maneira muito simples.

Agora que você já sabe disso, você se pergunta qual o uso do ".format()" no código então? Bom de fato acredito que seja uma maneira do instrutor te sinalizar que existem outras maneiras de concatenar, tanto que o código funcionaria perfeitamente se eles fosse simplesmente assim,

class Data:
  def __init__(self, dia, mes, ano):
    self.dia = 3
    self.mes = 8
    self.ano = 2021


  def imprimir_data(self):
    imprime = print(f"Hoje é {self.dia:02d}/{self.mes:02d}/{self.ano:02d}, em Goiânia.")

No caso da idade com a f-string você também pode dizer quantas casas decimais você quer, vamos supor que eu tenho 19.5 anos de idade, se eu simplesmente colocar " Seu nome é {nome} e você tem {idade}" vai sair algo como 'Seu nome é Alexandre e você tem 19.5', mas e seu eu quiser mais casas? Então é bem simples!!!

nome = "Alexandre"
idade = 19.5

print(f"Seu nome é {nome} e você tem {idade:.2f}")

Como vimos anteriormente o ":" depois da variável é sua sinalização que ali em diante é como será a formatação do seu número o ".2" indica duas casas decimais e o f é basicamente uma sinalização de que é um número float e a saída será 'Seu nome é Alexandre e você tem 19.50'. Existem muitas outras coisas que f-strings fazem, elas são muito poderosas, não há porque querer aprender todas agora quanto mais você codar mais utilidade você verá nelas!!!

Boa noite Guilherme!!! E bons estudos!!!

Tem varias formas de se fazer uma f-string, mas aconselho que você use essa aqui:

nome = "Fábio Henrique"
idade = 17

print(f"Bem vindo {nome}! Pelo que eu vi aqui.. você tem {idade} anos.")

Ela é a forma atual de se fazer uma f-string, e te aconselho a sempre usar os metados mais recentes, para evitar futuros problemas.

Muito obrigado pela aula Alexandre, me ajudou demais e muito dificil pegar para ler sozinho sobre as classes e interpolaçoes, e confusso e de um jeito muito tecnico, mas dessa forma ficou muito mais facil de entender, vlw mesmo cara.