Conditions: if, then, else - Learn Python 3 - Snakify

Lesson 3
Condições: if-then-else


1. Sintaxe

Todos os programas da primeira lição foram executados sequencialmente, linha após linha. Nenhuma linha pode ser ignorada.

Vamos considerar o seguinte problema: para o inteiro X determinado, determine seu valor absoluto. Se X> 0 então o programa deve imprimir o valor X, caso contrário deve imprimir -X. Esse comportamento não pode ser alcançado usando o programa seqüencial. O programa deve selecionar condicionalmente o próximo passo. É aí que as condições ajudam:

x = int(input())
if x > 0:
    print(x)
else:
    print(-x)

Este programa usa uma instrução condicional if . Depois de if colocarmos uma condição (x > 0) seguindo por dois pontos. Depois disso, colocamos um bloco de instruções que serão executadas apenas se a condição for verdadeira (ou seja, avaliada como True ). Este bloco pode ser seguido pela palavra else , cólon e outro bloco de instruções que serão executadas somente se a condição for falsa (ou seja, avaliada como False ). É o caso acima, a condição é falsa, então o bloco 'else' é executado. Cada bloco deve ser recuado usando espaços.

Para resumir, a instrução condicional em Python possui a seguinte sintaxe:

if condition :
    true-block
    several instructions that are executed
    if the condition evaluates to True
else:
    false-block
    several instructions that are executed
    if the condition evaluates to False

A palavra-chave else com o bloco 'false' pode ser omitida caso nada seja feito se a condição for falsa. Por exemplo, podemos substituir a variável x por seu valor absoluto assim:

x = int(input())
if x < 0:
    x = -x
print(x)

Neste exemplo, a variável x é atribuída a -x somente se x < 0 . Em contraste, a instrução print(x) é executada toda vez, porque não é recuada, então não pertence ao bloco 'true'.

A indentação é uma maneira geral no Python de separar blocos de código. Todas as instruções dentro do mesmo bloco devem ser recuadas da mesma maneira, ou seja, devem ter o mesmo número de espaços no início da linha. Recomenda-se usar 4 espaços para recuo.

O recuo é o que torna o Python diferente da maioria das outras linguagens, nas quais as chaves { e } são usadas para formar os blocos.

By the way, há uma função embutida para valor absoluto em Python:

x = int(input())
print(abs(x))
Advertising by Google, may be based on your interests

2. Condições aninhadas

Qualquer instrução em Python pode ser colocada em blocos "verdadeiros" e blocos "falsos", incluindo outra instrução condicional. Desta forma, obtemos condições aninhadas. Os blocos de condições internas são recuados usando mais duas vezes espaços (por exemplo, 8 espaços). Vamos ver um exemplo. Dadas as coordenadas do ponto no avião, imprima seu quadrante.

x = int(input())
y = int(input())
if x > 0:
    if y > 0:
        # x é maior que 0, y é maior que 0
        print("Quadrant I")
    else:    
        # x é maior que 0, y é menor ou igual a 0
        print("Quadrant IV")
else:
    if y > 0:
        # x é menor ou igual a 0, y é maior que 0
        print("Quadrant II")
    else:    
        # x é menor ou igual a 0, y é menor ou igual a 0
        print("Quadrant III")

Neste exemplo, usamos os comentários: o texto explicativo que não tem efeito na execução do programa. Este texto começa com o hash # e dura até o final da linha.

Advertising by Google, may be based on your interests

3. Operadores de comparação

Normalmente, a condição após if tem um ou mais dos seguintes operadores:

<
Menos - a condição é verdadeira se o lado esquerdo for menor que o lado direito.
>
maior - a condição é verdadeira se o lado esquerdo for maior que o lado direito.
<=
menor ou igual.
>=
maior ou igual.
==
igual.
!=
não igual.

Por exemplo, a condição x * x < 1000 significa “o valor da expressão x * x é menor que 1000” e a condição 2 * x != y significa que “o valor duplicado da variável x não é igual ao valor da variável y ”.

Os operadores de comparação no Python podem ser agrupados assim: a == b == c ou x <= y >= 10 . É uma coisa rara entre linguagens de programação.

Advertising by Google, may be based on your interests

4. Objetos Bool e operadores lógicos

Quando somamos dois objetos inteiros usando o operador + , como 2 + 5 , obtemos um novo objeto: 7 . Da mesma forma, quando comparamos dois inteiros usando o operador < , como 2 < 5 , obtemos um novo objeto: True .

print(2 < 5)
print(2 > 5)
Os objetos True e False possuem um tipo especial chamado bool . Como cada nome de tipo pode ser usado para converter objetos nesse tipo, vamos ver o que esse elenco fornece para números:
print(bool(-10))    # Verdade
print(bool(0))      # Falso - zero é o único número falso
print(bool(10))     # Verdade

print(bool(''))     # False - string vazia é a única string falsa
print(bool('abc'))  # Verdade

Às vezes você precisa verificar várias condições de uma só vez. Por exemplo, você pode verificar se um número n é divisível por 2 usando a condição n % 2 == 0 ( n dá um resto 0 ao dividir por 2 ). Se você precisa checar se dois números n e m são ambos divisíveis por 2, você deve checar ambos n % 2 == 0 e m % 2 == 0 . Para fazer isso, você se une a eles usando um operador and (AND lógico): n % 2 == 0 and m % 2 == 0 .

Python possui lógica AND, lógica OR e negação.

Operador and é um operador binário que avalia como True se e somente se o lado esquerdo e o lado direito forem True .

Operador or é um operador binário que avalia como True se pelo menos um dos seus lados for True .

Operador not é uma negação unária, é seguida por algum valor. É avaliado como True se esse valor for False e vice-versa.

Vamos verificar se pelo menos um dos dois números termina com 0:

a = int(input())
b = int(input())
if a % 10 == 0 or b % 10 == 0:
    print('YES')
else:
    print('NO')

Vamos verificar se o número a é positivo e o número b não é negativo:

if a > 0 and not (b < 0):

Em vez de not (b < 0) , podemos escrever (b >= 0) .

Advertising by Google, may be based on your interests

5. palavra 'elif'

Se você tiver mais de duas opções para diferenciar usando o operador condicional, poderá usar if... elif... else statement.

Vamos mostrar como funciona reescrevendo o exemplo com o ponto (x, y) no plano e os quadrantes acima:

x = int(input())
y = int(input())
if x > 0 and y > 0:
    print("Quadrant I")
elif x > 0 and y < 0:
    print("Quadrant IV")
elif y > 0:
    print("Quadrant II")
else:
    print("Quadrant III")

Nesse caso, as condições em if e elif são verificadas uma após a outra até que a primeira condição verdadeira seja encontrada. Então apenas o bloco verdadeiro para aquela condição está sendo executado. Se todas as condições forem falsas, o bloco 'else' está sendo executado, se estiver presente.

Advertising by Google, may be based on your interests