1 00:00:00,000 --> 00:00:03,970 Agora que você já conhece as estruturas condicionais em Portugol, 2 00:00:03,970 --> 00:00:07,050 vamos ver na prática como é feito no Python. 3 00:00:14,857 --> 00:00:17,734 Para executar um código em Python, existem várias formas. 4 00:00:17,734 --> 00:00:19,255 Você pode instalar na sua máquina 5 00:00:19,255 --> 00:00:22,468 e executar com sua ferramenta predileta, 6 00:00:22,468 --> 00:00:24,791 ou podemos usar alguma plataforma online. 7 00:00:24,791 --> 00:00:28,415 Aqui estou no "online-python.com", 8 00:00:28,415 --> 00:00:30,745 uma plataforma que você consegue executar códigos 9 00:00:30,745 --> 00:00:34,534 rapidamente na linguagem Python. 10 00:00:34,534 --> 00:00:36,970 Eu tenho um algoritmo implementado 11 00:00:36,970 --> 00:00:41,574 onde nós vamos ver o uso do "if" e "else" da estrutura condicional. 12 00:00:41,574 --> 00:00:45,163 Primeiramente, dentro dessa variável "idade", 13 00:00:45,163 --> 00:00:47,857 nós estamos pedindo para o usuário digitar uma idade, 14 00:00:47,857 --> 00:00:51,758 transformando o que ele digitou, quem vem em uma string, 15 00:00:51,758 --> 00:00:53,853 em um número inteiro. 16 00:00:53,853 --> 00:00:57,857 Depois, fazemos a validação através do "if". 17 00:00:57,857 --> 00:01:01,828 Aqui, a condição que eu quero, "idade >= 18". 18 00:01:01,828 --> 00:01:04,813 No final do "if", eu tenho que colocar os ":" 19 00:01:04,813 --> 00:01:08,985 e essa identação é obrigatória 20 00:01:08,985 --> 00:01:12,438 para entender o que está dentro do "if". 21 00:01:12,438 --> 00:01:16,743 No caso, somente esse "print" com um texto para o usuário. 22 00:01:16,743 --> 00:01:19,540 Então, eu tenho também o comando "else", com ":", 23 00:01:19,540 --> 00:01:23,963 e também o recuo para dizer que o "print" está dentro do "else", 24 00:01:23,963 --> 00:01:27,920 ou seja, se essa condição for verdadeira, ele vai imprimir. 25 00:01:27,920 --> 00:01:29,589 "Você pode assistir os vídeos"; 26 00:01:29,589 --> 00:01:33,121 se condição "idade >= a 18" for falsa, 27 00:01:33,121 --> 00:01:36,162 ele vai imprimir esse outro texto. 28 00:01:36,162 --> 00:01:39,565 Clicando no "Run", eu vou conseguir executar esse código. 29 00:01:39,565 --> 00:01:42,859 Então, eu vou digitar uma idade, uma idade de 20 30 00:01:42,859 --> 00:01:44,950 e, no caso, o acesso foi concedido, 31 00:01:44,950 --> 00:01:48,241 ou seja, ele imprimiu o que está dentro do "if". 32 00:01:48,241 --> 00:01:51,897 Se eu colocar uma idade menor do que 18, 33 00:01:51,897 --> 00:01:55,581 ele vai executar o que está no "else". 34 00:01:55,581 --> 00:01:59,668 Aqui no Python, eu tenho os operadores relacionais também. 35 00:01:59,668 --> 00:02:01,687 Então, eu tenho o "and". 36 00:02:01,687 --> 00:02:08,194 Eu poderia colocar "idade <= 60", ou "idade < 60", 37 00:02:08,194 --> 00:02:14,834 ou seja, eu tenho a condição idade >= 18 e idade < 60, 38 00:02:14,834 --> 00:02:17,570 ele tem que atender a essas duas condições 39 00:02:17,570 --> 00:02:20,106 para que este texto seja impresso. 40 00:02:20,106 --> 00:02:23,709 Então, se eu executar aqui e colocar 70 anos, agora, 41 00:02:23,709 --> 00:02:25,208 ele não vai ter a permissão, 42 00:02:25,208 --> 00:02:29,782 porque essa condição aqui se tornou falsa. 43 00:02:29,782 --> 00:02:34,120 Além do "and", eu tenho "or", que seria um ou outro, 44 00:02:34,120 --> 00:02:37,590 então ou a idade é maior, igual ou idade menor, 45 00:02:37,590 --> 00:02:41,394 e eu tenho a negação, também, seria o "not". 46 00:02:41,394 --> 00:02:46,098 Então, no caso, ele está invertendo o resultado dessa condição. 47 00:02:46,098 --> 00:02:47,407 Se isso aqui for verdadeiro, 48 00:02:47,407 --> 00:02:50,431 o "not" vai transformar essa expressão no falso; 49 00:02:50,431 --> 00:02:53,739 e se for falso, ele transforma em verdadeiro. 50 00:02:53,739 --> 00:02:58,051 Esses são os nossos operadores relacionais dentro do Python. 51 00:02:58,051 --> 00:03:01,847 É possível trabalhar, também, com "if" encadeado dentro do Python. 52 00:03:01,847 --> 00:03:05,751 Porém, no Python existe uma estrutura chamada "elif", 53 00:03:05,751 --> 00:03:07,626 que é a junção do "else" com o "if", 54 00:03:07,626 --> 00:03:09,422 onde eu coloco já uma condição, 55 00:03:09,422 --> 00:03:11,390 ficando um código muito mais simples. 56 00:03:11,390 --> 00:03:12,494 Vamos ver na prática. 57 00:03:12,494 --> 00:03:16,062 Aqui eu tenho um algoritmo onde nós estamos validando 58 00:03:16,062 --> 00:03:19,899 a premiação dos clientes de acordo com o valor de compras 59 00:03:19,899 --> 00:03:22,735 e também a frequência que ele está realizando as compras. 60 00:03:22,735 --> 00:03:25,264 Então, primeiramente, nós estamos armazenando 61 00:03:25,264 --> 00:03:27,757 nesta variável chamada "valor_compras" 62 00:03:27,757 --> 00:03:31,510 o valor total das compras do nosso cliente; 63 00:03:31,510 --> 00:03:34,046 e aqui na "frequencia" nós pedimos para ele colocar 64 00:03:34,046 --> 00:03:38,484 quantas vezes ele realizou uma compra na nossa loja. 65 00:03:38,484 --> 00:03:43,422 Essa aqui é do tipo float e a "frequencia" do tipo inteiro. 66 00:03:43,422 --> 00:03:44,890 Então, começam as validações: 67 00:03:44,890 --> 00:03:51,455 se "valor_compras >=2000.0" e a "frequencia >=10", 68 00:03:51,455 --> 00:03:54,500 ele vai ter aqui a categoria VIP. 69 00:03:54,500 --> 00:03:59,103 E então, o nosso "elif" ou seja, o "else" junto com "if" 70 00:03:59,103 --> 00:04:02,641 e esse "if" já vem com a nova condição. 71 00:04:02,641 --> 00:04:05,433 Então, se essa expressão for falsa, 72 00:04:05,433 --> 00:04:09,548 ele vai vir para o "elif" e vai testar essa nova condição aqui. 73 00:04:09,548 --> 00:04:14,520 Se essa aqui também for falsa, ele vai para o próximo e o "elif", 74 00:04:14,520 --> 00:04:17,377 testando aqui se "valor_compras > 500" 75 00:04:17,377 --> 00:04:19,492 ou "frequencia >5", 76 00:04:19,492 --> 00:04:22,595 e se essa condição não for verdadeira, 77 00:04:22,595 --> 00:04:26,098 as duas expressões aqui com "or' forem verdadeiras, 78 00:04:26,098 --> 00:04:28,808 ele vai para o "else" para imprimir 79 00:04:28,808 --> 00:04:32,738 essa última mensagem para o nosso usuário. 80 00:04:32,738 --> 00:04:34,573 Vamos testar? 81 00:04:34,573 --> 00:04:42,173 Então, no caso o "valor_compras", eu comprei 1000 reais 82 00:04:42,173 --> 00:04:44,516 e eu realizei 6 compras no ano. 83 00:04:44,516 --> 00:04:47,753 Aonde será que ele vai? 84 00:04:47,753 --> 00:04:51,190 Qual "if" ou "elif" que ele vai executar? 85 00:04:51,190 --> 00:04:56,061 Então, aqui deu que eu estou na categoria ouro e ganhei prêmios extras, 86 00:04:56,061 --> 00:05:01,066 ou seja, se olhar aqui, "valor_compras" é maior do que 1000, 87 00:05:01,066 --> 00:05:04,470 maior ou igual, senão não teria entrado aqui nessa condição. 88 00:05:04,470 --> 00:05:07,632 Então ele validou a primeira, viu que não foi verdadeira, 89 00:05:07,632 --> 00:05:11,977 já que eu só fiz 1000 de valor e 6 90 00:05:11,977 --> 00:05:14,917 e ele caiu aqui nesse próximo e "elif". 91 00:05:14,917 --> 00:05:19,151 Outra estrutura condicional existente no Python, a partir do 3.10, 92 00:05:19,151 --> 00:05:23,498 é o "match case", é o equivalente ao "switch case" em outras linguagens. 93 00:05:23,498 --> 00:05:26,933 Eu quero saber qual é o valor que existe dentro da variável. 94 00:05:26,933 --> 00:05:28,976 Se eu tenho um conjunto de valores possíveis 95 00:05:28,976 --> 00:05:31,897 e, dependendo do valor, eu quero executar alguns comandos, 96 00:05:31,897 --> 00:05:35,203 eu posso utilizar essa estrutura condicional. 97 00:05:35,203 --> 00:05:39,038 Aqui eu tenho um algoritmo que está implementando uma calculadora, 98 00:05:39,038 --> 00:05:42,282 onde o usuário tem 4 opções 99 00:05:42,282 --> 00:05:44,801 e ele vai escolher a opção de acordo com um número. 100 00:05:44,801 --> 00:05:49,194 Então, 1 é soma, 2 é subtração, 3 é multiplicação e 4 é divisão 101 00:05:49,194 --> 00:05:51,388 e, de acordo com esse menu que foi apresentado, 102 00:05:51,388 --> 00:05:53,302 ele vai escolher uma das opções, 103 00:05:53,302 --> 00:05:58,323 que será armazenadas nesta variável chamado "escolha". 104 00:05:58,323 --> 00:06:00,793 Depois, nós vamos ler outros 2 números, 105 00:06:00,793 --> 00:06:04,062 que serão realizados na operação aritmética que ele escolheu, 106 00:06:04,062 --> 00:06:08,534 então, vão ser armazenado no "num1" e no "num2". 107 00:06:08,534 --> 00:06:10,636 Então, nós vamos calcular o resultado. 108 00:06:10,636 --> 00:06:12,600 Como que vamos calcular o resultado? 109 00:06:12,600 --> 00:06:16,208 De acordo com o que ele escolheu aqui nessa opção. 110 00:06:16,208 --> 00:06:18,203 Então, "match (escolha):", 111 00:06:18,203 --> 00:06:21,947 o que tiver dentro dessa variável chamada "escolha", 112 00:06:21,947 --> 00:06:25,517 Se for 1, ele vai executar esses comandos; 113 00:06:25,517 --> 00:06:32,772 se for 2, esses outros; 3 essa multiplicação; 114 00:06:32,772 --> 00:06:38,953 e se for 4, primeiro ele valida se "num2" é diferente de 0, 115 00:06:38,953 --> 00:06:41,033 já que eu não posso dividir por 0. 116 00:06:41,033 --> 00:06:45,337 Se for diferente, ele vai realizar a divisão e mostrar o resultado; 117 00:06:45,337 --> 00:06:49,174 se não for, ele vai falar que "Não é possível dividir por zero!". 118 00:06:49,174 --> 00:06:53,979 Esse último case, quando colocamos esse "_", 119 00:06:53,979 --> 00:06:58,417 quer dizer que nenhuma das opções foram atendidas, ou seja, 120 00:06:58,417 --> 00:07:02,910 o "escolha" que o usuário digitou não é o número 1, 2, 3 ou 4, 121 00:07:02,910 --> 00:07:05,057 ou seja, qualquer outro valor que ele digitou, 122 00:07:05,057 --> 00:07:08,115 então, nós temos aqui um "case" que é uma ação padrão, 123 00:07:08,115 --> 00:07:10,429 que vai realizar que é "Operação inválida!". 124 00:07:10,429 --> 00:07:14,466 Então, vamos testar, vou dar o "Run". 125 00:07:14,466 --> 00:07:17,007 Ele deu um erro aqui, falando que na linha 20 126 00:07:17,007 --> 00:07:22,240 tem um problema "Match (escolha)", sintaxe inválida. 127 00:07:22,240 --> 00:07:25,510 Provavelmente isso aconteceu por causa da versão do Python, 128 00:07:25,510 --> 00:07:30,949 onde não existe essa estrutura ainda na versão escolhida. 129 00:07:30,949 --> 00:07:33,685 Então, vou procurar por uma outra plataforma online 130 00:07:33,685 --> 00:07:35,320 para executarmos o nosso código. 131 00:07:35,320 --> 00:07:41,126 Então, vou escrever "python online", ou pesquisar aqui, 132 00:07:41,126 --> 00:07:45,697 Vou usar essa GDB online, que aqui eu consigo executar 133 00:07:45,697 --> 00:07:48,645 várias linguagens de programação, inclusive o Python 134 00:07:48,645 --> 00:07:52,604 na versão aqui que aceita o "match case". 135 00:07:52,604 --> 00:07:55,540 Então, eu vou copiar o código anterior 136 00:07:55,540 --> 00:08:00,479 e colocar aqui nessa nova plataforma e vou dar o "Run. 137 00:08:00,479 --> 00:08:02,080 Maravilha, funcionou. 138 00:08:02,080 --> 00:08:06,585 Então, no caso eu vou escolher a soma, 139 00:08:06,585 --> 00:08:11,656 vou colocar o número 5 e o número 6 e o resultado da soma foi 11, 140 00:08:11,656 --> 00:08:15,393 ou seja, como eu coloquei o valor 1, fiz a escolha 1, 141 00:08:15,393 --> 00:08:18,763 ele executou este "case" com o valor 1. 142 00:08:18,763 --> 00:08:24,369 Vou testar agora com uma opção que não existe, não é 1, 2, 3 ou 4. 143 00:08:24,369 --> 00:08:26,705 Vou colocar 9, por exemplo, 144 00:08:26,705 --> 00:08:29,670 e vou colocar 2 números quaisquer aqui 145 00:08:29,670 --> 00:08:31,717 e ele vai mostrar "Operação inválida!", 146 00:08:31,717 --> 00:08:35,019 ou seja, o "escolha", como tinha o valor 9, 147 00:08:35,019 --> 00:08:38,751 não era nem o 1, 2, 3 ou 4, ele veio aqui para o último, 148 00:08:38,751 --> 00:08:41,193 que é o "case" padrão que nós temos. 149 00:08:41,193 --> 00:08:44,256 Com isso nós vimos as estruturas condicionais no Python, 150 00:08:44,256 --> 00:08:49,470 o "if", "else", o "elif" e, também, a nova versão com o "match case".