Programação em Python
Prof. Márcio Sarroglia Pinho

Comandos de Decisão / Comandos de Seleção


Condições - Expressões Relacionais

Uma condição na linguagem Python é definida como uma expressão que pode ser verdadeira ou falsa.

A este tipo de expressão dá-se o nome de expressão relacional ou comparação.

Por exemplo,  3 > 2 uma expressão relacional que possui valor verdadeiro. Por outro lado, 4 < 1 é uma expressão  que possui valor falso.

Os operadores (< e >) usados nos exemplos acima são chamados de operadores relacionais pois possibilitam saber qual a relação existente entre seus dois operandos. Além destes dois existem mais 4 operadores relacionais, que podem ser vistos na tabela seguir:

Tabela - Operadores Relacionais

==Igual a
!=Diferente
>=Maior ou igual
>Maior que
<Menor que
<=Maior ou igual

Acesse a página a seguir para testar o uso de operadores relacionais: https://learnpython.trinket.io/learn-python-part-2-logic-expressions#/booleans/booleans

Experimente digitar um progrma como este

x = 10
y = 12

print('x > y  é ',x>y)

Como 12 é maior do que 10, então a expressão x>y é falsa, o que resulta em False, em Python.


Condições - Expressões Lógicas

Além dos operadores relacionais, existem os chamados operadores lógicos ou "conectivos lógicos". Estes, servem para conectar/combinar duas expressões relacionais. Os operadores lógicos da linguagem Python são apresentados na tabela a seguir:

Operadores Lógicos

orOU lógico
andE lógico
notNegação

Quando aplicados a valores lógicos True e False, este operadores produzem os resultados apresentados nas tabelas apresentadas a seguir

Tabela verdade para operadores AND e OR

A
B
and
True
True True
True False False
False
True False
False False False

Tabela verdade para operador NOT

 A
not
True False
False True

Os operadores or e and devem ser sempre usados entre duas expressões relacionais como por exemplo:

(2 > 1) or (3 < 7)  : resultado VERDADEIRO
(3 < 2) and (2 == 2) : resultado FALSO

Já o operador not deve ser usado antes de uma expressão relacional, para inverter seu valor, como por exemplo:

not (2 > 1): resultado VERDADEIRO
not (1 < 0): resultado FALSO

not (5 !=0) and (1 < 2)  : resultado FALSO

Acesse a página a seguir para testar o uso de operadores relacionais:
https://learnpython.trinket.io/learn-python-part-2-logic-expressions#/booleans/combining-boolean-expressions


Precedência de Operadores

A execução as expressões em Python segue a seguinte tabela de precedência.

Tabela de precedência em Python

-
menos unário (sinal de número negativo)Executado
Antes

* /
Operadores Multiplicativos  
+ - Operadores aditivos  
< > <= >= == != Relacionais  
not
Operador de negação

and
e lógico Executado
Depois
or
ou lógico

Comando de Seleção IF

O comando if serve para selecionar que parte de um código será executado.

Por exemplo, o programa a seguir informa que um aluno está aprovado por média, se a nota dele for maior ou igual a 7.0.

Teste o programa com valores diversos entre 0 e 10, e veja o resultado.

a = input("Digite sua nota: ")
nota = float (a)

if nota >=7.0:
    print ("Você está aprovado por média.")

if nota < 7.0:
    print ("Você não está aprovado por média.")


Note que o comando que está na linha imediatamente após cada IF foi adicionadoum TAB, o que é obrigatório em Python. Caso isto não seja feito, um erro será gerado. Veja no exemplo a seguir.

a = input("Digite sua nota: ")
nota = float (a)

if nota >=7.0:
print ("Você está aprovado por média.")

if nota  < 7.0:
    print ("Você não está aprovado por média.")


A linha assinalada em vermelho não contém um TAB no seu início, o que irá gerar um erro na execução, como este:
File "Decisao1.py", line 7
    print ("Você está aprovado por média.")
        ^
IndentationError: expected an indented block




Comando de Seleção IF-ELSE

Para evitar uma sequência longa de IFs é possível agregar o comando else a um comando if.

