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 de5.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.