Estrutura Condicional if em Python
As estruturas condicionais utilizam expressões lógicas e, com base no resultado dessas expressões, direcionam a execução do programa por diferentes caminhos. Uma dessas estruturas é a condicional if
, que tem a seguinte definição formal:
if expressão_lógica:
instruções
[elif expressão_lógica:
instruções]
[else:
instruções]
Na forma mais simples, após a palavra-chave if
vem uma expressão lógica. Se essa expressão retornar True
, o bloco de instruções subsequente será executado. Cada uma das instruções deve começar em uma nova linha e deve ter um recuo (recomendado ser de 4 espaços ou múltiplo de 4) a partir da linha do if
:
language = "english"
if language == "english":
print("Hello")
print("End")
Neste exemplo, como o valor da variável language é "english", o bloco if
será executado, e a instrução print("Hello")
será chamada. O resultado no console será:
Hello End
Repare que a última linha do código, print("End")
, não está indentada, ou seja, não faz parte do bloco if
, sendo executada independentemente do resultado da expressão if
.
Se, por outro lado, tivesse sido colocada uma indentação, essa instrução também faria parte do bloco if
:
language = "english"
if language == "english":
print("Hello")
print("End")
Bloco else
Quando precisamos definir um caminho alternativo para o caso em que a expressão no if
seja avaliada como False
, podemos utilizar o bloco else
:
language = "portuguese"
if language == "english":
print("Hello")
else:
print("Olá")
print("End")
Se a expressão language == "english"
retornar True
, o bloco if
será executado. Caso contrário, o bloco else
será executado. Neste caso, como language == "english"
retorna False
, o código no bloco else
será executado. O console exibirá:
Olá End
As instruções no bloco else
também devem estar indentadas. No exemplo acima, o print("End")
não está indentado, portanto será executado independentemente da avaliação do if
. Ou seja, ele será executado mesmo se a condição do if
for False
.
O bloco else
pode conter várias instruções, desde que estejam corretamente indentadas:
language = "portuguese"
if language == "english":
print("Hello")
print("World")
else:
print("Olá")
print("Mundo")
elif
Quando há a necessidade de incluir várias condições alternativas, utilizamos o bloco elif
, seguido de um novo bloco de instruções:
language = "german"
if language == "english":
print("Hello")
print("World")
elif language == "german":
print("Hallo")
print("Welt")
else:
print("Olá")
print("Mundo")
Neste exemplo, o Python primeiro verifica a expressão no if
. Se ela for True
, o bloco correspondente será executado. Caso contrário, a expressão no elif
será verificada. Se o resultado do elif
for True
, as instruções no bloco elif
serão executadas. Se todas as condições anteriores falharem, o bloco else
será executado.
Podemos utilizar vários blocos elif
para tratar diferentes condições:
language = "german"
if language == "english":
print("Hello")
elif language == "german":
print("Hallo")
elif language == "french":
print("Salut")
else:
print("Olá")
Estruturas if aninhadas
É possível utilizar estruturas if
aninhadas, ou seja, um if
dentro de outro:
language = "english"
daytime = "morning"
if language == "english":
print("English")
if daytime == "morning":
print("Good morning")
else:
print("Good evening")
Aqui, o bloco if
contém uma estrutura if/else
interna. Se a variável language
for "english", o código dentro da estrutura interna verificará o valor de daytime
e executará a instrução correspondente. O resultado será:
English
Good morning
As expressões if
aninhadas também devem seguir as regras de indentação. Indentações incorretas podem alterar a lógica do programa. Por exemplo, considere o seguinte código:
language = "english"
daytime = "morning"
if language == "english":
print("English")
if daytime == "morning":
print("Good morning")
else:
print("Good evening")
Neste caso, o segundo if
é independente do primeiro, e ambos serão avaliados separadamente.
É possível aninhar estruturas if/elif/else
dentro de blocos elif
e else
:
language = "portuguese"
daytime = "manhã"
if language == "portuguese":
if daytime == "manhã":
print("Bom dia")
elif daytime == "tarde":
print("Boa tarde")
else:
print("Boa noite")
else:
if daytime == "morning":
print("Good morning")
elif daytime == "afternoon":
print("Good afternoon")
else:
print("Good evening")
Nesse caso, dependendo da combinação das condições, o bloco adequado será executado.