Buscar

3 - Conditionals

Prévia do material em texto

Comandos Condicionais 
www.pythonlearn.com 
Execução Condicional 
•  Até o momento, aprendemos instruções para realizar 
entrada e saída de dados e operações matemáticas simples 
 
•  Com o que aprendemos, podemos escrever programas em 
que as instruções são executadas de modo sequencial 
Instrução 1
Instrução 2
…
Instrução n
Execução Condicional 
 
•  No entanto, existe alguma instrução que permite que 
um conjunto de instruções seja executado apenas 
se uma condição for satisfeita (verdadeira)? 
 
•  Exemplo: exibir uma mensagem informando que o 
aluno foi aprovado apenas se a média de suas notas 
for maior ou igual a 6 
 
Instrustrução Condicional 
 
 
 
•  Comando condicional if: 
 
 if expressão:
declaração 1
declaração 2
…
declaração n
declaração j
declaração j + 1
•  Se expressão for True (verdade), executa as declarações de 1 até n 
•  Se expressão for False (falso), pula para a execução da declaração j 
 
•  O recuo (TAB ou 4 espaços) determina que as declarações de 1 até n 
pertencem ao comando if 
 
Instruções 
Condicionais 
Saída: 
 
Menor 
Fim 
Programa: 
 
x = 5 
if x < 10: 
 print('Menor') 
 
if x > 20: 
 print('Maior') 
 
print('Fim') 
x = 5 
X < 10 ? 
print 'Menor' 
X > 20 ? 
print 'Maior' 
print 'Fim' 
Sim 
Sim 
PythonTutor: https://goo.gl/W8Ld4M 
Expressões Booleanas 
•  x < 10 e x > 20 são exemplos de Expressões Booleanas 
•  Expressões Booleanas são executadas e sempre produzem um de dois valores 
possíveis: 
•  True 
•  False 
•  True e False são constantes booleanas e não strings 
•  Exemplo: True é diferente de 'True' 
•  Podemos criar expressões booleanas mais complexas utilizando vários tipos de 
operadores: matemáticos, comparação e lógicos 
Operadores de Comparação 
•  Operadores de comparação 
consultam as variáveis, mas não 
alteram o valor armazenado nas 
variáveis 
http://pt.wikipedia.org/wiki/George_Boole 
Atenção: “=” é usado para atribuição. 
Python Significado 
< Menor que 
<= Menor que ou Igual 
a 
 == Igual a 
>= Maior que ou Igual a 
> Maior que 
!= Diferente 
Operadores de Comparação 
x = 5 
if x == 5: 
 print('Igual a 5') 
if x > 4: 
 print('Maior que 4') 
if x >= 5: 
 print('Maior que ou Igual a 5') 
if x < 6: print('Menor que 6') 
if x <= 5: 
 print('Menor que ou Igual a 5') 
