Universidade Federal de Minas Gerais
Departamento de Ciência da Computação
Programação de Computadores
Tipos e operadores lógicos em Python
Prof. José de Siqueira
2024/2
1 / 20
Variáveis e tipos em Python
Tipos básicos no Python: booleano (True e False), numérico
(int, float, complex), textuais ou string (str), sequências
binárias (bytes) e outros.
Tipos numéricos são representações binárias de decimais, no
caso de inteiros (int) e de reais (float).
A representação em binário do tipo int é exata, mas não é o
caso da representação binária do tipo float:
>>> .1+.2
0.30000000000000004
>>>
Isso não é um problema do Python, mas da representação
binária da base decimal em ponto flutuante.
Quais são os limites da representação binária de reais como
float?
2 / 20
Limites da representação binária de reais em
Python
Perguntemos ao Python:
>>> import sys
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308,
max_exp=1024, max_10_exp=308,
min=2.2250738585072014e-308, min_exp=-1021,
min_10_exp=-307, dig=15, mant_dig=53,
epsilon=2.220446049250313e-16,
radix=2, rounds=1)
>>> sys.int_info
sys.int_info(bits_per_digit=30,
sizeof_digit=4)
>>>
3 / 20
O menor número representável em Python
O menor número representável em Python é 2**-1074:
>>> print(f'{2**-1074:.750e}')
4.940656458412465441765687928682213723650598026143
24764425585682500675507270208751865299836361635992
37979656469544571773092665671035593979639877479601
07818781263007131903114045278458171678489821036887
18636056998730723050006387409153564984387312473397
27316961514003171538539807412623856559117102665855
66867681870395603106249319452715914924553293054565
44401127480129709999541931989409080416563324524757
14786901472678015935523861155013480352649347201937
90268107107491703332226844753335720832431936092382
89345836806010601150616980975307834227731832924790
49825247307763759272478746560847782037344696995336
47017972677717585125660551199131504891101451037862
73816725095583738973359899366480994116420570263709
0279242767544565229087538682506419718265533447265625e-324
Esse número é exato, com 745 casas decimais!
4 / 20
O maior número representável em Python
O maior número representável em Python é 2**1023:
print(f'{2**1023:.307e}')
8.9884656743115795386465259539451236680898848947115
328636715040578866337902750481566354238661203768010
560056939935696678829394884407208311246423715319737
062188883946712432742638151109800623047059726541476
042502884419075341171231440736956555270413618581675
255342293149119973622969239858152417678164812112068608e+307
5 / 20
Variáveis em Python
As regras para definir os nomes de variáveis em Python são:
1. Nomes de variáveis devem começar com letras maiúsculas ou
minúsculas.
2. Python distingue entre nomes de variáveis com letras
minúsculas e maiúsculas em qualquer posição.
3. Nomes de variáveis podem ter algarismos, mas não podem
começar com eles.
4. Nomes de variáveis podem ter o símbolo _, inclusive no início
do nome.
Variáveis em Python podem ser de qualquer tipo e não é
preciso declará-las antes de usá-las.
6 / 20
Variáveis de tipo booleano
Exemplo de variáveis do tipo booleano:
>>> Fim = False
>>> aprovado = True
>>> print(Fim)
False
>>> print(aprovado)
True
>>>
7 / 20
Operadores de comparação
O tipo booleano dá o resultado verdadeiro (True) ou falso
(False) para a avaliação de operadores relacionais em Python:
Operador Operação Símbolo
== igual a =
> maior do quê >
< menor do quê <
!= diferente de 6=
>= maior ou igual a ≥
<= menor ou igual a ≤
8 / 20
Comparações e os tipos booleanos
O resultado de comparações dá um valor booleano:
>>> a = 1 # a recebe 1
>>> b = 2 # b recebe 2
>>> a == b # a é igual a b?
False
>>> a !=b # a é diferente de b?
True
>>> a <= b # a é menor ou igual a b?
True
>>> a <= a # a é menor ou igual a a?
True
9 / 20
Operadores de comparação e lógicos
Como “traduzir” para o português as seguintes comparações?
2≤3
0 > x > −∞
−1 ≤ y < 10
10 / 20
Operadores de comparação e lógicos
2 < 3 ou 2 = 3
0 > x e x > −∞
−1 < y ou − 1 = y e y < 10
11 / 20
Operadores de comparação e lógicos
Qual é a negação dos operadores de comparação?
não(2 > 3)
2≤3
não (0 < x < 100)
0 ≥ x ou x ≥ 100
não (10 > y ≥ −1)
10 ≤ y ou y < −1
12 / 20
Operadores lógicos em Python
As operações lógicas “E” (∧), “OU”(∨) e “NÃO”(¬) em Python
são, respectivamente, os seguintes operadores lógicos:
and, or e not
cujas definições são dadas pelas respectivas “tabelas de verdade”.
13 / 20
Tabelas de verdade dos operadores lógicos
Operação “E” (∧) Operação “OU” (∨)
(operador and) (operador or):
A B A∧B A B A∨B
F F F F F F
F V F F V V
V F F V F V
V V V V V V
Operação “NÃO” (¬)
(operador not):
A ¬A
F V
V F
14 / 20
Outros operadores lógicos
A implicação lógica é definida como:
A B A→B
F F V
F V V
V F F
V V V
Ela é um “açúcar sintático” para ¬A ∨ B.
Já a equivalência entre A e B,
A ↔ B,
é “açúcar sintático” para A → B ∧ B → A.
15 / 20
Negação de operadores lógicos
Teorema de De Morgan
A negação do “E” é o “OU” das negações:
¬ (A ∧ B) ↔ (¬ A ∨ ¬ B).
A negação do “OU” é o “E” das negações:
¬ (A ∨ B) ↔ (¬ A ∧ ¬ B).
16 / 20
Gerando tabelas de verdade em Python
Podemos gerar as tabelas de verdade em Python, com o
comando print():
print(" p q p E q ") #cabeçalho
p = False; q = False
print(p," ",q," ", p and q) #linha 1
p = False; q = True
print(p," ",q," ", p and q) #linha 2
p = True; q = False
print(p," ",q," ", p and q) #linha 3
p = True; q = True
print(p," ",q," ", p and q) #linha 4
17 / 20
Gerando tabelas de verdade com Python
Resultado:
p q p E q
False False False
False True False
True False False
True True True
18 / 20
Exercícios
1. Como expressar as seguintes expressões matemáticas usando
apenas >, <, = e operações lógicas básicas (OU, E e NÃO)?
1.1. x ≥ y.
1.2. x ≤ y.
1.3. x 6= y .
1.4. 0 ≤ x ≤ ∞.
1.5. x > 0 → y ≥ 0.
1.6. x ≤ 0 ↔ y ≥ 0.
2. Escreva as tabelas de verdade para as expressões acima.
3. Outra operação lógica importante é “OU EXCLUSIVO”,
também conhecido como “XOR” (⊗). A ⊗ B só é verdade se A
e B NÃO têm o mesmo valor de verdade.
3.1. Escreva a tabela de verdade da operação lógica “XOR”.
3.2. Expresse o “XOR” em termos dos operadores lógicos básicos
“E”, “OU” e “NÃO”.
4. Compare as tabelas de verdade em 3.1 com a tabela de
verdade da operação lógica ↔.
19 / 20
Exercícios
5. Qual é a expressão equivalente das seguintes expressões:
5.1. ¬ x ≤ y.
5.2. ¬ x > y.
5.3. x ≥ y ∧ x < y.
5.4. x ≤ y ∨ x > y.
5.5. 0 ≤ x ≤ 10.
5.6. ¬ (a ∨ ¬ b).
5.7. ¬ a → b.
5.8. ¬( a → b).
5.9. ¬ (¬ a ∧ ¬ b).
6. Faça as tabelas da verdade em Python dos exercícios 5.6, 5.7,
5.8 e 5.9 acima e das suas respostas, para verificar se são
idênticas.
7. Quais das expressões dos exercícios 5.6, 5.7, 5.8 e 5.9 acima
são equivalentes entre si?
8. Faça as tabelas de verdade do Teorema de De Morgan em
Python e verifique se o Teorema é válido.
20 / 20