16 KiB
Strings¶
Acabamos de usar Strings para exibir uma mensagem. Agora vamos ver o que são Strings
e aprender a usá-las.
O quê é String?¶
String
, em inglês, significa cordão, fio, filamento... Para o computador, isso que estamos chamando de Strings
são um "filamento" ou um "enfileramento" de caracteres: um caracter ou mais, um após o outro, formando um conjunto de caracteres com uma sequência bem definida.
Strings são usadas principalmente para armazenar o que chamamos de texto
. Nesse caso, texto é qualquer dado que seja composto por caracteres. Pode ser um endereço de email, um nome ou, até, um texto mesmo, com título e parágrafos, desde que seja um texto simples, como o de um arquivo .TXT.
Criando uma String em Python¶
Para criar uma String em Python usamos aspas simples ou aspas duplas. Colocamos o texto entre as aspas e o Python vai interpretar isso como sendo uma String. Podemos usar uma String assim desse jeito mesmo ou então atribuí-la a uma variável para usarmos ela depois. Assim:
# exemplo de uma String em Python 'Quer continuar (s/n)?'
# armazenando uma String em uma variável mensagem = 'Quer continuar (s/n)?'
A variável chamada mensagem
agora contém a string 'Quer continuar (s/n)?
. Da mesma forma como fizemos antes com os valores dos pontos da jogada, podemos agora usar essa variável para realizar operações com a string 'Quer continuar (s/n)?
.
Por exemplo, podemos imprimir na tela essa string. Fazemos isso usando a função print()
para exibir uma string contida na variável. Assim:
print(mensagem)
Para criar uma string com mais de uma linha, existe uma sintaxe especial do Python. Escrevemos o texto entre 3 aspas simples (ou duplas, tanto faz).
''' Olá! Esta rodada já terminou. Você quer continuar? Responda S/n: '''
Um comentário sobre sintaxe e semântica¶
Para atribuir essa string a uma variável, as aspas que iniciam a String devem ficar na mesma linha que a atribuição à variável.
Observe a diferença executando os dois trechos de código abaixo.
mensagem = ''' Olá! Esta rodada já terminou. Você quer continuar? Responda S/n: '''
O primeiro trecho de código não roda. O Python nos mostra uma mensagem de erro que diz SyntaxError:
que significa Erro de sintaxe
.
Sintaxe é a forma correta de escrever uma sentança em uma linguagem. Algumas formas não são válidas e por isso uma sentença escrita dessa forma não vai fazer sentido.
Quando existe um erro de sintaxe o Python interrompe a execução do programa porque ele não consegue interpretar o que está escrito na linha.
No caso do primeiro trecho de código, não fez sentido para o Python encontrar uma linha com uma sentença como aquela. O que ela está fazendo é:
- pedir para o Python criar uma variável
- e atribuir um valor a ela
- mas não está dizendo qual é o valor a ser atribuído!
Assim o Python não sabe o que fazer e pára.
mensagem = ''' Olá! Esta rodada já terminou. Você quer continuar? Responda S/n: '''
O segundo trecho de código funciona porque a sintaxe é a correta.
O que determina se a sintaxe é correta ou não é a
gramática
da linguagem de programação que estamos usando.
Essa gramática pode ser diferente em outras linguagens. Por isso, aprender uma linguagem de programção é, inicialmente, aprender sua gramática e como escrever sentenças válidas usando a linguagem, ou seja, como escrever linhas de código que podem ser executadas.
O resultado da execução de uma linha de código normalmente é chamado de resultado mesmo, mas ele é também seu
significado
ou, usando termo mais técnico, é a suasemântica
.
Por isso, é correto falar assim:
- Qual é o resultado de
2 + 4
? O resultado é6
. - O que quer dizer
2 + 4
? Quer dizer6
.
Intercalando valores em Strings¶
Podemos criar strings que contém caracteres e também variáveis. Essas strings são úteis para usarmos como modelos para a geração de outras strings.
No exemplo abaixo, observe o uso de um caracter especial %s
. Esse caracter serve para marcar o local onde um valor será inserido na String depois.
jogador = 'Mestre dos Magos' mensagem = ''' Fim da rodada, %s. Quer continuar? (S)im / (N)ão ''' print(mensagem % jogador)
Para inserir um valor no lugar de %s
usamos um outro operador do Python, o operador %
. Quando aplicado a uma string, esse operador executa uma operação de busca e substituição na String que está no lado esquerdo dele. O operador %
vai procurar o marcador %s
na string que está a sua esquerda e substituí-lo pelo valor que está a sua direita.
Usando uma tupla
¶
Abaixo vemos um exemplo de como usar mais de uma marcação em uma string, para intercalar mais de um valor. A diferença é que precisamos passar para o operador %
uma tupla
como parâmetro.
Uma
tupla
é uma sequência de valores que tem uma posição fixa na sequência e que não podem ser alterados - ou seja, a sequência sempre mantém a ordem que ela tinha quando foi criada.
Uma tupla
é criada colocando os valores que pertencerão a ela entre parênteses e separando eles por vírgula.
No exemplo abaixo, a tupla de valores é:
(jogador, pontos)
jogador = 'Mestre dos Magos' pontos = 1953.5 mensagem = ''' Fim da rodada, %s. Você fez %s pontos. Quer continuar? (S)im / (N)ão ''' print(mensagem % (jogador, pontos))
Observe que a tupla contém valores de dois tipos diferentes: numérico (a pontuação) e String (o nome do jogador). Isso não é um problema para o Python. Podemos misturar sem erro tipos de dados diferentes nessas estruturas.
Um exemplo com HTML¶
Vamos trocar a função print()
por uma que sabe como imprimir HTML. Ela não faz parte das funções padrão do Python e por isso precisamos importar o código dela para nosso programa para poder usá-la.
importar é trazer para nosso programa algum código já escrito e que está armazenado em uma bilioteca de código.
Existem milhares de bibliotecas de código para o Python. Cada uma contém vários pacotes
, que são coleções de funções prontas para serem reutilizadas.
Neste próximo exemplo importamos uma função que que imprime HTML e que está no pacote IPython.display
.
IPython é o nome do interpretador Python que está executando todos os trechos de código que escrevemos até agora e significa Interactive Python, que quer dizer Python Interativo.
O comando do Python para importar bibliotecas é import
. Quando queremos apenas alguns pacotes de uma biblioteca usamos o par de comandos from
... import
, como na primeira linha do exemplo abaixo.
# do pacote IPython.display importamos apenas HTML from IPython.display import HTML jogador = 'Mestre dos Magos' pontos = 1953.5 # Substituímos a string da mensagem por um código HTML mensagem = ''' <center> <h2>Fim da rodada, %s</h2> <h3> Você fez %s pontos. </h3> <img src='img/mago-64px.png' /> <br /> Quer continuar ? <br /> (S)im / (N)ão </center> ''' # Imprimimos usando HTML() ao invés de print() HTML(mensagem % (jogador, pontos))
Note que esse código HTML está sendo gerado dinamicamente. Ele não está fixado no código. A cada execução do código ele pode ter um resultado diferente.
Vamos ver isso copiando o código que calcula a pontuação para dentro desse último exemplo que imprime HTML alterando variável que contém a pontuação. Vamos trocá-la pela variável resultado
, que é calculada pela primeira parte do código.
# Parte 1 # Código que calcula a pontuação # experiencia = 20 pts_experiencia = 0.05 pts_magia = 0.5 robos = 2 resultado = (robos * pts_experiencia) + (robos * pts_magia) + (robos * experiencia) # Não precisamos da linha com print() porque # vamos usar HTML() # print(f'Você ganhou {resultado} pontos!') # Parte 2 # Código que imprime o HTML # # do pacote IPython.display importamos apenas HTML from IPython.display import HTML jogador = 'Mestre dos Magos' # retiramos esta linha porque vamos usar # a variável 'resultado' que foi calculada acima # pontos = 1953.5 # Substituímos a string da mensagem por um código HTML mensagem = ''' <center> <h2>Fim da rodada, %s</h2> <h3> Você fez %s pontos. </h3> <img src='img/mago-64px.png' /> <br /> Quer continuar ? <br /> (S)im / (N)ão </center> ''' # Imprimimos usando HTML() ao invés de print() # Aqui usamos a variável 'resultado' no lugar de 'pontos' # HTML(mensagem % (jogador, pontos)) HTML(mensagem % (jogador, resultado))
Para ver o HTML ser gerado dinamicamente, experimente mudar o valor das variáveis experiencia
, robos
, pts_experiencia
, pts_magia
e jogador
no código acima e rodar ele novamente a cada alteração.
Organizando o código¶
Antes de continuar, vamos organizar um pouco o código e limpar os comentários do exemplo anterior. Assim:
from IPython.display import HTML jogador = 'Mestre dos Magos' experiencia = 20 pts_experiencia = 0.05 pts_magia = 0.5 robos = 2 mensagem = ''' <center> <h2>Fim da rodada, %s</h2> <h3> Você fez %s pontos. </h3> <img src='img/mago-64px.png' /> <br /> Quer continuar ? <br /> (S)im / (N)ão </center> ''' resultado = (robos * pts_experiencia) + (robos * pts_magia) + (robos * experiencia) HTML(mensagem % (jogador, resultado))
Fim da rodada, Mestre dos Magos
Você fez 41.1 pontos.
Quer continuar ?
(S)im / (N)ão
Esse é um exemplo de uma organização típica de código de um programa.
- Primeiro escrevemos os
imports
- Depois declaramos as variáveis do programa
- Depois escrevemos o código que manipula as variáveis, faz cálculos, executa funções...
Fazemos isso para facilitar a leitura e a manutenção do código. É mais difícil, por exemplo, fazer uma substituição de uma variável por outra (como fizemos entre as variáveis pontos
e resultado
) se elas estiverem todas no mesmo trecho do código. Isso nem sempre é possível, dependendo do tamanho do programa.