WEBVTT 00:00:00.000 --> 00:00:03.970 Agora que você já conhece as estruturas condicionais em Portugol, 00:00:03.970 --> 00:00:07.050 vamos ver na prática como é feito no Python. 00:00:14.857 --> 00:00:17.734 Para executar um código em Python, existem várias formas. 00:00:17.734 --> 00:00:19.255 Você pode instalar na sua máquina 00:00:19.255 --> 00:00:22.468 e executar com sua ferramenta predileta, 00:00:22.468 --> 00:00:24.791 ou podemos usar alguma plataforma online. 00:00:24.791 --> 00:00:28.415 Aqui estou no "online-python.com", 00:00:28.415 --> 00:00:30.745 uma plataforma que você consegue executar códigos 00:00:30.745 --> 00:00:34.534 rapidamente na linguagem Python. 00:00:34.534 --> 00:00:36.970 Eu tenho um algoritmo implementado 00:00:36.970 --> 00:00:41.574 onde nós vamos ver o uso do "if" e "else" da estrutura condicional. 00:00:41.574 --> 00:00:45.163 Primeiramente, dentro dessa variável "idade", 00:00:45.163 --> 00:00:47.857 nós estamos pedindo para o usuário digitar uma idade, 00:00:47.857 --> 00:00:51.758 transformando o que ele digitou, quem vem em uma string, 00:00:51.758 --> 00:00:53.853 em um número inteiro. 00:00:53.853 --> 00:00:57.857 Depois, fazemos a validação através do "if". 00:00:57.857 --> 00:01:01.828 Aqui, a condição que eu quero, "idade >= 18". 00:01:01.828 --> 00:01:04.813 No final do "if", eu tenho que colocar os ":" 00:01:04.813 --> 00:01:08.985 e essa identação é obrigatória 00:01:08.985 --> 00:01:12.438 para entender o que está dentro do "if". 00:01:12.438 --> 00:01:16.743 No caso, somente esse "print" com um texto para o usuário. 00:01:16.743 --> 00:01:19.540 Então, eu tenho também o comando "else", com ":", 00:01:19.540 --> 00:01:23.963 e também o recuo para dizer que o "print" está dentro do "else", 00:01:23.963 --> 00:01:27.920 ou seja, se essa condição for verdadeira, ele vai imprimir. 00:01:27.920 --> 00:01:29.589 "Você pode assistir os vídeos"; 00:01:29.589 --> 00:01:33.121 se condição "idade >= a 18" for falsa, 00:01:33.121 --> 00:01:36.162 ele vai imprimir esse outro texto. 00:01:36.162 --> 00:01:39.565 Clicando no "Run", eu vou conseguir executar esse código. 00:01:39.565 --> 00:01:42.859 Então, eu vou digitar uma idade, uma idade de 20 00:01:42.859 --> 00:01:44.950 e, no caso, o acesso foi concedido, 00:01:44.950 --> 00:01:48.241 ou seja, ele imprimiu o que está dentro do "if". 00:01:48.241 --> 00:01:51.897 Se eu colocar uma idade menor do que 18, 00:01:51.897 --> 00:01:55.581 ele vai executar o que está no "else". 00:01:55.581 --> 00:01:59.668 Aqui no Python, eu tenho os operadores relacionais também. 00:01:59.668 --> 00:02:01.687 Então, eu tenho o "and". 00:02:01.687 --> 00:02:08.194 Eu poderia colocar "idade <= 60", ou "idade < 60", 00:02:08.194 --> 00:02:14.834 ou seja, eu tenho a condição idade >= 18 e idade < 60, 00:02:14.834 --> 00:02:17.570 ele tem que atender a essas duas condições 00:02:17.570 --> 00:02:20.106 para que este texto seja impresso. 00:02:20.106 --> 00:02:23.709 Então, se eu executar aqui e colocar 70 anos, agora, 00:02:23.709 --> 00:02:25.208 ele não vai ter a permissão, 00:02:25.208 --> 00:02:29.782 porque essa condição aqui se tornou falsa. 00:02:29.782 --> 00:02:34.120 Além do "and", eu tenho "or", que seria um ou outro, 00:02:34.120 --> 00:02:37.590 então ou a idade é maior, igual ou idade menor, 00:02:37.590 --> 00:02:41.394 e eu tenho a negação, também, seria o "not". 00:02:41.394 --> 00:02:46.098 Então, no caso, ele está invertendo o resultado dessa condição. 00:02:46.098 --> 00:02:47.407 Se isso aqui for verdadeiro, 00:02:47.407 --> 00:02:50.431 o "not" vai transformar essa expressão no falso; 00:02:50.431 --> 00:02:53.739 e se for falso, ele transforma em verdadeiro. 00:02:53.739 --> 00:02:58.051 Esses são os nossos operadores relacionais dentro do Python. 00:02:58.051 --> 00:03:01.847 É possível trabalhar, também, com "if" encadeado dentro do Python. 00:03:01.847 --> 00:03:05.751 Porém, no Python existe uma estrutura chamada "elif", 00:03:05.751 --> 00:03:07.626 que é a junção do "else" com o "if", 00:03:07.626 --> 00:03:09.422 onde eu coloco já uma condição, 00:03:09.422 --> 00:03:11.390 ficando um código muito mais simples. 00:03:11.390 --> 00:03:12.494 Vamos ver na prática. 00:03:12.494 --> 00:03:16.062 Aqui eu tenho um algoritmo onde nós estamos validando 00:03:16.062 --> 00:03:19.899 a premiação dos clientes de acordo com o valor de compras 00:03:19.899 --> 00:03:22.735 e também a frequência que ele está realizando as compras. 00:03:22.735 --> 00:03:25.264 Então, primeiramente, nós estamos armazenando 00:03:25.264 --> 00:03:27.757 nesta variável chamada "valor_compras" 00:03:27.757 --> 00:03:31.510 o valor total das compras do nosso cliente; 00:03:31.510 --> 00:03:34.046 e aqui na "frequencia" nós pedimos para ele colocar 00:03:34.046 --> 00:03:38.484 quantas vezes ele realizou uma compra na nossa loja. 00:03:38.484 --> 00:03:43.422 Essa aqui é do tipo float e a "frequencia" do tipo inteiro. 00:03:43.422 --> 00:03:44.890 Então, começam as validações: 00:03:44.890 --> 00:03:51.455 se "valor_compras >=2000.0" e a "frequencia >=10", 00:03:51.455 --> 00:03:54.500 ele vai ter aqui a categoria VIP. 00:03:54.500 --> 00:03:59.103 E então, o nosso "elif" ou seja, o "else" junto com "if" 00:03:59.103 --> 00:04:02.641 e esse "if" já vem com a nova condição. 00:04:02.641 --> 00:04:05.433 Então, se essa expressão for falsa, 00:04:05.433 --> 00:04:09.548 ele vai vir para o "elif" e vai testar essa nova condição aqui. 00:04:09.548 --> 00:04:14.520 Se essa aqui também for falsa, ele vai para o próximo e o "elif", 00:04:14.520 --> 00:04:17.377 testando aqui se "valor_compras > 500" 00:04:17.377 --> 00:04:19.492 ou "frequencia >5", 00:04:19.492 --> 00:04:22.595 e se essa condição não for verdadeira, 00:04:22.595 --> 00:04:26.098 as duas expressões aqui com "or' forem verdadeiras, 00:04:26.098 --> 00:04:28.808 ele vai para o "else" para imprimir 00:04:28.808 --> 00:04:32.738 essa última mensagem para o nosso usuário. 00:04:32.738 --> 00:04:34.573 Vamos testar? 00:04:34.573 --> 00:04:42.173 Então, no caso o "valor_compras", eu comprei 1000 reais 00:04:42.173 --> 00:04:44.516 e eu realizei 6 compras no ano. 00:04:44.516 --> 00:04:47.753 Aonde será que ele vai? 00:04:47.753 --> 00:04:51.190 Qual "if" ou "elif" que ele vai executar? 00:04:51.190 --> 00:04:56.061 Então, aqui deu que eu estou na categoria ouro e ganhei prêmios extras, 00:04:56.061 --> 00:05:01.066 ou seja, se olhar aqui, "valor_compras" é maior do que 1000, 00:05:01.066 --> 00:05:04.470 maior ou igual, senão não teria entrado aqui nessa condição. 00:05:04.470 --> 00:05:07.632 Então ele validou a primeira, viu que não foi verdadeira, 00:05:07.632 --> 00:05:11.977 já que eu só fiz 1000 de valor e 6 00:05:11.977 --> 00:05:14.917 e ele caiu aqui nesse próximo e "elif". 00:05:14.917 --> 00:05:19.151 Outra estrutura condicional existente no Python, a partir do 3.10, 00:05:19.151 --> 00:05:23.498 é o "match case", é o equivalente ao "switch case" em outras linguagens. 00:05:23.498 --> 00:05:26.933 Eu quero saber qual é o valor que existe dentro da variável. 00:05:26.933 --> 00:05:28.976 Se eu tenho um conjunto de valores possíveis 00:05:28.976 --> 00:05:31.897 e, dependendo do valor, eu quero executar alguns comandos, 00:05:31.897 --> 00:05:35.203 eu posso utilizar essa estrutura condicional. 00:05:35.203 --> 00:05:39.038 Aqui eu tenho um algoritmo que está implementando uma calculadora, 00:05:39.038 --> 00:05:42.282 onde o usuário tem 4 opções 00:05:42.282 --> 00:05:44.801 e ele vai escolher a opção de acordo com um número. 00:05:44.801 --> 00:05:49.194 Então, 1 é soma, 2 é subtração, 3 é multiplicação e 4 é divisão 00:05:49.194 --> 00:05:51.388 e, de acordo com esse menu que foi apresentado, 00:05:51.388 --> 00:05:53.302 ele vai escolher uma das opções, 00:05:53.302 --> 00:05:58.323 que será armazenadas nesta variável chamado "escolha". 00:05:58.323 --> 00:06:00.793 Depois, nós vamos ler outros 2 números, 00:06:00.793 --> 00:06:04.062 que serão realizados na operação aritmética que ele escolheu, 00:06:04.062 --> 00:06:08.534 então, vão ser armazenado no "num1" e no "num2". 00:06:08.534 --> 00:06:10.636 Então, nós vamos calcular o resultado. 00:06:10.636 --> 00:06:12.600 Como que vamos calcular o resultado? 00:06:12.600 --> 00:06:16.208 De acordo com o que ele escolheu aqui nessa opção. 00:06:16.208 --> 00:06:18.203 Então, "match (escolha):", 00:06:18.203 --> 00:06:21.947 o que tiver dentro dessa variável chamada "escolha", 00:06:21.947 --> 00:06:25.517 Se for 1, ele vai executar esses comandos; 00:06:25.517 --> 00:06:32.772 se for 2, esses outros; 3 essa multiplicação; 00:06:32.772 --> 00:06:38.953 e se for 4, primeiro ele valida se "num2" é diferente de 0, 00:06:38.953 --> 00:06:41.033 já que eu não posso dividir por 0. 00:06:41.033 --> 00:06:45.337 Se for diferente, ele vai realizar a divisão e mostrar o resultado; 00:06:45.337 --> 00:06:49.174 se não for, ele vai falar que "Não é possível dividir por zero!". 00:06:49.174 --> 00:06:53.979 Esse último case, quando colocamos esse "_", 00:06:53.979 --> 00:06:58.417 quer dizer que nenhuma das opções foram atendidas, ou seja, 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, 00:07:02.910 --> 00:07:05.057 ou seja, qualquer outro valor que ele digitou, 00:07:05.057 --> 00:07:08.115 então, nós temos aqui um "case" que é uma ação padrão, 00:07:08.115 --> 00:07:10.429 que vai realizar que é "Operação inválida!". 00:07:10.429 --> 00:07:14.466 Então, vamos testar, vou dar o "Run". 00:07:14.466 --> 00:07:17.007 Ele deu um erro aqui, falando que na linha 20 00:07:17.007 --> 00:07:22.240 tem um problema "Match (escolha)", sintaxe inválida. 00:07:22.240 --> 00:07:25.510 Provavelmente isso aconteceu por causa da versão do Python, 00:07:25.510 --> 00:07:30.949 onde não existe essa estrutura ainda na versão escolhida. 00:07:30.949 --> 00:07:33.685 Então, vou procurar por uma outra plataforma online 00:07:33.685 --> 00:07:35.320 para executarmos o nosso código. 00:07:35.320 --> 00:07:41.126 Então, vou escrever "python online", ou pesquisar aqui, 00:07:41.126 --> 00:07:45.697 Vou usar essa GDB online, que aqui eu consigo executar 00:07:45.697 --> 00:07:48.645 várias linguagens de programação, inclusive o Python 00:07:48.645 --> 00:07:52.604 na versão aqui que aceita o "match case". 00:07:52.604 --> 00:07:55.540 Então, eu vou copiar o código anterior 00:07:55.540 --> 00:08:00.479 e colocar aqui nessa nova plataforma e vou dar o "Run. 00:08:00.479 --> 00:08:02.080 Maravilha, funcionou. 00:08:02.080 --> 00:08:06.585 Então, no caso eu vou escolher a soma, 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, 00:08:11.656 --> 00:08:15.393 ou seja, como eu coloquei o valor 1, fiz a escolha 1, 00:08:15.393 --> 00:08:18.763 ele executou este "case" com o valor 1. 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. 00:08:24.369 --> 00:08:26.705 Vou colocar 9, por exemplo, 00:08:26.705 --> 00:08:29.670 e vou colocar 2 números quaisquer aqui 00:08:29.670 --> 00:08:31.717 e ele vai mostrar "Operação inválida!", 00:08:31.717 --> 00:08:35.019 ou seja, o "escolha", como tinha o valor 9, 00:08:35.019 --> 00:08:38.751 não era nem o 1, 2, 3 ou 4, ele veio aqui para o último, 00:08:38.751 --> 00:08:41.193 que é o "case" padrão que nós temos. 00:08:41.193 --> 00:08:44.256 Com isso nós vimos as estruturas condicionais no Python, 00:08:44.256 --> 00:08:49.470 o "if", "else", o "elif" e, também, a nova versão com o "match case".