Strings e I/O

E mais: conversões

1. Strings

Nós já vimos esse tipo de dado na nossa iniciação: em Python ele se chama str (encurtando string), e serve para representar texto. Texto podem ser letras, espaços, caracteres especiais, emoji, dígitos…

Python é bem flexível com a sintaxe de strings literais:

# todas essas variáveis são strings
greeting = "Hello there!"
hi = 'hi 😇'
hello = """Hello."""

Por que as aspas triplas? Veja:

longlongstring = """
  Uma string literal normal não pode
    ter mais de uma linha,
   mas a com aspas triplas sim!
  """

Ao passo que com ' ou ":

>>> "aqui tem uma linha
e aqui uma outra"
  File "<stdin>", line 1
    "aqui tem uma linha
    ^
SyntaxError: unterminated string literal (detected at line 1)

Cuidado: não misture ' com ", "oi' não é uma string válida.

Por que ter duas sintaxes diferentes para a mesma coisa? Um motivo é que fica mais fácil escrever textos que contenham ' e ":

singlequote = "Hey, you, you're finally awake"
doublequote = 'Shakespeare wrote "To be, or not be" in Hamlet.'

Mas se o texto contiver tanto apóstrofes quanto duplas, não tem jeito, é preciso usar caracteres de escape:

# Teste deletar o caractere de escape '\' e veja o que acontece
works = 'Shakespeare didn\'t write "You\'re finally awake" in Hamlet.'

Ou então é só usar aspas triplas (a menos que o texto contenha aspas triplas ou termine com aspas; neste caso é preciso voltar a usar o caractere de escape 😫):

alsoworks = """Shakespeare didn't write "You're finally awake" in Hamlet."""

1.1. Operações em strings

O operação que ‘cola’ ou ‘junta’ strings é chamada de concatenação, e sua sintaxe você já conhece:

"eu e você" + ", " + "você e eu"

Você também pode ‘multiplicar’ strings, mas eu não vejo muita utilidade disso, além de:

"NA " * 13 + " Batman!"

2. Interlúdio: transformando strings em números e vice-versa

Além de tipos básicos, int, float e str podem ser usados para transformar (ou converter) valores em seus respectivos tipos. Veja:

int("1")
int(1.0)
int(1)
float("1")
float(1)
str(1)
str(1/3)

Mas cuidado: nem toda conversão é possível.

int("Bang!")

E algumas conversões perdem informação:

int(13/9)

Você pode verificar o tipo de um valor usando type:

type("1492")
type(int("1492"))
type(float("1492"))

3. Input e Output (I/O)

Input e output são fundamentais para programação; sem entradas ou saídas não podemos fazer nada de muito interessante. Por exemplo, o REPL que estamos usando só é útil porque ele lê nossos comandos e mostra os resultados. Mas não se enganem: a parte mais interessante do REPL não é ler comandos ou mostrar resultados, mas sim o que ele faz entre essas duas coisas (e que não necessariamente envolve algum tipo de I/O).

3.1. Output

Já conhecemos print da nossa iniciação: ela ‘printa’ o que estiver entre os parênteses. Printar é uma forma de output, um outro exemplo de output seria salvar um arquivo com alguma informação (ainda vamos chegar lá, but not today.)

print(1/3)
x = 1/3
print(x)
print("This is where the fun begins!")
credits = 3
print("You have " + str(credits) + " credits left. Would you like to continue?")

3.2. Input

Para receber uma entrada do usuário podemos usar input:

secret = input("Me conta um segredo? ")
print("Interessante, não sabia que " + secret)

input usa a string entre parênteses como prompt, e devolve uma string com o que o usuário escreveu.

Atenção: o prompt de input não é igual ao prompt do REPL que estamos usando.

>>> 1/3
0.3333333333333333
>>> input("Me diz um número: ")
Me diz um número: 1/3
'1/3'

3.3. Exercício: calculando a taxa de performance interativamente

Voltando ao nosso exemplo de cálculo de taxa de performance de um fundo, vamos tornar o programa interativo.

Usando input, peça ao usuário para informar:

  • o valor de seu investimento em um fundo no início do ano;
  • o valor (bruto) de seu investimento no fundo ao final do ano;
  • o quanto o benchmark do fundo valorizou. Assuma que o usuário vai informar a valorizações como percentual (por exemplo, 5.5 quer dizer uma valorização de 5.5%).

Você deve:

  • calcular o quanto será pago como taxa de performance;
  • calcular qual é o valor líquido do investimento ao final do ano (descontada a taxa de performance);
  • mostrar as respostas para o usuário usando print.

Assuma uma taxa de performance de 20%.

Vocês vão precisar de usar float para transformar o resultado de input em um número, e de str para converter os resultados de volta para string para o output.

Bruno Cuconato / 2024-08-07
TOP | HOME
Computação FGV/EPGE