Baixe o app para aproveitar ainda mais
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.
Compartilhar