a = input("Digite sua nota: ")
nota = float (a)

if nota >=7.0:
    print ("Você está aprovado por média.")
else:
    print ("Você não está aprovado por média.")

Usando o comando IF-ELSE o código a ser executado após o teste depende do valor da expressão lógica que for colocada após o IF. Caso esta expressão seja verdadeira, será executado o que está na linha seguite ao

Note que as linhas marcadas em vermelho nos dois exemplos anteriores são terminadas pelo sinal de dois-pontos


Blocos de Comandos

Note que as linhas marcadas em vermelho nos dois exemplos anteriores são terminadas pelo sinal de dois-pontos ":". Este símbolo define o início de uma estrutura denominada BLOCO.

Esta estrutura é usada quando é preciso "separar" um ou mais comandos, de outro grupo comandos do código.

Nos exemplos, o que se deseja é separar o bloco que será executado no IF, daquele bloco que será executado no ELSE.

Além do símbolo dois-pontos no final da linha, deve-se colocar todos os comandos que pertencem a um mesmo bloco deslocados/alinhados à direita, usando a tecla TAB.

No exemplo a seguir, o bloco do IF possui dois comandos, já o bloco do ELSE,  três.

a = input("Digite sua idade : ")
idade = float (a)

if idade >= 18:
    print ("Você já pode dirigir.")  # primeiro comando do bloco do IF
    print ("Lembre-se ! Se for dirigir, não beba!") # segundo comando do bloco do IF
else: 
    print ("Você ainda pode dirigir.") # primeiro comando do bloco do ELSE
    tempoQueFalta = 18 - idade # segundo comando do bloco do ELSE
    print ("Faltam ", tempoQueFalta, "anos" ) # terceiro comando do bloco do IF

Ainhamento de IFs

Quando é preciso refinar uma condição, tomando uma decisão depois que outra já foi tomada, usa-se o aninhamento de IFs.

No exemplo a seguir, caso a nota de um aluno seja menor do que 7, ainda é preciso testar se ele tem uma nota maior ou igual a 4 para que possa realizar a prova G2.

a = input("Digite sua nota: ")
nota = float (a)

if nota >=7.0:
    print ("Você está aprovado por média.")
    if nota>9.0:  # IF ANINHADO
        print ("Parabéns!")  # se nota > 9
    print ("Boas Ferias!")  #  se nota >=7
else:
    if nota>=4: # IF ANINHADO
        print ("Você pode fazer G2.");
        print ("Venha na próxima semana")
    else:
        print ("Você está reprovado!")
        print ("Você não pode fazer G2.")
       
print ("Acabou.")

Comando ELIF

Quando for necessário fazer um novo teste após um ELSE, como no exemplo anterior, é possível simplificar o comando usando um ELIF.

O trecho apresentado a seguir classifica uma pessoa de acordo com a regra descrita tabela.

Idade
Categoria
0-1
Recém Nascido
2-12
Criança
13-18
Adolescente
19-60
Adulto
60-80
Idoso
>80
Longevo

a = input("Digite a idade da pessoa: ")
idade = int (a)

if idade <=1:
    print ("Recém nascido")
else:
    if idade < 13: 
        print ("Criança")
    else:
        if idade < 18:
            print ("Adolescente")
        else:
            if idade < 60:
                print ("Adulto")
            else:
                if idade < 80:
                    print ("Idoso")
                else:
                    print ("Longevo")


print ("Acabou.")

Para evitar o deslocamento excessivo de blocos à direita, como ocorre neste exemplo, é possível usar o comando ELIF, como so exemplo a seguir.
Note que todos os ELIFs ficam alinhados com o primeiro IF.
O ELSE que aparce no final, é executado caso nenhuma das condições anterior seja verdadeiras.


a = input("Digite a idade da pessoa: ")
idade = int (a)

if idade <=1:
    print ("Recém nascido")
elif idade < 13:  
        print ("Criança")
elif idade < 18:
    print ("Adolescente")
elif idade < 60:
    print ("Adulto")
elif idade < 80:
    print ("Idoso")
else:
    print ("Longevo")

print ("Acabou.")





FIM