6 de dezembro de 2015

Rapidinha - comparações em Python

Mais um post da série Rapidinhas: Comparações em Python.

Sobre comparações em Python, vale ressaltar alguns pontos:
  1. Elas retornam True ou False.
  2. Conteúdos vazios sempre retornam False.
  3. Você não precisa dos parênteses para comparações simples.
  4. A sintaxe para testar intervalos, nos operadores "menor que" e "maior que".
  5. Python tem tipagem forte. Ou seja, "1" == 1 sempre será falso, porque string e inteiro são tipos de dados diferentes.

Igualdade

>>> "a" == "a"
True
>>> "a" == "b"
False
>>> "1" == "1"
True
>>> "1" == 1
False
>>> "1" == str(1)
True
>> 1 == int("1")
True

Desigualdade (ou diferença)

>>> "a" != "b"
True
>>> "a" != "a"
False
>>> "1" != "1"
False
>>> "1" != 1
True

Menor que

>>> 1 < 2
True
>>> 1 > 2
False
>>> 1 < 3 < 5
True
>>> 1 < 3 < 2
False

Maior que

>>> 2 > 1
True
>>> 2 > 3
False
>>> 5 > 3 > 1
True
>>> 5 > 3 > 17
False

Booleanos

Não teste if variavel == True. Ao invés disso, teste if variavel apenas:
>>> b = True
>>> if b:
...   print("tem")
... else:
...   print("vazio")
...
tem
>>>
>>> b = False
>>> if not b:
...   print("vazio")
... else:
...   print("tem")
...
vazio

Importante: todo conteúdo "vazio" é considerado False:
  • A string vazia
  • O número zero
  • Uma lista sem itens ([])
  • Um dicionário sem nenhuma chave dentro ({})
Entretanto, note que uma string com o conteúdo "0" ou um espaço " ", um número menor que zero, uma lista com itens zero ou string vazia, bem como um dicionário com chave vazia, são considerados valores, portanto, todos retornam True.
Exemplos:
>>> bool("a")
True
>>> bool("")  # vazio
False
>>> bool(" ")  # um espaço em branco
True
>>> bool("0")  # a string "0"
True
>>> bool(5)
True
>>> bool(0)  # número zero
False
>>> bool(-1)  # número diferente de zero
True
>>> bool([5, 3])
True
>>> bool([])  # lista sem itens
False
>>> bool([0, ""])  # existem itens na lista
True
>>> bool({"nome": "joao"})
True
>>> bool({})  # dicionário sem chaves
False
>>> bool({"": ""})  # existe conteúdo no dicionário
True

and, or e not

>>> "a" == "a" and "b" == "b"
True
>>> "a" == "x" or 1 < 2
True
>>> not ("a" == "a")
False

Pertence ou "está dentro de"

>>> # procura string dentro de outra string
>>> "cd" in "abcdef"
True
>>> "cd" in "xywz"
False
>>>
>>> # procura item dentro da lista
>>> 13 in [10, 11, 12, 13, 14]
True
>>> 13 in [25, 26, 27]
False
>>>
>>> # procura chave dentro de dicionário
>>> "nota" in {"nome": "joao", "idade": 17, "nota": 9}
True
>>> "nota" in {"nome": "joao", "idade": 17, "altura": 1.90}
False
>>>
>>> # se procurar por valor dentro de dicionário, retorna False
>>> "joao" in {"nome": "joao", "idade": 17, "nota": 9}
False

Para testar se um determinado valor está dentro de um dicionário, use values():
>>> "joao" in {"nome": "joao", "idade": 17, "nota": 9}.values()
True

Em um outro post eu falo sobre os atalhos para and e or. Talvez você se interesse também.

Eu sou Vinicius Assef, um programador do século passado que gosta de Python, pratica Lean Development e acredita em Deus. Você pode me contactar por email ou twitter.

Nenhum comentário:

Postar um comentário

Marcadores