• Python
  • 03. Entrada e saída do terminal
  • Formatação de strings

Formatação de strings#

Na aula passada vimos que podemos formatar uma string utilizando f-strings para incluir os valores armazenados em variáveis.

Exercise 1

Considere o código a seguir. Sem rodá-lo, você consegue dizer o que seria impresso no terminal?

a = 10
b = 7
texto = f'a vale {a}, b vale {b} e a + b = {a+b}'

print(texto)

Answer

Esse programa vai imprimir a vale 10, b vale 7 e a + b = 17 no terminal.

Exercise 2

Crie um arquivo teste_fstring_float.py na pasta do handout de hoje. Iremos usá-lo para testar os próximos exercícios.

Exercise 3

Agora, o que acontece se o valor da variável for um float? Teste o programa a seguir e responda.

import math

print(f'pi é {math.pi} mais ou menos')

Quantas casas decimais do número pi foram apresentadas?

Answer

Foi impresso no terminal pi é 3.141592653589793 mais ou menos.

O pacote math disponibiliza o valor de \(\pi\) através do comando math.pi.

E se quisermos mostrar apenas as 3 primeiras casas decimais?#

Para isso podemos usar diretivas de formatação, que podem ser especificadas com um ":" (dois-pontos) depois da expressão a ser mostrada.

Exercise 4

Teste o código a seguir: print(f'{1.23456:.1f}, {7.89123:.4f}'). O que foi impresso no terminal?

Answer

Foi impresso 1.2, 7.8912.

Ao utilizar .1f depois dos dois-pontos, o interpretador Python irá formatar o valor 1.23456 com uma casa decimal, resultando no valor 1.2.

O mesmo ocorre para o segundo valor, ao utilizar .4f, o valor 7.89123 foi formatado para mostrar 4 casas decimais, resultando no valor 7.8912.

Exemplo de formatação de strings

Exercise 5

Modifique o programa que imprime o valor de pi para que ele mostre somente as 3 primeiras casas decimais.

Maneiras antigas de formatar strings em Python

Se você procurar na internet por "formatação de strings em Python" ou algum termo análogo, é bastante provável que você encontre formas diferentes da que apresentamos acima. Por exemplo:

nome = "Mateus"
texto = "Meu nome é %s" % nome
# OU
texto = "Meu nome é {0}".format(nome)

print(texto)

Não se preocupe se não entender esse trecho de código. Essa é a maneira antiga de formatar strings em Python. Procure utilizar a maneira nova que ensinamos, pois ela é mais flexível.

Operações com strings#

No programa do exercício 1 nós obtivemos um comportamento diferente do que esperávamos (se precisar, execute o programa novamente para relembrar).

# Função que soma dois números.
def soma(x, y):
    z = x + y
    return z

# Lendo os dois números.
a = input('Entre com o primeiro número: ')
b = input('Entre com o segundo número: ')

# Somando os dois números.
resultado = soma(a, b)
print(resultado)

Nessa versão do programa, se o usuário digitar 4 e 2 o programa vai imprimir que a soma vale 42. Vimos que isso ocorre porque a função input() sempre devolve uma string, então o que o programa fez foi juntar a string '4' com a string '2', obtendo a string '42'. Essa operação de "juntar strings" é o que chamamos de concatenação.

Exercise 6

Antes de executar o programa a seguir, reflita: o que você espera que seja a saída dele, ou seja, o que você espera que apareça no terminal?

s1 = 'Ins'
s2 = 'per'

s = s1 + s2
print(s)

t = s2 + s1
print(t)

Responda e teste o programa.

Answer

Foi impresso:

Insper
perIns

Se o programa não fez o que você esperava, discuta com seus colegas. Se não conseguirem resolver, converse com algum dos professores.

Exercise 7

Vamos voltar por um instante para o contexto numérico. Sabe-se que uma multiplicação é equivalente à adição sucessiva de um mesmo número. Por exemplo: 3 * 4 = 4 + 4 + 4 = 12. Sabendo disso e considerando o que acabamos de aprender sobre concatenação (+) de strings, qual você espera que seja a saída do programa a seguir?

s1 = 'Ins'
s2 = 'per'

s = 3*s1 + s2
print(s)

Ao testar o código, o que foi impresso no terminal?

Answer

Foi impresso InsInsInsper.

A expressão 'Ins' * 3 resulta na string InsInsIns. Ao utilizar a operação + entre os valores InsInsIns e 'per', a string resultante é InsInsInsper.

Se terminar os exercícios acima, faça os outros exercícios desta seção ou revisite os exercícios de função.

Referências#