comparação textual


Material de apoio para a disciplina Linguagem de Programação da UACSA/UFRPE

Produzido pelo prof. João Pimentel

Ok, vamos começar com um desafio: coloque essas palavras em ordem.

Melancia
Banana
Laranja
Acerola

Olha aí, mesmo sem eu explicar nada você já entendeu a metade do assunto! De forma simplificada, podemos dizer que a comparação de strings em Python é baseada na ordem lexicográfica - isto é, a ordem alfabética, ou a ordem do dicionário.

Esse tipo de comparação serve, por exemplo, para que os contatos na agenda do seu celular fiquem na ordem correta. Outro exemplo: para filtrar os produtos por marca em uma loja online.

Vamos comparar duas palavras: "aeroporto" e "boca". Mesmo sendo uma palavra mais longa, "aeroporto" vem antes de "boca" no dicionário, né?

E se a gente comparar "g" e "p", quem vem antes? O "g", com certeza!

Lembra que na comparação de números utilizamos os símbolos >, >=, < e <=?

Esses mesmos símbolos são utilizados para compararmos textos (strings), mas com o significado um pouquinho diferente. Se uma string é "menor" que a outra, quer dizer que ela vem antes no dicionário.

Já se uma string é "maior", quer dizer que ela vem depois.

print('a' < 'f')
resultado: True, o que quer dizer que 'a' vem antes de 'f'.

print('a' > 'f')
resultado: False, o que quer dizer que 'a' não vem depois de 'f'.

print('s' > 'm')
resultado: True, o que quer dizer que 's' vem depois de 'm'.

print('x' > 'z')
resultado: False, o que quer dizer que 'x' não vem depois de 'z'.

Estranho, né?

Quando um assunto é estranho, é por que ainda não nos acostumamos com ele. Para nos acostumar, vamos praticar! Lembre-se: o que vem depois é "maior".

1/5

quem é maior

ou

?
CERTO!
"b" é maior do que "a"



Ok, acho que você já entendeu o que acontece quando as strings só têm 1 caractere. Mas o que acontece quando as strings têm vários caracteres? Por exemplo: "areia" e "arenoso", quem é menor? Quem é maior?

Na pressa, a gente pode pensar: "arenoso é uma palavra mais longa, então ela é maior". Só que quando a gente compara strings, menor e maior querem dizer "vem antes ou vem depois?", lembra?

Então... como é que funciona?

Vídeo 1 (4min):

1/5

quem é maior,

ou

?
CERTO!
"b" é maior do que "a"



Se ligou, né? A comparação entre strings é feita comparando cada caractere
"lei" é menor que "ler", já que "i" é menor que "r"
Quando as strings têm números, o resultado é diferente do que a gente poderia imaginar:
"9" é maior que "54", já que "9" é maior que "5".
Qual o resultado de...
"12" > "10"
Qual o resultado de...
"100" > "2"
Qual o resultado de...
"7" == "007"
"Professor, e os acentos? E os outros caracteres, como $#%?!&* ???"

O computador compara a ordem das strings com base na tabela de caracteres que está sendo utilizada. A mais comum é a unicode . Lá você pode ver, por exemplo, que #, ! e $ vêm antes dos números, os números vêm antes das letras, a ? vem depois dos números mas antes das letras, as letras maiúsculas vêm antes das minúsculas, e as letras com acento vêm depois das letras sem acento.

Vale a pena decorar isso? Eu acredito que não.

Para terminar, fique com esse resumão:

Créditos

animação Card flip: David DeSandro