if x != 6: 
 print('Diferente de 6’) 
Igual a 5 
Maior que 4 
Maior que ou Igual a 5 
Menor que 6 
Menor que ou Igual a 5 
Diferente de 6 
Operadores Lógicos 
•  Expressões Booleanas também podem utilizar os operadores lógicos and, or e 
not 
•  Assim como os operadores de comparação, os operadores lógicos consultam 
as variáveis, mas não alteram o valor armazenado nas variáveis 
Operadores Lógicos – Tabela 
Verdade 
•  Tabela verdade do operador lógico and
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
Operadores Lógicos – Tabela 
Verdade 
•  Tabela verdade do operador lógico or
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
Operadores Lógicos – Tabela 
Verdade 
•  Tabela verdade do operador lógico not
>>> not True
False
>>> not False
True
Operadores Lógicos 
x = 5 
if x == 5: 
 print('Igual a 5') 
if x > 0 and x < 10: 
 print('Maior que 0 e Menor que 10’) 
if x == 5 or x == 6: 
 print('Igual a 5 ou Igual a 6') 
if not x > 6: print('Menor que 6') 
Igual a 5 
Maior que 0 e Menor que 10 
Igual a 5 ou Igual a 6 
Menor que 6 
Mais Expressões Booleanas 
•  É possível armazenar o 
resultado de uma expressão 
booleana em uma variável 
•  Qual o valor da variável res no 
código ao lado? 
x = 5 
res = x >= 0 and x <= 10 
if res: 
 print('Entre 0 e 10') 
Testes de Sentido Único 
x = 5 
print('Antes é 5') 
if x == 5: 
 print('É 5') 
 print('Ainda é 5') 
 print('Terceiro 5') 
print('Depois do 5') 
print('Antes é 6') 
if x == 6: 
 print('É 6') 
 print('Ainda é 6') 
 print('Terceiro 6') 
print('Depois do 6') 
Antes é 5 
É 5 
Ainda é 5 
Terceiro 5 
Depois do 5 
Antes é 6 
Depois do 6 
X == 5 ? 
Sim 
print 'Ainda 5' 
print 'Terceiro 5' 
Não print 'É 5' 
Recuos (ou indentação) 
•  Aumente o recuo (TAB ou 4 espaços em branco) após uma declaração if 
•  Mantenha o recuo para indicar o escopo do bloco (quais linhas são 
afetadas pelo if) 
•  Reduza o recuo para retornar para o nível da declaração if para indicar o 
final do bloco 
•  Linhas em branco são ignoradas - não afetam o recuo 
•  Comentários em uma linha são simplesmente ignorados em relação ao 
recuo 
 
 
 
 
 
 
 
x = 5 
if x > 2: 
 print('Maior que 2') 
 print('Ainda maior') 
print('Feito com 2') 
 
 
 
 
 
 
 
Aumente / mantenha após if 
Diminua para indicar fim de bloco 
 
Aluno aprovado? 
nota1 = float(input('Digite a primeira nota: ')) 
nota2 = float(input('Digite a segunda nota: ')) 
media = (nota1 + nota2) / 2 
 
if media >= 6: 
 print('Aluno Aprovado!') 
if media < 6: 
 print('Aluno Reprovado!') 
 
•  Podemos melhorar esse código? 
 
•  Se o primeiro if der certo (ex: media = 9), eu preciso testar o segundo 
if? 
Testes Duplos 
•  Às vezes, queremos fazer 
algo se uma expressão 
lógica é verdadeira e às 
vezes, queremos fazer 
outra coisa se a expressão 
é falsa 
•  É como um entroncamento 
na estrada - devemos 
escolher um ou o outro 
caminho, mas não ambos 
x > 2 
print 'Maior' 
sim não 
X = 4 
print 'Não maior' 
print 'Concluído' 
Testes 
condicionais 
usando else : 
x = 4 
 
if x > 2: 
 print('Maior') 
else: 
 print('Menor') 
 
print('Concluído') 
x > 2 
print 'Maior' 
sim não 
X = 4 
print 'Menor' 
print 'Concluído' 
PythonTutor: https://goo.gl/6r5EZ4 
PythonTutor: https://goo.gl/7Gw2v2 
 
Testes Condicionais Múltiplos 
nota = float(input('Digite a nota: ')) 
if nota >= 90: 
 print('Conceito A') 
else: # nota deve ser B, C, D ou F 
 if nota >= 80: 
 print('Conceito B') 
 else: # nota deve ser C, D ou F 
 if nota >= 70: 
 print('Conceito C') 
 else: # nota deve ser D ou F 
 if nota >= 60: 
 print('Conceito D') 
 else: 
 print('Conceito F') 
Tem como melhorar? 
if x < 2: 
 print('Pequeno') 
elif x < 10: 
 print('Médio') 
else: 
 print('GRANDE') 
print('Concluído') 
x < 2 print 'Pequeno' 
yes 
no 
print 'Concluído' 
x<10 print 'Médio' 
yes 
print 'GRANDE' 
no 
Testes 
Condicionais 
Múltiplos 
x = 0 
if x < 2: 
 print('Pequeno') 
elif x < 10: 
 print('Médio') 
else: 
 print('GRANDE') 
print('Concluído') 
x < 2 print 'Pequeno' 
sim 
no 
X = 0 
print 'Concluído' 
x<10 print 'Médio' 
yes 
print 'GRANDE' 
no 
Testes 
Condicionais 
Múltiplos 
PythonTutor: https://goo.gl/sHuR3J 
x = 5 
if x < 2: 
 print('Pequeno') 
elif x < 10: 
 print('Médio') 
else: 
 print('GRANDE') 
print('Concluído') 
x < 2 print 'Pequeno' 
sim 
não 
X = 5 
print 'Concluído' 
x<10 print 'Médio' 
sim 
print 'GRANDE' 
não 
Testes 
Condicionais 
Múltiplos 
PythonTutor: https://goo.gl/WXMnSs 
x = 20 
if x < 2: 
 print('Pequeno') 
elif x < 10: 
 print('Médio') 
else: 
 print('GRANDE') 
print('Concluído') 
x < 2 print 'Pequeno' 
sim 
não 
X = 20 
print 'Concluído' 
x<10 print 'Médio' 
sim 
print 'GRANDE' 
não 
Testes 
Condicionais 
Múltiplos 
PythonTutor: https://goo.gl/Di9M7T 
Testes Condicionais Múltiplos 
nota = float(input('Digite a nota: ')) 
if nota >= 90: 
 print('Conceito A') 
elif nota >= 80: 
 print('Conceito B') 
elif nota >= 70: 
 print('Conceito C') 
elif nota >= 60: 
 print('Conceito D') 
else: 
 print('Conceito F') 
Versão melhorada do programa para 
exibir o conceito do aluno 
Quebra-cabeça “Múltiplo” 
if x < 2: 
 print('Abaixo de 2') 
elif x < 20: 
 print('Abaixo de 20') 
elif x < 10: 
 print('Abaixo de 10') 
else: 
 print('Algo mais') 
if x < 2: 
 print('Abaixo de 2') 
elif x >= 2: 
 print('2 ou mais') 
else: 
 print('Algo mais') 
Qual nunca irá imprimir? 
Escopo de Variáveis 
Traceback (mostrecent call last): 
 File "teste.py", line 5, in <module> 
 print('Resultado:', division) 
NameError: name 'division' is not 
defined 
x = int(input('Digite um inteiro: ')) 
y = int(input('Digite um inteiro: ')) 
if y > 0: 
 division = x / y 
print('Resultado:', division) 
Qual o problema? 
Exercício 
Escreva um programa que lê 4 notas [0, 100] de um aluno e calcula 
a média. Se a média for maior ou igual a 60, exibir uma mensagem 
informando que o aluno foi aprovado. Caso contrário, exibir uma 
mensagem informando que o aluno foi reprovado 
 
Entre com a nota 1: 100 
Entre com a nota 2: 90 
Entre com a nota 3: 85 
Entre com a nota 4: 87 
Aprovado! 
Solução 
nota1 = int(input('Entre com nota 1: ')) 
nota2 = int(input('Entre com nota 2: ')) 
nota3 = int(input('Entre com nota 3: ')) 
nota4 = int(input('Entre com nota 4: ')) 
media = (nota1 + nota2 + nota3 + nota4) / 4 
if media >= 60: 
 print('Aprovado!') 
else: 
 print('Reprovado!') 
Exercício 
Reescreva seu cálculo de pagamento para pagar ao empregado 1.5 
vezes o valor por hora para as horas extras trabalhadas acima de 40 
horas. 
 
Entre com as Horas: 45 
Entre com o Valor por Hora: 10 
Pagamento: 475.0 
475 = 40 * 10 + 5 * 
15 
Solução 
horas_total = int(input('Entre com as horas: ')) 
taxa = float(input('Entre com o valor por hora: ')) 
 
if horas_total <= 40: 
 horas_regular = horas_total 
 hora_extra = 0 
else: 
 horas_regular = 40 
 hora_extra = horas_total - 40 
 
pagamento = horas_regular * taxa + (hora_extra * taxa * 1.5) 
 
print('Pagamento: %.2f' % pagamento) 
Agradecimentos / Contribuições 
These slides are Copyright 2010 - Charles R. Severance 
(www.dr-chuck.com) of the University of Michigan School of 
Information and open.umich.edu and made available under a 
Creative Commons Attribution 4.0 License. Please maintain this 
last slide in all copies of the document to comply with the 
attribution requirements of the license. If you make a change, 
feel free to add your name and organization to the list of 
contributors on this page as you republish the materials. 
 
Initial Development: Charles Severance, University of Michigan 
School of Information 
 
Translation: Silvio L Carvalho, Maria A. Pysklevicz Sakiyama 
Estes slides são de autoria 2010 - Charles R. Severance 
(www.dr-chuck.com), da Universidade de Michigan Escola de 
Informação e open.umich.edu e disponibilizado através de uma 
Licença Creative Commons Attribution 4.0. Por favor manter este 
último slide em todas as cópias do documento em conformidade 
com os requisitos de atribuição da licença. Se você fizer uma 
alteração, sinta-se livre para adicionar seu nome e organização 
à lista de contribuidores nesta página. 
 
Desenvolvimento inicial: Charles Severance, da Universidade de 
Michigan School of Information 
 
Tradução: Silvio L Carvalho, Maria A. Pysklevicz Sakiyama.

Continue navegando