Masterclass de Python de iniciante completo a mestre absoluto | Michael Murr | Skillshare
Pesquisar

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Masterclass de Python de iniciante completo a mestre absoluto

teacher avatar Michael Murr, Software Engineer :: Game Developer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Por que você deve assistir a este masterclass

      7:51

    • 2.

      Seção 1 - Introdução | 1. Python para Mac Windows

      5:08

    • 3.

      2. Baixe o IntelliJ IDE para Windows Linux Mac

      4:30

    • 4.

      3. Configurando o IntelliJ IDEA

      2:51

    • 5.

      4. Nosso primeiro programa Python

      11:16

    • 6.

      5. Como usar este MasterClass

      13:57

    • 7.

      Seção 2: Introdução ao Python | 1. Print() no Python

      14:05

    • 8.

      2. Variáveis de strings no Python

      12:47

    • 9.

      3. Personagens especiais

      8:08

    • 10.

      4. Variáveis e tipos

      7:29

    • 11.

      5. Algo para prestar atenção

      3:02

    • 12.

      6. Operadores de números

      8:36

    • 13.

      7. Tipo de dados de cadeia

      6:53

    • 14.

      8. Indexação negativa em strings

      5:36

    • 15.

      9. Cortando cordas

      7:04

    • 16.

      10. Como cortar com negativos

      4:34

    • 17.

      11. Usando um passo enquanto faz fatias

      4:36

    • 18.

      12. Cortando para trás

      6:16

    • 19.

      13. Operadores de string

      7:56

    • 20.

      14. Números de impressão

      12:45

    • 21.

      Seção 3: Tomando nossos primeiros passos | 1. Introdução aos blocos

      10:21

    • 22.

      2. Declarações if

      11:35

    • 23.

      3. Declarações de elif

      8:25

    • 24.

      4. Depuração no IntelliJ

      7:58

    • 25.

      5. Mais profundamente em declarações condicionais

      8:06

    • 26.

      6. Dê uma segunda chance

      6:47

    • 27.

      7. Operadores de teste

      8:44

    • 28.

      8. Se de forma diferente

      4:12

    • 29.

      9. Expressões complexas usando e, ou

      7:44

    • 30.

      10. Comparação simplificada em cadeia

      6:21

    • 31.

      11. Teste de valor de verdade

      8:01

    • 32.

      12. Usando in e not in Declarações condicionais

      7:34

    • 33.

      Seção 4 - Loops no Python | 1. Introdução a para loops

      9:58

    • 34.

      2. Depurando um loop de alça, espaço

      11:17

    • 35.

      3. para loops em um intervalo

      4:55

    • 36.

      4. Mais profundamente em intervalos

      4:23

    • 37.

      5. Aninhado para loops

      8:26

    • 38.

      6. Usando continue in para loops

      7:29

    • 39.

      7. Usando o break in para loops

      7:59

    • 40.

      8. Por que usar None

      6:19

    • 41.

      9. Introdução aos loops de while

      7:00

    • 42.

      10. Mais profundamente em loops while

      7:58

    • 43.

      11. Interaja em um loop de alça, espaço

      5:45

    • 44.

      12. Gerador de números aleatórios e importação

      9:25

    • 45.

      13. Alto-baixo

      7:55

    • 46.

      14. Algoritmo de busca binária

      11:11

    • 47.

      15. Concluindo nosso jogo

      6:57

    • 48.

      16. Declarações de Else em Loops

      5:28

    • 49.

      17. Else em High-Low

      5:36

    • 50.

      Seção 5 - Listas e tuplas: 1. Introdução aos tipos de sequência

      9:52

    • 51.

      2. Objetos imutáveis

      12:34

    • 52.

      3. Objetos mutáveis

      9:59

    • 53.

      4. Associando vários nomes a uma lista

      5:54

    • 54.

      5. Operações de sequência comuns

      9:40

    • 55.

      6. Operações em sequências mutáveis e anexar a uma lista

      13:44

    • 56.

      7. Iterando sobre uma lista

      6:33

    • 57.

      8. A função de enumerar

      8:39

    • 58.

      9. Melhorando nosso código

      17:16

    • 59.

      10. Removendo itens de uma lista

      6:43

    • 60.

      11. Listas de classificação

      7:00

    • 61.

      12. Classificando coisas

      10:53

    • 62.

      13. Classificação não sensível a casos

      4:35

    • 63.

      14. Criando listas

      9:37

    • 64.

      15. Substituindo uma fatia

      8:10

    • 65.

      16. Excluindo itens de uma lista

      15:23

    • 66.

      17. Removendo com segurança valores de uma lista

      15:27

    • 67.

      18. Removendo itens de uma lista de trás para frente

      7:57

    • 68.

      19. Listas aninhadas

      14:26

    • 69.

      20. Método de juntar e dividir

      15:18

    • 70.

      21. Tuples

      9:15

    • 71.

      22. Descompactando um Tuple

      5:22

    • 72.

      23. Tuplas e listas aninhadas

      6:59

    • 73.

      24. Mergulhe mais profundamente no aninhamento

      12:56

    • 74.

      Seção 6 - Funções | 1. Definindo uma função

      9:44

    • 75.

      2. Parâmetros e argumentos

      7:36

    • 76.

      3. Reversor de palavras

      7:50

    • 77.

      4. Funções que chamam funções

      8:07

    • 78.

      5. Retornando valores

      8:37

    • 79.

      6. Retornando None

      4:20

    • 80.

      7. Como lidar com argumentos inválidos

      6:23

    • 81.

      8. Valores de parâmetro padrão

      6:10

    • 82.

      9. Escrevendo uma função de Fibonacci

      15:18

    • 83.

      10. Anotações de função e dicas de tipografia

      7:55

    • 84.

      11. Impressão com estilo

      10:00

    • 85.

      12. Args de estrela

      10:40

    • 86.

      Seção 7 - Programação orientada a objetos | 1. OOP 101

      15:13

    • 87.

      2. Mais profundamente nos class

      9:41

    • 88.

      3. Aprofundar no atributo de curso

      8:14

    • 89.

      4. Algo para prestar atenção (__dict__)

      5:37

    • 90.

      5. Mais profundamente em métodos

      11:31

    • 91.

      6. Métodos estáticos

      16:43

    • 92.

      7. Acessibilidade de atributos

      9:44

    • 93.

      8. Importando dados de manipulação

      20:17

    • 94.

      9. Gestão e estrutura de dados

      9:54

    • 95.

      10. Herança 101

      13:41

    • 96.

      11. Criando subclasses

      11:00

    • 97.

      12. Implementação de método dinâmico

      8:05

    • 98.

      13. Substituindo métodos de Subclass

      11:25

    • 99.

      14. Subclass aninhados

      7:19

    • 100.

      15. Polimorfismo

      13:40

    • 101.

      16. Composição

      9:54

    • 102.

      Seção 8 - Dicionários e conjuntos | 1. Dicionário 101

      13:18

    • 103.

      2. Iterando sobre um dicionário

      5:48

    • 104.

      3. Anexando itens a um dicionário

      6:22

    • 105.

      4. Removendo itens de um dicionário

      7:33

    • 106.

      6. Construtor de informática

      13:17

    • 107.

      5. Iterando sobre chaves de dicionário usando `in`

      12:18

    • 108.

      7. Uso de vários dicionários

      7:32

    • 109.

      8. Verificando as partes de informática

      14:09

    • 110.

      9. Crie uma lista de compras

      8:40

    • 111.

      10. Adicionando itens usando setdefault

      11:50

    • 112.

      11. Criando, atualizando e dicionários de valores a partir de sequências

      16:32

    • 113.

      12. Cópia rasa com dicionário

      10:28

    • 114.

      13. Cópia profunda com dicionários

      7:44

    • 115.

      14. Introdução aos conjuntos

      12:21

    • 116.

      15. Adicionando em Conjuntos e duplicatas

      9:51

    • 117.

      16. Apagar itens de um conjunto

      6:38

    • 118.

      17. União de conjuntos

      8:54

    • 119.

      18. Defina interseção

      7:50

    • 120.

      19. Diferença de configuração

      5:33

    • 121.

      Seção 9 - Como ler e escrever arquivos | 1. Abrindo arquivos de texto

      11:26

    • 122.

      2. Como ler arquivos de texto

      9:30

    • 123.

      3. Descascando arquivos de texto

      9:22

    • 124.

      4. Analisando dados em um arquivo de texto

      13:24

    • 125.

      5. Usando dados analisados

      12:59

    • 126.

      6. Como gravar dados em um arquivo

      11:15

    • 127.

      7. Arquivos JSON 101

      21:29

    • 128.

      8. Transmitindo arquivos JSON usando urllib

      13:19

    • 129.

      9. Arquivos CSV 101

      15:44

    • 130.

      10. Como entender dialeto e sniffer

      12:25

    • 131.

      11. Como escrever um arquivo CSV

      5:03

    • 132.

      12. Leitura de forma diferente (DictReader)

      22:41

    • 133.

      13. Escrevendo de forma diferente (DictWriter)

      14:09

    • 134.

      14. Como usar DictWriter sem um dicionário

      10:42

    • 135.

      Seção 10: Usando banco de dados no Python |

      14:18

    • 136.

      2. SQLite 101

      14:46

    • 137.

      3. ATUALIZAR, EXCLUIR e ONDE

      12:18

    • 138.

      4. Administração de banco de dados

      9:52

    • 139.

      5. ENCOMENDA POR e JUNTE-SE às nossas tabelas

      14:44

    • 140.

      6. Consultas de JOINs de encadeamento

      11:31

    • 141.

      7. COMO Wildcards

      7:26

    • 142.

      8. Crie visualizações

      8:51

    • 143.

      9. Restaurando backups e funções

      17:21

    • 144.

      10. Faça alterações

      11:34

    • 145.

      11. Como hackear (tipo)

      11:14

    • 146.

      12. Placeholders e substituição de parâmetros

      10:39

    • 147.

      13. Introdução às exceções

      20:16

    • 148.

      14. Finalmente bloqueie exceções

      5:17

    • 149.

      15. Como criar exceções

      12:53

    • 150.

      16. Crie suas próprias exceções

      16:03

    • 151.

      17. Uma conta bancária mais sofisticada

      8:20

    • 152.

      18. Adicionando um banco de dados

      15:13

    • 153.

      19. INSERT Levantamentos e depósitos

      13:40

    • 154.

      20. Retornando no SQL

      16:08

    • 155.

      21. Crie Netflix (mais ou menos)

      19:00

    • 156.

      22. Adicionando barras de rolagem a listas

      5:13

    • 157.

      23. Importando nosso banco de dados

      16:04

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

391

Estudantes

1

Projetos

Sobre este curso

Como criamos nosso cural

Nosso curso foi minuciosamente criado ao longo dos anos, incorporando insights valiosos de testes, erros e feedback, para fornecer uma experiência de aprendizagem inigualável. Enquanto evoluímos e nos adaptamos constantemente para nos mantermos atualizados, permanecemos firmes em nosso compromisso com os princípios fundamentais e crenças fundamentais que sustentam nossa abordagem para ensinar programação Python e preparar você para uma carreira de sucesso no campo.

Estes princípios são os seguintes:

  • Fazendo > Assistindo a isso é porque temos desafios em cada aula
  • Entender POR QUE estamos fazendo é tão importante quanto o COMO estamos fazendo
  • A programação é melhor quando é feita da maneira mais DIVERTIDA possível
  • Construir lentamente uma base sólida é melhor do que construir rapidamente em areia movediça

Seção 1: Introdução (4 aulas)

Instruções essenciais de configuração e orientação especializada para navegação sem emenda. Aprenda como configurar seu ambiente, fazer os desafios e otimizar sua experiência de aprendizagem nesta seção introdutória abrangente.

  • Baixe Python
  • Baixe o IntelliJ
  • Configure o SDK do projeto
  • E fale sobre o curso

Seção 2: Introdução ao Python (18 aulas)

Estabelecemos uma base sólida para projetos futuros, explorando conceitos essenciais em Python e programação. Ao mergulhar no funcionamento interno da codificação, você ganhará uma compreensão profunda de seus princípios e mecânica.

  • Nosso primeiro programa
  • Impressão em Python
  • Cadeia de caracteres e caracteres especiais
  • Criando variáveis
  • Tipos de dados de cadeia
  • Como lidar com dados usando vários cortes e caracteres
  • e operadores de cadeia de caracteres

Seção 3: Primeiros passos no Python (14 aulas)

Nós exploramos os elementos centrais do código: blocos e declarações. Eles são a base do Python e da programação como um todo. Entenda como o código funciona com parâmetros e expressões diferentes, ganhando uma perspectiva abrangente sobre sua funcionalidade.

  • Introdução aos blocos e declarações
  • if, elif e else
  • Depuração no IntelliJ
  • Operadores de teste
  • Expressões complexas E / OU
  • Comparação simplificada em cadeia
  • Teste de valor de verdade
  • Usando "in" e "not in"

Seção 4: Loops no Python (18 aulas)

Aqui, muitos enfrentam desafios. Os loops de Python podem parecer intimidantes, mas com sua base sólida e nossas explicações excepcionais, você navegará facilmente pelos exemplos. Encare cada desafio, concurso para extrair o máximo de conhecimento.

  • Introdução para loops
  • Loops de depuração
  • para loops em um intervalo
  • Loops aninhados
  • Usando o Break e continuar em loops
  • Introdução aos loops de while
  • Elemento de declarações em loops
  • Gerador de números aleatórios
  • Projeto alto-baixo
  • Algoritmo de busca binária

Seção 5: Manuseio de dados usando listas e tuplas (25 aulas)

Nesta seção, exploramos o tratamento e manipulação de dados essenciais no Python. Aproveitando suas bibliotecas versáteis, mergulhamos em estruturas fundamentais, como listas e tuplas. Com uma base sólida, adotamos abordagens baseadas em projetos para melhorar nossos novos conhecimentos.

  • Introdução aos tipos de sequência
  • Objetos mutáveis e imutáveis
  • Iterando sobre uma lista
  • A função de enumerar
  • Removendo itens de uma lista
  • Criando e classificando listas
  • Excluindo com segurança itens de uma lista
  • Listas aninhadas
  • Introdução às tuplas
  • Descompactando uma tupla
  • Estruturas de dados aninhadas
  • Mais profundo no aninhamento

Seção 6: Funções no Python (16 aulas)

Esta seção significa um marco na sua jornada em Python, alcançando o nível intermediário. Explore o poder transformador das funções, dividindo código em componentes modulares. Dominar funções é vital para codificação eficiente e dinâmica. Aborde esta seção com foco e paciência para se destacar nesta lição essencial.

  • Definindo funções no Python
  • Parâmetros e argumentos
  • Depurando nossos parâmetros
  • Funções chamando funções
  • Retornando valores e nenhum
  • Como lidar com argumentos inválidos
  • Valores de parâmetro padrão
  • Como escrever uma função de Fibonacci (miniprojeto)
  • Anotações de função e dicas de tipo
  • Star Args (*args)

Seção 7: Python orientado a objetos (24 aulas)

A programação orientada a objetos (OOP) é primordial em aplicativos e programas modernos. Apesar de sua fama intimidante, simplificamos minuciosamente todos os aspectos. Com 2 a 3 mini projetos, você fará a transição com confiança para qualquer idioma ou carreira de forma perfeita.

  • Programação orientada a objetos e classes
  • Instâncias, construtores, Self e mais
  • Atributos de Class
  • Métodos e métodos estáticos
  • Acessibilidade de atributos
  • Getters e Setters
  • Atributos e propriedades de dados
  • Herança
  • Subclasses e sobrecarga
  • Polimorfismo
  • Composição

Seção 8: Manuseio de dados usando dicionários e conjuntos (23 aulas)

Bem-vindo de volta ao mundo do tratamento de dados. Explore ferramentas poderosas de Python: dicionários e conjuntos. Embora mais complexas do que listas e tuplas, elas oferecem flexibilidade inigualável de manipulação de dados. Nossa abordagem passo a passo os torna facilmente compreensíveis. Expanda suas habilidades e libere novas possibilidades!

  • Introdução aos dicionários
  • Iterando sobre um dicionário
  • Adicionando, alterando e removendo itens a um dicionário
  • Construção de informática (miniprojeto)
  • Criando, atualizando e dicionários de valores
  • Cópia rasa e profunda com dicionários
  • Introdução aos conjuntos
  • Apagar, remover e descartar itens de um conjunto
  • Defina União, interseção e diferença
  • Subconjuntos e superconjuntos

Seção 9: lendo e escrevendo arquivos (18 aulas)

No estágio avançado do Python, exploramos trabalhar com arquivos externos. Manipulação de arquivos mestre, seja local ou transmitido. Mergulhe em vários tipos de arquivo, aprimorando suas habilidades com amplos exemplos e testes. Solidifique sua carreira com leitura e escrita essenciais de arquivos.

  • Como abrir, ler e analisar arquivos de texto
  • Como analisar e usar dados de um arquivo de texto
  • Como gravar dados em um arquivo de texto
  • Arquivos JSON 101
  • Transmitindo arquivos JSON usando urllib
  • Arquivos CSV 101
  • Como entender dialeto e sniffer
  • Como escrever um arquivo CSV
  • Leitura com DictReader
  • Escrevendo com DictWriter
  • Como usar DictWriter sem um dicionário

Seção 10: Implementação de banco de dados em Python (29 aulas)

Enquanto dominamos Python, introduzimos SQL: uma linguagem poderosa. A aquisição de habilidades de SQL complementa seu conhecimento em Python, capacitando sua jornada em análise de dados, ciência ou desenvolvimento de IA. Nossa abordagem abrangente de gerenciamento de banco de dados desmistifica SQL. Explore o mundo cativante da manipulação de dados.

  • Bancos de dados 101
  • SQLite 101
  • UPDATE, DELETE e WHERE
  • Administração de banco de dados
  • ENCOMENDA POR e JUNTE-SE às nossas tabelas
  • COMO Wildcards e crie Views
  • Restaurando backups e funções
  • SQL de banco de dados no Python
  • Como comprometer mudanças
  • Como hackear (mais ou menos)
  • Placeholders e substituição de parâmetros
  • Introdução às exceções
  • Conta bancária (miniprojeto)
  • Criando Netflix (uma espécie de) (miniprojeto)

Conheça seu professor

Teacher Profile Image

Michael Murr

Software Engineer :: Game Developer

Professor

Hi there, my name is Michael Murr. I'm a software engineer from one of the most highly esteemed universities in the Middle East and the founder of 2M Dev. 

I started coding when I was about 11 years old, when my dad taught me my first lines of HTML, and I have never looked back.

I am a software engineer with more than 10 years of experience. I am the founder of 2M GameDev, a leading game development software company in the Middle East.

Over the years, I've helped hundreds of students create real-world games, learn how to code, and set their lives up for opportunities in many fields that require a software programming skillset. And I will help you do the same.Visualizar o perfil completo

Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Por que você deve assistir a este masterclass: Olá, meu nome é Michael, fundador do Two M Python Eu me especializo em ajudar estudantes a passarem de iniciantes a um programa de mestrado absoluto em Python Eu desenvolvi uma estratégia que ajudou centenas de estudantes a atingirem suas metas de se tornarem desenvolvedores de Python E eu quero fazer o mesmo por você. Mas antes de dizer como, você precisa saber que 92% das pessoas que iniciam programação em Python param apenas duas semanas devido a métodos de aprendizado ineficazes Assistir a vídeos do Youtube, ler livros e fazer seus próprios projetos não são recursos suficientes para compreender totalmente os conceitos de codificação e filosofia de programação em Python codificação e Na Two Python Deaf, fornecemos uma estrutura de aprendizado clara com uma abordagem única que se concentra na aplicação e na prática, em vez de apenas observar e vez de apenas observar Depois de terminar o curso, você se tornará um especialista em resolver problemas. Você entenderá conceitos fundamentais de codificação , como programação orientada a objetos em Python Você também se tornará altamente qualificado no tratamento de dados usando listas, casais, dicionários e conjuntos, e se destacará no trabalho com bancos de dados usando a linguagem SQL Você receberá aulas individuais personalizadas com instrutores altamente treinados que especializam em ensinar Python aos alunos, mesmo que eles não tenham nenhuma Oi, desculpe por cortar o vídeo tão implacavelmente. Mas eu tinha algumas notas que gostaria de acrescentar. Não precisamos de um instrutor particular para terminar esta master class Tudo foi explicado minuciosamente, então você pode fazer isso sozinho. Mas se você quer economizar centenas de horas, aprenda com desenvolvedores experientes em Python e garanta que você mesmo se torne um desenvolvedor de Python Eu recomendo fortemente que você acesse two m Python dev.com forward slash private Vou postar o link aqui em algum lugar e vou deixá-lo no meu perfil. Ei, só queria fazer um tour rápido pelo site para que você saiba como se locomover. Em primeiro lugar, você será recebido com aulas particulares de elite em Python , você saberá por que é elite Então você verá que garantimos que você dominou Python em menos de dez semanas E você verá esse botão aqui. Veja o que acontece quando você supera isso. Você não vai acreditar quanto tempo demorei para fazer isso, mesmo se eu te contasse. Mas de qualquer forma, ao clicar nesse botão, você reserva uma ligação gratuita Você precisa adicionar seu nome, seu melhor e-mail e adicionar também seu número de telefone, para que eu possa entrar em contato com você sobre o que está acontecendo. E, finalmente, clique neste botão aqui para reservar sua sessão de estratégia gratuita e 100% gratuita. A seguir, aqui mesmo, você pode ver que temos o vídeo. Você pode assistir novamente, mas é basicamente o mesmo. E então você tem o e-mail onde pode entrar em contato conosco em dois pontos no dev. Ou você pode entrar em contato comigo pessoalmente usando esse número aqui. Na verdade, você pode clicar nesse botão e ele o levará ao Whatsapp. E você pode então entrar em contato comigo diretamente a partir do próximo. Se você rolar para baixo, verá que essa barra na parte superior sobe. Isso também me levou muito tempo. Assim, você pode usá-lo para percorrer diferentes seções deste site. Aqui temos as crenças e você realmente deve acreditar em seu futuro como desenvolvedor de Python, mesmo que não tenha nenhuma experiência em codificação Então não se preocupe com isso. Em seguida, você verá o Y aprender conosco. Eu não vou ler tudo isso Você pode fazer isso sozinho, mas vou dar uma olhada nas ideias principais Em primeiro lugar, construímos uma base sólida de programação. Não queremos apressar as coisas, queremos ter certeza de que você entende tudo. Em seguida, somos muito amigáveis para iniciantes e também para avançados, então você está coberto por todos os lados Tempo, flexibilidade, você escolhe os horários em que deseja aprender durante a semana e quantas horas deseja aprender. Em seguida, economizamos muito tempo nos estudos. Descobrimos que, para aprender quatro ciclos sozinho, você precisa de pelo menos dez dias para aprender em uma classe de dez ou cinco . Você precisa de cinco dias, mas com aulas particulares, individuais, você pode aprender em até uma ou 2 Então você está economizando muito tempo, centenas e centenas de horas. Em seguida, tudo o que fizermos será baseado em projetos. Tudo o que aprendermos será aplicado a cenários e práticas do mundo real. , pratique, cada aula terá um desafio que você precisa completar, porque fazer é superior a assistir. Na seção três, essas são as carreiras possíveis. Portanto, você está investindo em um futuro em que poderia ganhar até $71.000 e esse é o limite mais baixo Você pode ver que você pode se tornar analista de dados, analista de BI, engenheiro de IA e cientista de dados. Esses são apenas os princípios básicos. Você sempre pode acessar este site para verificar os números por si mesmo. É por isso que o Python é uma linguagem tão boa. Um belo gráfico que eu criei aqui. Também aqui, você pode ver que agora temos esse botão, os dois currículos das master classes M Python Eu recomendo que você leia todas as seções aqui para entender como funciona. Vou abordar isso nos próximos vídeos, mas não neste, porque a seção mais importante será a história de sucesso. Então, eu quero que você passe por isso se ainda não tiver certeza se somos legítimos Adoro transparência. Então, eu quero que você leia todas as resenhas que temos aqui em diferentes plataformas. E a parte mais importante é que eu quero que você chegue a esse ponto aqui. Porque qualquer uma dessas capturas de tela pode ser falsificada. Eu não vou mentir, eles podem ser falsificados facilmente. Mas as entrevistas que tenho com os alunos que aprenderam em dois desenvolvedores de Python não podem ser Mais uma vez, adoro transparência. Quero ser o mais transparente possível e quero que você saiba exatamente no que está se metendo. Não é uma pequena quantia de dinheiro que você pagaria para aprender Python novamente, é um investimento em seu futuro, mas quero que você saiba exatamente o que obterá com a quantia Então, por favor, reserve um tempo. Assista aos vídeos. Entenda a história dessas pessoas. Essas pessoas começaram iniciantes e se tornaram mestres absolutos em programação em Python Então, eu recomendo fortemente que você assista a esses vídeos. Muito obrigado por assistir. Eu tenho o link no meu perfil se você quiser conferir todas essas coisas por si mesmo. Então, a forma como isso funciona é que primeiro você terá uma sessão de estratégia comigo qual aprenderá tudo sobre a estrutura principal, entenderá os benefícios que obterá de cada seção e teremos uma aula juntos na qual avaliarei seu nível de Python e, e teremos uma aula juntos na qual avaliarei em seguida, colocarei você em contato com o instrutor perfeito que atenderá exatamente às suas necessidades E, ao contrário dos campos de treinamento com turmas grandes e horários rígidos, forçando você a frequentar horários específicos durante a semana e cobrando Além disso, oferecemos uma experiência de aprendizado personalizada, permitindo que você escolha horários flexíveis e o número de horas desejadas por semana, tudo por uma fração do custo. Então, se você estiver interessado, agende uma ligação conosco clicando no botão abaixo e espero vê-lo em breve. 2. Seção 1 - Introdução | 1. Python para Mac Windows: Bem-vindos de volta, meus programadores de Python favoritos. Neste vídeo, falaremos sobre Python, o que é, como funciona, apenas coisas superficiais Em seguida, vamos baixar o Python para configurar o ambiente em seu PC Em primeiro lugar, o que é Python? Python é esse logotipo aqui. Bem, não é apenas esse logotipo, é uma linguagem de programação de alto nível e de uso geral. Primeiro de tudo, vamos falar sobre um alto nível. Alto nível significa que estamos usando o idioma inglês normal para nos comunicarmos com nosso processador. Começamos com a linguagem usual de alto nível, que é Python, que consiste apenas em palavras como print e hello world e coisas assim E string e número inteiro. Em seguida, ele é convertido em um código frio chamado assembly. Não vamos analisar a assembléia no discurso É um assunto um pouco avançado , muito complicado. Mas eu recomendo que você vá e veja como é a montagem. É basicamente como enviar informações e guias para o processador e dizer ao processador como ele deve interpretar essas informações em zeros e um E, finalmente, temos o nível mais baixo, que é apenas uns e zeros sendo enviados ao processador O processador então envia informações de volta para você. Também é uma linguagem de programação de uso geral, e essa é a parte mais divertida e empolgante do Python, é que você pode usá-la para visualização de dados, análise de dados, desenvolvimento de software, IA, frente e verso Você pode até mesmo criar jogos e sites usando Python. Portanto, é uma linguagem de programação de uso geral. O Python foi projetado para enfatizar a legibilidade do código. Então, se você vem de outro idioma, sabe que precisa usar muitos colchetes e muitos detalhes minuciosos para garantir que Python não faz isso. O Python usa recuos em vez de colchetes, e veremos tudo isso em nossos próximos exemplos e veremos tudo isso em nossos próximos exemplos. Vamos fazer o download do Python para o nosso PC aqui. Eu já preparei a página da web. Tudo que você precisa fazer é acessar Python.org. Talvez eu deixe o link em algum lugar, mas digamos que um link muito fácil Você pode até digitar Python.org no Google e você deve encontrar este site aqui Primeiro de tudo, você precisa fazer o download e ver todos os lançamentos. Mas se você estiver usando um Windows ou MX, sugiro selecionar um desses dois Vou selecionar Windows. Ao acessar o Windows, você deve ver a versão mais recente do Python Agora, talvez você esteja assistindo isso no futuro e haja uma versão ainda mais nova do que esta, mas acho que tudo que é 3.8 ou superior funcionará 100% com qualquer versão que Tudo acima de 3.8 funcionará 100% com o curso . Basta clicar na versão mais recente do Python Depois de fazer isso, o instalador deve começar. Então, aqui você pode ver algumas informações gerais e regras sobre esse Python, essa nova versão do Python Você deve acessar os arquivos aqui e encontrar ou esperar aqui, você pode ver que este é o Python 3.11 0.4, todas são apenas O mais importante é que você baixe o Python em três pontos, é mais rápido Você pode ver aqui, você pode ler um pouco sobre as mudanças gerais que foram feitas. Às vezes, isso pode ser muito útil. Você pode até mesmo usar isso para executar seus programas muito mais rápido. Então, por exemplo, você pode ver aqui ele roda mais rápido do que a versão antiga. Mas a parte mais importante é acessar os arquivos aqui e entender que, se você tem um instalador do Windows 64 ou 32 bits, clique com o botão direito do mouse no meu computador. E olhando para isso, selecione o instalador do Windows de 64 bits e ele deve começar a instalar. Agora, obviamente, como eu já tenho o Python, não vou instalá-lo novamente, é muito simples Depois de baixar o instalador, clique duas vezes em abrir o instalador, clique em, sim, sim, sim, sim. Até você conseguir isso. Você pode ver algo como Add Python 3.9 path, ou talvez seja 3.11 0.2 No seu caso, esta é uma das Se você tiver isso, você deve verificar. Você verifica e continua porque deseja que Python seja adicionado ao seu caminho. É basicamente isso. Muito obrigado por assistir. No próximo vídeo, vamos baixar o Intellig e configurá-lo, e será o IDE que usaremos para escrever código em Python Espero que gostem e nos vemos no próximo vídeo. Tchau tchau por enquanto. 3. 2. Baixe o IntelliJ IDE para Windows Linux Mac: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos baixar o Intellij e configurar algumas coisas Então, primeiro de tudo, o que diabos é mesmo Intellig, Intelli é a ideia do Intellij Intelli é a ideia do Intellij Acho que é um acrônimo para alguma coisa. Não tenho certeza do que é essa sigla, mas é um IDE Então, qual é a sigla para IDE? É um ambiente de desenvolvimento integrado. E isso significa que vamos usar o Intellij para ajudar nosso computador a entender a linguagem Python e compilar o Eu te disse que temos alto nível médio e baixo. Algumas pessoas consideram apenas o nível alto e o baixo. Costumo pensar que a montagem está no nível médio das linguagens de programação, IDE, IDE. O que ele faz, basicamente assume o alto nível, que é o Python, porque, lembre-se, nosso computador não entende o idioma inglês Ele só fala em dois números, 0.1 Acredite ou não, não vamos entrar em software e engenharia da computação. Por enquanto, vamos ficar com o que temos, que é Python e Basicamente, o Intellij pega as palavras que escrevemos em inglês e as converte em 0,1 e as envia para o O processador volta com algumas informações e nós as anotamos. Ou obtemos algum tipo de saída ou algo parecido. Então, vamos usar o Intellig. Por que Intellij Porque descobri que é o mais fácil, o mais fácil de usar, oferece muitas sugestões muito rapidamente e, como é gratuito, não queremos pagar por nada. E na minha experiência, descobri que Intellig oferece a melhor relação custo-benefício Então, sem mais delongas, vamos fazer o download do Intellij Portanto, você deve acessar um site chamado JetBrains.com Quando você acessa esse site, ele deve ter a seguinte aparência Se você não conseguir encontrar o Jetbrains.com por algum motivo estranho, basta digitar Jetbrains no Google ou algo assim, e você deve Quando estiver aqui, você pode ler tudo. Você pode ver que o Jetbrains não é usado apenas para Python, ele é usado para muitas outras linguagens de Mas, por enquanto, só precisamos acessar as ferramentas do desenvolvedor e devemos ter um menu suspenso Ok, quando clicamos nele, temos um menu suspenso e precisamos ir até Intelligdea . Você vai ver isso aqui. Temos coisas diferentes, é claro, por charme e assim por diante, mas, por enquanto, uma ideia inteligente é o que precisamos. Nós clicamos nele. Você deve ver uma página como essa aqui. Você pode aceitar os cookies, não precisa. Aqui você pode ver o Intelligent ID, o principal IDE Java e Plean Não se preocupe com isso. Basta clicar em Baixar. Ao fazer o download, você terá esta página. E eu quero que você tenha muito cuidado porque esta, a edição definitiva, é a versão de teste gratuita apenas por 30 dias. O que queremos é rolar um pouco para baixo e baixar a edição comunitária. Então, essa será a adição que queremos. Agora, novamente, eu já tenho inteligência no meu computador. Não quero baixá-lo novamente, mas é muito simples, muito direto. Faça o download e abra o programa E que você baixou. Entre, entre, aceite tudo. Mas há uma coisa crucial aqui que você precisa ter em mente. Você pode chegar a uma janela como essa, na qual ela solicitará que você crie um lançador de 32 bits ou 64 Novamente, isso depende do computador que você está executando. Clique em 64 bits, certifique-se de que isso esteja clicado e, em seguida, você chegará a esse clique de compartilhamento de dados Não envie, porque você não quer enviar informações a menos que confie na inteligência. Acho que eles vão pegar suas informações de qualquer maneira. Eu não, não tenho certeza se eles sequer pedem que você compartilhe seus dados, eles simplesmente os pegam. Mas se você conseguir isso, não precisará compartilhar suas informações e isso é tudo o que tenho a dizer. Muito obrigado por assistir. Espero que tenham gostado. E no próximo vídeo, trabalharemos na configuração Intellig para uso futuro com Python Então, muito obrigado por assistir e nos vemos no próximo vídeo. Tchau tchau por enquanto. 4. 3. Configurando o IntelliJ IDEA: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos configurar o tellg. A primeira coisa que você verá é esse layout aqui. Pode ser um pouco diferente, mas, de um modo geral, todo vlog tem a mesma aparência Vamos clicar em Novo projeto. Aqui, você deve ver a tela a seguir. Você clica em Python e deve Python 3.9. Se você vê, é isso ver o Python 3.9. Se você vê, é isso. Isso é suficiente. Você pode continuar com o próximo vídeo, embora eu recomende que você termine este caso falte algo. Alguns de vocês podem não ver isso porque não instalaram corretamente ou porque seu computador é estranho. O que você pode fazer é clicar nesse menu suspenso e encontrar o Python 3.93 0.11 Não sei qual versão você está usando agora. Mas se você ainda não o vê, isso significa que seu computador ainda não o detectou. Você pode clicar em uma decadência do Ad Python S. E agora você tem que ir e encontrar o local onde isso foi salvo. No meu caso, ele foi salvo no C user ish. Eu ligava para o meu computador sempre que o recebia. Isso foi há quatro anos e eu nunca consegui mudar isso. A próxima coisa que você precisa fazer está aqui. Você deve encontrar o intérprete básico. Isso também deve ser encontrado caso você não o tenha, vá e procure por ele. E, finalmente, você precisa se certificar de disponibilizar para todos os projetos e também pode herdar pacotes globais de sites E então aqui você deve clicar em OK. Mas como eu não fiz nenhuma alteração, você deve poder clicar nela. E bum, lá vamos nós. E então, quando você estiver de volta aqui, você pode clicar em Avançar, você pode ligar para o seu projeto. Você pode selecionar onde deseja adicionar todos os seus projetos. Obviamente, encontre um local adequado, crie um arquivo para todos os projetos. E eu recomendo que, se você tiver um SSD e não um HDD, salvá-lo nesse SSD, isso ajudará a abrir seus projetos muito, muito mais rápido Basicamente, isso é inteligente. No próximo vídeo, criaremos nosso primeiro código Python Sim, o quão divertido isso vai ser? Espero que seja. A propósito, você não precisa ter o Z na busca. Eu apenas digitei porque não quero revelar a privacidade dos meus alunos e dos projetos que tivemos juntos Muito obrigado por assistir. Como eu disse no próximo vídeo, criaremos o primeiro programa Python Então eu vou te ver então. Se você ainda está enfrentando desafios aqui, entre em contato comigo ou deixe uma pergunta sempre que puder e eu entrarei em contato com você. Mas isso é muito simples. Nunca tive nada muito ruim, nenhum dos meus alunos reclamou muito, nem mesmo uma palavra, uma palavra Reclamativo sobre a criação de inteligência. Então, espero que você não enfrente nenhum problema. Nos vemos no próximo vídeo. Tchau tchau por enquanto. 5. 4. Nosso primeiro programa Python: Bem-vindos de volta, meus programadores de Python favoritos. Neste vídeo, vamos criar nosso primeiro programa em Python Vai ser um programa muito simples. É principalmente para você ter certeza de que configurou tudo corretamente. Vamos apenas dar uma olhada em alguns pequenos exemplos. Apenas uma impressão pequena e muito simples para você começar, apenas para superar o medo do Python , mesmo sendo uma das linguagens mais simples que Mas antes de tudo, precisamos entender o que é o arquivo dot py. Como dissemos, temos o Python, ele foi criado pelo pessoal do Python Temos outro programa que é o Intellig. Não há conexão inerente entre Python e Como você viu, o Intelligi pode ser usado para escrever Java, pode ser usado para escrever SQL , pode ser usado para várias linguagens diferentes O Python também pode ser escrito em outras linguagens de programação, em outros IDEs, não apenas no Qual é a conexão entre esses dois? Como podemos garantir que eles se comuniquem enquanto fazemos isso usando o arquivo dot py. Sempre que criamos um novo projeto, não podemos começar a escrever código a menos que criemos esses arquivos dot py. E você verá que criar arquivos dot py é uma coisa muito fácil de fazer. Então, vamos começar. Em primeiro lugar, vou voltar à minha analogia aqui Vou clicar em Novo projeto, certifique-se de que você tenha o projeto como decadente. Aqui mesmo. Você pode ver que precisamos copiar e incluir isso na introdução. E então clicaremos em Concluir. Estrondo. Lá vamos nós. Como eu disse, a primeira coisa que precisamos fazer é acessar o arquivo novo e criar um novo arquivo Python que chamarei Hello World e Agora temos o Hello World. Agora, algumas coisas sobre o nome do arquivo py aqui. Eu cometi um erro. Normalmente, quando queremos nomear nossos arquivos dot py, eles não devem ter letras maiúsculas e não devem ter espaços. Agora isso vai funcionar. Não é um grande problema, é por isso que eu fiz isso. Mas é comum nomear nossos arquivos da seguinte maneira Então, olá, e você digita mundo ou adiciona um sublinhado entre eles. Depende da sua preferência. E, como eu disse, usar o Hello World com letras maiúsculas não vai quebrar ou arruinar novamente seu projeto Mas, mais tarde, você verá que, se quiser importar um arquivo dot py para outro arquivo dot py, você não pode ter espaços e símbolos estranhos Simplesmente não vai funcionar. Mas de qualquer forma, veja o que temos aqui. Você pode ver que temos o cursor piscando e temos a linha número um E podemos clicar aqui e começar a digitar coisas. Obviamente, não estamos aqui para digitar coisas sem sentido. Queremos digitar algo que seja útil. E o que será útil será digitar em formato impresso. E olha isso. Eu quero que você pare e veja a beleza que temos. É por isso que adoro o Intellij. Porque assim que começamos a digitar, recebemos sugestões imediatamente E você pode ver que temos toneladas e toneladas de sugestões, como impressão e propriedade. Tão inteligente simplesmente o coloca na ordem em que a maioria das pessoas usa. Então, por exemplo, aqui você pode ver que P R, a primeira coisa que obtemos é a impressão. E eu quero que você adquira o hábito de completar automaticamente as coisas usando a guia. E por que usar esse preenchimento automático. Há muitas coisas benéficas que podem resultar disso. Em primeiro lugar, ele ajuda você a escrever código mais rápido em vez de digitar e abrir os parênteses Basta clicar em Tab, Boom, você tem tudo à sua frente. Em segundo lugar, ajuda a evitar erros ou erros de digitação Então, por exemplo, imprima se você tiver um N maiúsculo, você verá que temos um erro. E esse erro é mostrado por causa da linha ondulada vermelha. Se eu passar o mouse sobre a linha ondulada vermelha, isso me diz que há um erro, uma impressão de referência não resolvida, porque Python não reconhece a impressão com maiúsculas, ele só reconhece a impressão com minúsculas ele só reconhece O preenchimento automático nos ajudará com isso. Além disso, talvez você cometa um erro com a sintaxe, por exemplo, aqui Talvez você simplesmente esqueça de adicionar os segundos parênteses imediatamente Você tem um erro se tiver uma expressão acima da linha ondulada vermelha, esperada ou algo parecido, apenas um erro ao usar a guia também ajuda nisso E, finalmente, se alguém vê você digitando código e vê você ou preenchendo esse código e digitando, você sabe, como se estivesse na zona, dirá se essa pessoa sabe o que está fazendo ou o que está fazendo por favor, use o ou Adquira o hábito de fazer isso. Vai ser incrível para sua carreira profissional. Vamos continuar em Inside of print, precisamos fornecer algumas informações para serem realmente impressas. Se você não tiver certeza se a impressão imprime algo, o nome é óbvio. Você sempre pode passar o mouse sobre isso. E você pode ver que estávamos buscando documentação e você pode ler tudo sobre a impressão e o parâmetro que ela usa Obviamente, falaremos muito mais sobre o que é a impressão, como é uma função, o que é uma função. Temos uma seção inteira dedicada às funções. Você sempre pode ler sobre isso. Mas, por enquanto, tudo o que precisamos fazer é saber que devemos fornecer algo a dizer. E devemos fornecer a ele a abertura das aspas duplas e digitar Hello World Boom, lá vamos nós. Agora, se eu escrever Click e executar o Hello World, você pode ver que recebo Hello World impresso em nosso console na parte inferior. Isso também é algo que eu gosto muito no Intellij, é que você não precisa de nenhuma ferramenta externa para executar seus programas Basta escrever, clicar em Executar, e tudo acontece dentro do Intellij , tudo é controlado e está tudo bem Agora, por que eu disse Olá, mundo? Talvez alguns de vocês saibam disso, talvez alguns de vocês não. Mas quando é normal, sempre que você inicia um novo projeto ou um novo programa, você sempre digita Hello World Só para verificar o que está acontecendo em segundo plano. Então vamos lá, isso é Hello World. Uma última coisa antes de irmos. Como se eu usasse aspas duplas aqui em todo o Hello world. Você pode estar se perguntando, bem, por quê? Bem, porque isso é uma corda. E quando queremos exibir uma string em Python, precisamos usar aspas duplas ou aspas simples E explicarei mais quando usarmos o duplo, quando usarmos o single e quando precisarmos que eles sejam usados juntos. Claro, tudo isso nas próximas seções, mas por enquanto, se eu remover o espaço aqui, você verá que eu obtenho uma linha ondulada amarela Então, vimos a linha ondulada vermelha. E vou falar sobre isso novamente em um dos próximos vídeos. Mas quando vemos uma linha ondulada vermelha, isso significa que temos um erro Isso significa que nosso código não será executado. Então, por exemplo, se eu digitar impresso, escrevo, clique e corro. Recebo um erro porque a impressão do nome não está definida. Mas às vezes eu posso ter essas linhas quadradas amarelas. Então, esses são avisos, não são erros Eles podem quebrar seu código, mas na maioria das vezes não o fazem. Então, qual é o problema aqui? Se passarmos o mouse sobre ela, você verá que ela está nos mostrando uma linha nova de nove ou nenhuma linha no final Então, qual é o passo oito, P oito é como devo chamá-lo? Como se fosse o estilo em que os deuses do Python disseram para você escrever código em Python para Então, uma das coisas que eles exigem de você é adicionar uma linha extra no final, porque fica ainda melhor. Você não quer terminar apenas com o código que deseja terminar em uma linha vazia. Por exemplo, se você adicionar um espaço aqui, você também receberá um pequeno aviso, por favor. Pep 82 em dois espaços em branco antes dos parênteses. Não queremos isso, queremos tê-lo limpo assim. Seguir os oito é uma ideia muito boa, porque se você mostrar esse código para alguém, pessoa o apreciará mais. Se você voltar ao seu código, gostará mais dele. E ter um código limpo, fácil de ler, compreensível e bem organizado vai te beneficiar muito, confie em mim Às vezes, você volta aos códigos anteriores e vê todas as bobagens que escreveu, e fica tipo: “ Eu gostaria de ter feito isso mais corretamente ou de tê-lo corretamente ou Mas, em qualquer caso, avisos como esses não interromperão seu programa Como você pode ver, ainda temos a mesma saída. Então eu espero que você tenha entendido. Espero que tudo isso faça sentido. E agora é hora de um desafio. E o que eu quero dizer com desafio? Agora, explicarei e aprofundarei quais são os desafios no próximo vídeo, quando eu disser como usar este curso. Mas, por enquanto, você precisa imprimir uma mensagem pessoal. Isso é algo que você precisa fazer sozinho. Então, eu quero que você altere a linha impressa de um simples olá mundo para dizer olá e, ao lado dela, seu nome. Quero que você execute o programa para ter certeza de que funciona. E eu quero que você se parabenize por seu primeiro programa em Python. Trabalho muito bom. Então, passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Não deve ser muito difícil. Você só deve dizer olá Michael. Você não precisa dizer Michael, a menos que seu nome seja Michael. Clique com o botão direito e execute e ele diz olá Michael. E, claro, você não pode digitar o que quiser aqui. Podemos até mesmo duplicar essa linha usando o controle D aqui. Vou agradecer por assistir, deixe um comentário se puder, porque, neste momento, talvez eles já tenham solicitado uma avaliação. Onde quer que você esteja assistindo ou se quiser, você pode simplesmente me ligar, como me ligar ou me mandar uma mensagem de texto sobre o que está acontecendo e me dizer como você está gostando da master class. Não sei por que escrevi master com um M pequeno e depois são a única palavra. Vou mantê-los como uma palavra. Então, se eu escrever, clique e eu corro. Boom, senhoras e senhores, muito obrigado por assistir Eu realmente agradeço isso. No próximo vídeo, falaremos sobre como usar as pontuações, por favor. É muito importante que você entenda como usar as pontuações. Eu vou falar sobre as seções. Vou falar sobre os desafios e como você deve enfrentá-los. Te vejo no próximo vídeo. Tchau tchau por enquanto. 6. 5. Como usar este MasterClass: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, vamos ver como você pode usar esse curso. Este será provavelmente o vídeo mais atualizado porque continuarei adicionando novas aulas, novas técnicas e coisas novas ao curso. Esta é a maior master class em qualquer lugar do mundo. Quer dizer, não sei se o mundo inteiro, mas tenho certeza de que essa é uma informação de primeira linha Então, primeiro de tudo, este é o slide do seu desafio. Você pode ver que esse é um slide dentro de outro slide. Então, isso é seção de slides ou início de slide. Por favor, não clique no vídeo. Continue com a master class, mas de qualquer forma, este é o slide do seu desafio. Então, ao ver esse slide, você precisa pausar o vídeo e fazer o desafio nele Não importa o quanto seja difícil, não importa o quanto você sinta que não é capaz de enfrentar o desafio, é fundamental que você tente o melhor de si, pois é uma maneira muito melhor de aprender E porque fazer é muito mais importante do que apenas assistir. Essa é a filosofia sobre a qual construí toda a minha carreira, e é exatamente isso que eu costumava fazer na universidade. Então, talvez alguns de vocês tenham passado por isso. Você senta em uma aula, sabe que o instrutor só faz algumas coisas, você sabe, algumas coisas estranhas Não precisa ser apenas programar algo como imaginar matemática. Você vê o instrutor resolvendo todas essas equações legais e fica tipo, sim, isso é tão fácil, entendi Você volta para casa, abre o livro didático, começa a fazer quaisquer desafios ou exercícios E então você descobre que não sabe nada ou não sabe tudo. Pelo menos porque quando o instrutor está fazendo isso, você sente que é muito fácil Porque na sua cabeça você não vê os detalhes minuciosos, o pequeno pensamento que o instrutor precisava ter É por isso que, se você mesmo enfrentar os desafios e dar o melhor de si, mesmo que falhe, não precisa fazer todos os desafios corretamente. Se você dedicar pelo menos cinco a 10 minutos do seu tempo para tentar fazer o desafio, bagunçar as coisas e decifrar completamente o código E então, quando você vê o instrutor, mesmo que seja eu, ou talvez esteja fazendo sessões individuais com um instrutor especializado que eu designei para Você verá o processo, verá os erros que cometeu. E você verá como corrigir esses erros. E o mais importante, você entenderá por que cometeu esses erros e por que escrevemos o código da maneira que fazemos. Porque às vezes é mais importante, às vezes não. Acho que quase 99% das vezes, o porquê é mais importante do que o como. Por que tivemos que resolver essa solução? Por que escrevemos o código dessa forma e não da outra? Então, quando você comete erros, você entende, oh, é por isso que entende. Então, por favor, sempre que você vir esta janela aqui, pause o vídeo ou espere até que eu lhe dê algumas instruções Você pausa o vídeo e dá o melhor de si. Vamos dar uma olhada na estrutura das aulas. Em primeiro lugar, temos a lição número um, que é a introdução. Isso é como o início. Estamos falando sobre a lição número um e já estamos quase terminando a lição número um. Você notará que durante todo o curso ou durante a master class, usarei essa piada repetidamente A qualquer momento, você pode reclamar comigo. Mas, por favor, não me deixe uma crítica negativa por causa disso. A lição número dois é começar em Python. Eu acredito na construção de uma base sólida. Alguns instrutores gostam de simplesmente se dedicar ao trabalho pesado e começar a criar projetos e outros enfeites Gosto de construir uma base sólida se você estiver tentando construir um prédio. Se você está tentando construir o Empire State Building ou qualquer outra coisa, Kalifa, por Você não começa a construir na areia. Temos que descer até as profundezas da terra para encontrar fundações sólidas. E então você pode construir a torre mais alta do mundo. E é exatamente isso que fazemos na lição número dois. Garantimos que, antes de começarmos a escrever um código muito sofisticado, comecemos com o Python Estamos entendendo a filosofia de programação por trás do Python e de outras Você pode achar esta lição número dois chata. Não é muito empolgante. Mas ao longo dos anos, descobri que as pessoas que constroem uma base sólida são incríveis em seguir em frente com tudo, com todas as coisas complicadas que aprenderemos mais tarde. Começar a usar Python é a base. A lição número três são nossos primeiros passos em Python. Depois de construir uma base sólida por cerca de 1 hora ou 2 horas, agora podemos dar nossos primeiros passos nossa introdução aos blocos de código. Será onde aprenderemos sobre depuração, aprenderemos sobre declarações if, entendemos expressões complexas como s e ors simplesmente examinamos Áreas de teste diferentes e variáveis em nosso código. A lição número quatro será sobre loops em Python. Esta é nossa introdução aos loops. Muitas pessoas têm dificuldade em introduzir os loops. Vamos depurar nossos loops. Vamos entender o que são loops, veremos quatro loops em um intervalo circuitos aninhados usarão freios e continuarão, mesmo que continuar não seja muito bem Também veremos por que os loops e como podemos usar declarações L neles Mais importante ainda, é aqui que aprenderemos um algoritmo de busca binária. Como futuro desenvolvedor, como futuro programador de Python, você deve saber o que são Então, vamos aprender um algoritmo bastante simples. Claro, precisarei de toda a sua concentração nessa seção para que você entenda adequadamente o que estamos fazendo. Mas porque assim que aprendermos nosso algoritmo de busca binária, criaremos nosso primeiro projeto. É um jogo, mas vai ser um projeto. E é uma espécie de IA, mas não uma IA real. Portanto, não tenha muitas esperanças. Mas a lição número quatro, lição número 12.3 serão muito simples lição número quatro será a próxima etapa da evolução. Depois, temos o tratamento de dados com listas e tombamentos. É aqui que vamos conhecer os tipos de sequência. Vamos ver objetos mutáveis e imutáveis. Vamos repetir as listas. Vamos remover itens. Vamos adicionar itens. Vamos dar uma olhada nas listas aninhadas. Listas dentro das listas. Portanto, é o início de uma lista. Analisaremos a estrutura de dados aninhada e também criaremos um miniprojeto que será um criador de carros A seção número seis será nossa introdução às funções. Você pode começar a considerar tudo, seção seis em diante, como sendo um pouco mais avançado Temos os pequenos passos de um a três, depois temos o intermediário em 4,5 e, em seguida, temos o um pouco mais avançado no nível número seis. lição número seis será a introdução às funções. Vamos definir funções, configurar parâmetros, depurar nossos parâmetros, ver como podemos chamar nossas funções, como elas podem retornar valores, como podemos lidar com argumentos inválidos enviados E, novamente, é claro, teremos um miniprojeto em nossas funções para organizar tudo. Minha lição favorita é Menos ou a seção é a lição número sete. É programação orientada a objetos em Python. Eu adoro isso. Se você quiser retirar alguma coisa, como por favor, se em algum momento se sentir cansado do curso e quiser desistir, é imperativo que você vá para a seção número sete Depois disso, você pode parar. Mas a lição número sete é crucial. Não posso dizer o suficiente, porque a lição número sete, se você consegue entender programação orientada a objetos, se quiser aprender qualquer outro idioma, levará no máximo duas semanas. Você entenderá o que é orientação a objetos. Compreenderemos instâncias, construtores e como usar a si mesmo Trabalharemos em atributos de classe e métodos estáticos. Aprenderemos sobre acessibilidade de atributos. Aprenderemos sobre herança, composição de polimorfismo, subclasses e sobrecarga na lição número sete, muito crucial, muito subclasses e sobrecarga na lição número sete, muito crucial, muito importante. Sob nenhuma circunstância você pula ou desiste antes da aula número sete Então, temos a lição número oito, que é dicionários e conjuntos em Python Muito importante no tratamento de dados, onde apresentaremos dicionários e conjuntos Então, esta é a continuação da lição número cinco, mas eu não queria ter listas e casais e depois dicionários e conjuntos logo após o outro , porque eles são meio lentos, meio chatos, meio chatos Vamos aprender como podemos iterar em dicionários Vamos criar um novo miniprojeto e, neste momento, ele não é chamado de miniprojeto, é chamado de projeto, que será o construtor do computador. Vamos criar e atualizar nossos valores e dicionários Vamos aprender sobre textos rasos e profundos. E, claro, teremos uma introdução aos conjuntos, então vamos apagar, remover e descartar itens Vamos criar uniões e interseções, e vamos criar subconjuntos e superconjuntos Agora estamos entrando na parte mais avançada. Agora vamos ler e gravar arquivos. Vamos aprender sobre como abrir ler e analisar arquivos de texto Vamos analisar a gravação de dados em arquivos de texto. Vamos aprender sobre arquivos Json e arquivos CSV. E entender dialetos e farejadores e escrever E analisando leitores e redatores de ditados. E veja como podemos usar dicionários para ler e escrever a partir de arquivos. Muito empolgante. Complicado, mas você precisa passar por isso. E então temos a lição número dez. Vai ser o grande papai de todas as aulas. Ou seja, neste momento você aprenderá uma nova linguagem que será SQL. Então, aprenderemos sobre bancos de dados. Aprenderemos sobre o SQL Lite. Aprenderemos sobre atualização, exclusão e pedidos. Aprenderemos sobre administração de banco de dados. Vamos aprender sobre o uso SQL e banco de dados em Python Depois de aprendermos SQL, não se preocupe, não é uma linguagem muito complicada, mas é uma linguagem diferente. meio difícil no começo, mas depois fica muito, muito fácil. Também aprenderemos como hackear, o que é muito antiético Mas agora será muito simples e fácil hackear. Não pense que vamos hackear nenhum país, então mantenha suas expectativas niveladas quando se trata de hackear Também vamos introduzir exceções e criar um miniprojeto que será uma conta bancária E também criaremos a Netflix. Que tal isso? Não é o Netflix real, como eu disse, será uma espécie de Netflix. Não tenha muitas esperanças. Você não vai se tornar um bilionário depois de fazer esse mini projeto, mas ainda assim, valerá muito a pena Senhoras e senhores, antes de deixar algumas coisas que preciso dizer Primeiro de tudo, quero que você tome seu tempo. Eu quero que você leia cada seção. Eu quero que você seja muito meticuloso com seu aprendizado. Se você tiver alguma dúvida, pode sempre perguntar ao seu instrutor dedicado Você sempre pode me perguntar. Você sempre pode perguntar à comunidade. Então, por favor, por favor, por favor. Eu quero que você faça todo esse curso. Nunca desista. Tente fazer o máximo que puder durante o dia para aprender cada coisa. Isso é muito bem estruturado. Dediquei muito tempo para garantir que tudo no curso, todos os exemplos, todos os miniprojetos, tudo fosse construído em cima do outro Se você passar por isso passo a passo lentamente, terá resultados tremendos e incríveis. Se você passar por todo esse curso, você se tornará um desenvolvedor certificado em Python Você poderá entrar em qualquer entrevista, olhar nos olhos deles e dizer que sou programador de Python E agradeço a Michael porque ele me ajudou e me ensinou. E deixei uma crítica para ele porque gosto muito dele. E agora eu só estou brincando. Se em algum momento você sentir que precisa de ajuda extra, pode sempre entrar em contato comigo. Podemos organizar sessões individuais personalizadas juntos. E sim, é basicamente isso. Tudo o que eu quero te dizer é que, por favor, não perca a esperança. Eu quero que você continue agora. Não pare você, configure tudo, é hora de começar. É hora de molhar os pés e começar a primeira seção ou a segunda seção ou a segunda lição, que é começar em Python Você pode entender cadeias de caracteres, variáveis, tipos de dados e lidar com dados Além disso, muito obrigado. Espero não ter falado muito. Eu só queria ser minucioso com minhas explicações sobre as seções e o que você deveria esperar Espero que tenham gostado e nos vemos no próximo vídeo. De longe, agora. 7. Seção 2: Introdução ao Python | 1. Print() no Python: boas-vindas de volta aos meus programadores de python favoritos a um novo vídeo e a uma seção totalmente nova em que daremos o pontapé A primeira coisa que vamos fazer é criar um novo projeto aqui mesmo no IntellG O seu pode ser um pouco diferente. Parei de atualizar o IntelLG porque às vezes as novas atualizações são interrompidas, as mesmas coisas acontecem. O que precisamos fazer é criar um novo projeto aqui, selecionar Python, ir para Avançar e garantir que você selecione o local adequado para isso, e você pode chamar Claro, você tem a liberdade chamar isso do que quiser, mas vou chamar isso de Getting Started with Python Esta seção abordará a introdução, tudo sobre a criação do ambiente e a filosofia de programação da programação em Python E ver o que acontece nos bastidores para entender mais tarde como as coisas funcionam no final do jogo. Em todas as seções que virão. Assim que você criar isso, você já sabe que precisa selecionar o seguinte item dentro da barra do projeto. Vá para arquivo, vá para novo e crie um novo arquivo Python onde você será solicitado a nomear algo e poderá nomeá-lo como quiser Claro, aqui vou digitar a função de sublinhado de impressão e pressionar Enter. E lá vamos nós. Depois de fazer isso, você pode começar a digitar qualquer código que desejar Vamos examinar a impressão para entender como ela funciona e as diferentes maneiras de usá-la. Mas antes de fazermos isso, preciso falar um pouco sobre as funções e como elas realmente funcionam. Essa é a função típica que você pode ver. É uma função de impressão. Obviamente, temos uma seção inteira dedicada às funções, mas vamos analisar isso um pouco. Em primeiro lugar, temos o nome da função. O nome da função deve sempre refletir o que essa função faz. Por exemplo, essa é a função de impressão. O que isso faz? Ele imprime algo. Em seguida, temos o argumento que está sendo enviado para impressão. O que queremos imprimir? Queremos imprimir hello world, por exemplo. Isso é chamado de argumento. E, claro, como eu disse, veremos muito mais disso mais tarde. E, finalmente, temos os colchetes. Sempre há sintaxes que precisamos seguir em qualquer linguagem de programação, não apenas em Python Portanto, no caso do Python, precisamos usar colchetes na frente da impressão para onde enviaremos os E mesmo que não queiramos enviar nenhum argumento, também devemos usar os colchetes. Então, vamos começar. Vou voltar para o Intellij, e aqui vou imprimir, Hello World Agora você deve estar se perguntando: por que usei aspas simples Por que não usar aspas duplas como eu não usei aqui? Por que eu uso aspas duplas ou aspas simples Bem, porque isso é chamado de string e vamos explicar as variáveis de string mais adiante, especialmente nesta seção. Mas sempre que estamos tentando imprimir uma palavra ou frase ou qualquer coisa que esteja no idioma inglês, usamos as aspas, indicando que essas são letras que estamos tentando imprimir E podemos usar aspas simples ou aspas duplas Isso não faz diferença, exceto que, mais tarde, você verá por que às vezes é melhor usar aspas simples ou duplas Por enquanto, vou executar este programa e você verá que lançaremos o Hello World Printed. Deixe-me encerrar o projeto. E deixe-me duplicar essa linha de código clicando no final dela e pressionando o controle D. Como você pode ver, essa linha foi E vou usar aspas duplas em vez de aspas simples E quando escrevo Click e corro, recebo Hello World novamente. Agora você deve ter notado que eu adicionei uma linha extra aqui. E você estaria pensando, bem, talvez Michael tenha cometido um erro. Bem, Michael não cometeu um erro. Eu sou o programa God of Python. Agora eu só estou brincando. Eu sempre cometo erros. Mas, como você pode ver, quando eu removi a última linha, eu tinha uma linha amarela ondulada Se eu passar o mouse sobre ele, ele me diz 292. Nenhuma linha nova no final do arquivo. O que isso significa? Em primeiro lugar, o que é P? Oito. E, na verdade, mesmo antes de falar sobre oito, o que é a linha ondulada amarela Temos muitas indicações diferentes das inteligentes que podem nos dizer se há um erro, se há um aviso, se há um grande aviso, se há algo que precisamos observar. E durante todo o processo do curso, veremos todos eles. Mas, por enquanto, vamos falar sobre esse aviso. Agora, esse aviso não está quebrando nosso programa. Então, se eu escrever Click e executar mesmo com o pequeno aviso, ainda tenho tudo funcionando. Mas o que ele está tentando nos dizer é que não estamos seguindo o estilo que precisa ser usado para escrever um código Python limpo e adequado O que isso significa? Por exemplo, pep eight é a versão ou Se você quiser chamá-los de deuses do Python, todos se sentaram e determinaram que a melhor maneira de escrever código em Python, de tê-lo limpo, preciso e organizado, e poder mostrar seu código a outras pessoas e fazer com que elas se sintam à vontade ao lê-lo , é seguir as oito regras Então, p oito é a oitava versão dessas regras. E uma dessas regras é adicionar uma linha extra no final do seu programa. Isso não muda nada , não quebra seu código. Isso só o torna mais bonito para outras pessoas verem e até mesmo para você voltar e olhar para ele. Então, por exemplo, se eu adicionar um espaço aqui, veja isso. Isso parece limpo para você? Obviamente, é algo que não é muito bom. E uma das coisas mais importantes nesta seção e em toda essa aula principal que eu quero que você entenda, não é apenas sobre como você escreve seu código, mas sobre por que você está escrevendo seu código da maneira que está fazendo e como torná-lo a melhor e mais limpa versão possível É claro que precisamos que ele funcione, mas também precisamos que seja limpo e fácil leitura para qualquer pessoa que esteja vendo seu código Vai percorrer um longo caminho. Por exemplo, aqui, se eu passar o mouse sobre esse espaço em branco antes dos colchetes, não queremos isso Queremos mantê-lo limpo e preciso. Se eu, por exemplo, adicionar um espaço aqui, novamente, tudo isso ainda funciona normalmente, mas simplesmente não parece bom. Imagine esse código. Não é legal, não é organizado. Não parece bonito. Garantimos que o escrevemos de maneira correta. Sempre siga as oito regras sempre que puder. Vamos seguir em frente. A impressão pode fazer outras coisas. Por exemplo, a impressão aqui também pode imprimir um número como 84. Clique com o botão direito e execute e obtemos 84. Observe que 84 aqui não é uma string, é um número inteiro, e veremos as variáveis mais tarde Uma string é limitada por aspas duplas ou simples, enquanto número inteiro não as contém Deixe-me duplicar isso novamente, controle D. Em vez de apenas digitar 84, eu posso digitar 12 mais 13 Se eu escrever Click and I run, esses dois números são somados e impressos. Você também pode fazer aritmética dentro de suas funções. Deixe-me duplicar isso novamente, e desta vez vou mudar isso para sete e este para 71 Em vez de adicioná-los, vou multiplicá-los quando escrevo, clique e corra Pronto, eu recebo 497. Agora você deve ter notado que eu deixei um espaço vazio aqui e você também deve ter notado que ele não está refletido em nosso console aqui na parte inferior. Por que isso? Bem, porque espaços vazios não são considerados apenas espaços vazios. Eles não são considerados nada. É só por uma questão de organização, eu queria separar a string na impressão dos números inteiros e dos números na impressão Bem, agora isso levanta a questão: o que podemos fazer para criar um espaço em nossa impressão ou em nosso console Bem, podemos usar a impressão e depois nada. Agora, se eu escrevo, clico e corro, aí está. Você pode ver que eu tenho uma impressão digital aqui. Agora, novamente, algo que acabei de fazer e ainda não expliquei para você. Veja o que acontece quando eu começo a digitar qualquer letra. Começo a receber sugestões de forma inteligente. E esse é um hábito que você precisa adquirir, independentemente do que fizer daqui para frente. Se você quer se tornar um bom desenvolvedor de software, programador de Python, analista de dados, qualquer coisa que você faça na vida, sempre procure o Or Complete sempre que puder pressionar Tab Como você pode ver, isso completa para mim, não apenas as palavras impressas ou as letras impressas Também completa a sintaxe para mim, o que é lindo, porque há três benefícios Em primeiro lugar, evita que você cause problemas, porque, por exemplo, se você digitar N maiúsculo, essa não é mais uma função funcional Olha, temos uma linha ondulada vermelha. E uma linha ondulada vermelha significa que há um erro. E diz que é um erro de nome, informando que a impressão do nome não está definida. Não há nada impresso com a capital. Se eu passar o mouse sobre ela, uma referência não resolvida e, na verdade , ela quebra nosso código e vejo o erro de obter um link Se eu clicar nesse link, ele me levará para a linha em que o erro ocorreu. Você também pode procurar a linha aqui. O preenchimento automático ajuda você a evitar erros como esses A guia para preenchimento automático também ajuda você a escrever código com mais rapidez. E a terceira e mais importante é que, se alguém ver você digitando código e usando a guia para preencher automaticamente, ficará tipo, oh meu Deus, quem é esse cara? Ou Gal. Eles são programadores incríveis. Eles estão usando o preenchimento automático. Agora, estou brincando. Isso, não vai ser muito bom. Mas ainda assim, é claro, quando eles veem você usando o preenchimento automático, tudo bem, essa pessoa sabe o que está fazendo Então, vamos continuar. E agora vamos tentar imprimir alguma coisa. Então você pode ver que eu uso a guia e vou dizer que esse é o fim. Então eu vou adicionar uma vírgula aqui. Eu vou dizer, não, eu estava brincando. Adicione outro tipo e três, adicione outro. Estamos fazendo mais. Se eu escrevo um clique e corro, isso é o que eu recebo. Em primeiro lugar, tenho o espaço vazio da impressão que fiz aqui sem que nenhum argumento fosse enviado. E então esse é o fim. Não, Pi era criança. Estamos fazendo mais. O que está acontecendo aqui? Bem, estamos fornecendo vários argumentos para nossa função print em vez de apenas ter um único argumento como tínhamos no hello world e hello world aqui, o 84 e até mesmo essa expressão aqui, é um único argumento porque os argumentos são delimitados por vírgulas Como você pode ver, como enviamos vários argumentos, eles foram somados e depois impressos. Espero que isso faça sentido. Muito obrigado por assistir. Antes de partirmos, você tem um desafio a fazer, e seu desafio é combinar tudo o que aprendemos. Eu quero que você imprima uma linha onde você combina palavras e números. Certifique-se de usar a vírgula entre eles, então você precisa enviar vários argumentos para sua função de impressão e executar o código sem erros Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, vou adicionar uma impressão extra aqui e vou dizer imprimir. Se somarmos 6,8 obtemos seis mais oito, clique com o botão direito e execute E lá vamos nós. Se somarmos 6,8, obtemos 414 Senhoras e senhores, muito obrigado por assistir. No próximo vídeo, aprenderemos mais sobre strings e veremos como podemos obter entradas de um usuário Então, obrigado por assistir. Espero que tenham gostado. Parabéns por iniciar essa jornada. Você é incrível e está se saindo incrivelmente bem, continue com isso. Certifique-se de me dar sua total concentração. Se em algum momento você se sentir um pouco frustrado, sem saber o que fazer, entre em contato com seu instrutor dedicado a você ou entre em contato comigo Claro, você tem meu número. Eu tenho seu número no Whatsapp ou algo assim. Você sempre pode fazer isso. Antes de sairmos, acabei de notar uma coisa. Temos a linha ondulada verde aqui. Se eu passar o mouse sobre ele, é só um erro de digitação. A linha ondulada verde não é um aviso. Não é um erro, porque às vezes o aviso pode ser potencialmente um erro. É só um erro de digitação, por exemplo. Agora, vamos lá. Chega de erros de digitação. Obrigado por assistir. Nos vemos no próximo vídeo. 8. 2. Variáveis de strings no Python: Bem-vindo de volta, meus desenvolvedores favoritos de Python. Neste vídeo, veremos as variáveis de string em Python e também as entradas Vamos criar um novo arquivo Python acessando o arquivo novo e, em seguida, o arquivo python, e vamos chamar essa variável de sublinhado A primeira coisa que vou fazer é imprimir uma floresta entre aspas simples Então eu vou imprimir, Python é uma linguagem muito fácil aprender e está entre aspas duplas Em seguida, vou imprimir, podemos incluir cooptações duplas dentro de nossas cotações dentro de nossas Exatamente. Cotação dupla. Obviamente, apenas para seguir as regras de P oito, adicionamos uma linha extra. Se eu escrever, clique e eu corro. É por isso que eu corro por correr. Python é uma linguagem muito fácil. Podemos incluir cotações duplas. Mas o que torna isso especial? Bem, deixe-me tentar duplicar essa linha. Em vez de usar aspas simples na parte externa, vou usar marcas na parte externa E observe que quando eu mudei o da esquerda, o da direita mudou automaticamente. E você já viu que temos sete erros, sete erros malucos Qual é o problema aqui? Você notará que temos aspas duplas aqui. Referência não resolvida, cotação dupla de referência não resolvida e, em seguida, fim Esperava que muita coisa desse errado aqui, o que diabos está acontecendo? Bem, você notará aqui que temos uma aspa simples ou a primeira aspa dupla, correto Então, o que o Python pensa, e a forma como isso funciona, é Python, ok, ok, Tudo bem, nosso programador, nosso colega desenvolvedor está tentando imprimir algo. Tudo bem, aspas duplas. Agradável. Isso significa que há uma corda chegando. Tudo bem, a sequência está chegando, bom, espaço de caracteres, espaço I , N, C, L, D, E. E então ele encontra outra aspa dupla. E então o Python pensa consigo mesmo, tudo bem, vamos lá O desenvolvedor encontrou o final de sua string. Podemos fechar a sequência agora. Mas então ele vê D e o D não é considerado uma string porque, Python, está pensando que já fechamos nossa Qual diabos é o problema aqui? Por que temos o D e depois o o e depois o U? Essa é uma variável que o usuário tentou criar? Bem, não. Estávamos tentando adicionar aspas duplas dentro da impressão, mas não funciona assim E então viu que outra string está começando. Tudo bem, essa é a corda e esse é o final da corda aqui. É por isso que, se você quiser usar aspas duplas dentro do seu sprint ou dentro de uma string com aspas duplas na parte externa, você não pode aspas duplas na parte externa, Você precisa usar aspas simples na parte externa. O mesmo vale se quisermos fazer isso de maneira inversa. Por exemplo, aqui, se eu tentar mudar isso para uma aspa simples, veja o que acontece Temos um erro aqui porque o Python pensa consigo mesmo, bem, essa é a primeira string, essa é a segunda Eu não sei o que aconteceu aqui. Nós apenas fechamos as coisas. Se você quiser ter certeza de que isso funciona, use aspas simples na parte externa e aspas duplas na Olhe aqui. Porque eles mudaram automaticamente. É assim que funcionaria. Isso mudou novamente. Você pode, por favor, parar de mudar automaticamente? Está me deixando louco. De qualquer forma. Aspas simples na parte externa, duplas na parte interna E você pode, por favor, parar de fazer isso? Obrigada. Ok, vamos lá. OK. Eu queria ter aspas simples no interior. Lá vamos nós. E aqui, solteiro, se isso me permitir. Quero dizer, o preenchimento automático às vezes pode ser uma dor de cabeça. Mas lá vamos nós. Finalmente conseguimos resolvê-lo. Claro, mude isso para single. É por isso que temos aspas duplas e cadeias de caracteres simples também podem ser adicionadas, por exemplo, se eu imprimir Olá, mais mundo. Isso não é chamado de adição, isso é chamado de concatenação Quando eu escrevo, clique e clique, você verá que recebemos Hello World. Você também deve ter notado que está esmagado. Deixe-me adicionar apenas uma impressão para diferenciar as coisas. Você notará que eles estão esmagados. Por que isso? Bem, porque Hello world não tem espaços vazios neles. O espaço também é considerado um caractere em sua string. Você precisa adicioná-lo aqui ou adicioná-lo atrás do mundo para que funcione. Observe que isso não está usando dois argumentos. Esses dois são uma única discussão aqui. Se adicionarmos notas, ainda não tínhamos espaço. Ainda assim, criamos o espaço entre eles porque são vários argumentos sendo enviados. Enquanto estamos trabalhando aqui com uma função de argumento único, duas strings que são adicionadas e depois impressas A propósito, não precisamos usar strings explicitamente Quando quero dizer explícito, significa que quando usamos esses dois parênteses ou, desculpe, aspas, podemos fazer Podemos dizer que temos uma variável que é igual à mensagem. Essa é uma variável que eu criei e a chamo de hello there. Então eu tenho um nome que é igual ao Michael. Claro, você pode adicionar seu próprio nome. Agora, o que podemos fazer é imprimir a mensagem mais o nome. E o que eu ganho quando corro Olá, Michael. Agora, como um pequeno desafio, quero que você crie um espaço entre esses 23 e um. Há muitas maneiras de criar um espaço. Eu posso adicionar um espaço aqui, eu posso adicionar um espaço atrás de Michael. Ambos são válidos, ambos funcionam bem. Mas há uma maneira ainda melhor de fazer isso, que é adicionar um espaço aqui para que eu possa concatenar várias Então, agora vamos ter espaço para mensagens, Michael. Ok, espero que esteja claro. Agora, e se não quisermos que isso seja criado de antemão No final das contas, isso é chamado de variável. Não deveria ser variável? Não deveria variar? Bem, funciona, e será. Em vez de apenas ter um nome igual a essa coisa que queremos, podemos dizer nome igual à entrada. E dentro da entrada eu posso dizer, me dê seu nome. Vou apenas dar uma pequena indicação. Ok, o que é isso? Vou dar uma pequena indicação aqui para o usuário sobre onde ele deve escrever o nome. Clique com o botão direito e execute, Hello World. Me dê seu nome. Você verá que o programa não parou. E agora aqui eu posso digitar Michael. Lá vamos nós. Agora pudemos colocar qualquer nome que quiséssemos usando a função de entrada. E a função de entrada recebe um prompt. Então essa é a definição da função. Não nos preocupamos com isso agora. Vamos nos aprofundar nessas coisas na próxima seção Mas só para você saber, este é um aviso O que você deseja imprimir com a entrada que você precisa para dar uma indicação ao usuário o que ele está tentando adicionar. Estamos tentando adicionar um nome aqui, por exemplo. Se eu tentar algo diferente, como por exemplo, Kalen, lá vamos nós, uma cabeça e entramos Me diz olá, Kalen. Se eu escrever, clique e corro novamente e é Papai Noel. É assim que você escreve Papai Noel. Não tenho certeza. Lá vamos nós. Olá, Papai Noel. Ok, espero que isso faça sentido. Como você pode ver, essas são variáveis e podemos obter a entrada dessas variáveis. Podemos cacateinar tudo isso juntos . É hora de um desafio. Seu desafio será imprimir sua própria entrada, criar duas novas entradas para o usuário, a partir do usuário , uma string e um número Queremos que uma seja uma string, a outra seja um número, e possamos juntá-las e imprimi-las em nosso console Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Primeiro, adicione uma impressão e, em seguida, aqui vou dizer que imprima, digite seu nome e um número. Então, aqui eu vou dizer que o nome é igual ao nome de entrada, dois pontos. Duplique isso com o número D de controle e então eu vou imprimir E aqui vou dizer que quero ter nome mais apenas oito mais número mais barras de chocolate. Lá vamos nós. Eu uso deliberadamente aspas duplas e aspas simples apenas para que você saiba que podemos trocá-las Quando escrevo Click e entro aqui, deixe-me digitar qualquer coisa. OK. Olá. Em seguida, digite seu nome e um número. O nome será, vamos ficar com Michael. O número será 129. Pressione Enter. Então Michael acabou 129 barras de chocolate, o que é muito ruim Então, espero que você tenha entendido como tudo isso funciona. Sempre tente enfrentar os desafios, por favor. Se você acha que não pode enfrentar o desafio, se acha que é muito difícil, eu não me importo. Basta pausar o vídeo e tentar fazer o melhor que puder. É muito melhor que você tente fazer o seu melhor. Falhe nisso e então veja a solução porque seu cérebro já pensou nas coisas. Isso ajudará você a aprender mais rápido. Aprenda melhor, entenda claramente o que aconteceu e talvez algumas das perguntas. Se você simplesmente pular os desafios, talvez nem saiba o que não sabe quando faz um desafio e falha nele Se você levar de cinco a 10 minutos para fazer os desafios e falhar, pelo menos seu cérebro funcionou. Você não está apenas me vendo fazendo essas coisas sozinho. Já sou um ótimo programador. Eu não preciso fazer isso. Você não está aqui para me ver fazer essas coisas. Você está aqui para aprender. Então, por favor, em cada desafio, pause o vídeo. Faça o melhor que puder. E, claro, no final, deixe meu comentário, porque eu mereço um. Muito obrigado por assistir, e nos vemos no próximo vídeo, onde aprenderemos sobre personagens especiais. Então eu vou te ver então. Tchau tchau. 9. 3. Personagens especiais: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste, veremos personagens especiais. Às vezes, também são chamados de caracteres de escape e são caracteres especiais que nos permitem fazer certas coisas com strings. Para demonstrar isso, vou criar um novo arquivo Python Às vezes, se você não vê o arquivo Python aqui, basta simplesmente clicar na variável string ou no projeto, ou não na variável string, ou não na variável string como em qualquer lugar no código interno Em seguida, vá para Arquivo Novo. E você encontrará seu arquivo Python e eu vou chamar isso de caracteres de sublinhado de escape e Aqui, vou criar a variável dividida e vou dizer que essa variável dividida é igual a, essa string, tem barra invertida t, tem várias linhas de fundo nela Vamos lá, essa corda, veja se ela a pega imediatamente Muito bom. E eu vou imprimir a divisão. Quando escrevo, clico e corro, vejo a saída que recebo. Essa string tem várias linhas nela. Agora você pode estar pensando: o que isso importa? Como se eu pudesse ter feito isso. Ok, vamos remover esses s, não precisamos deles. Podemos escrever assim. Se eu escrever, clique agora e eu corro e oh, oh, oh, ok. Então, a menos que você adicione a barra invertida n, o que significa uma nova linha, é por isso que tem um n na frente significa nova Essa é a única maneira de criar a divisão. Agora, há outra maneira, mas não agora. Mais tarde eu vou te dizer o que é. Então, usar a barra invertida n é como você cria espaços extras. Agora vamos ver outro exemplo. Vou adicionar uma impressão aqui e depois vou chamá-la de aba. Igual a essa string é barra invertida. Aba. Faça uma barra invertida várias vezes A guia está escrita incorretamente. Tudo bem, Tab, Double B. Tudo bem. Acho que vamos lá. E eu vou imprimir a guia. Tudo bem. Clique e corra, e boo, veja isso Essa string está tabulada. Observe que aqui temos um espaço extra. Está esfaqueado na frente. Agora, acho que são bastante autoexplicativos. Não há nada demais aqui para dizer. Vamos continuar e eu vou escrever a seguinte frase. Eu vou dizer que ele estava gritando: Não, por favor. Foi Jordan. Foi ele quem chamou a atenção aqui, temos muitos problemas Alguns de vocês já viram. Obviamente, se você assistiu ao vídeo anterior e deveria, verá que começamos com uma aspa simples. Temos aspas duplas, mas temos uma aspa simples que quebra tudo Em seguida, outra citação simples, então, duplique. Está em todo lugar. Se tivermos uma linha dupla e simples, alguns de vocês já devem ter se perguntado essa pergunta. O que fazemos? Bem, temos as costas que podemos adicionar a essa aspa simples , a essa aspa simples e a essa aspa simples. E agora temos tudo funcionando, clique com o botão direito do mouse e execute, e pronto, temos aspas duplas e aspas simples dentro de nossa string A barra invertida nos permite que essa saída funcione perfeitamente Vou duplicar essa linha de código e vou alterá-la de aspas simples para aspas duplas em cada lado Deixe-me tentar novamente porque não parecia limpo. Cotação dupla dupla. E lá vamos nós. Agora temos o problema interno. Nós adicionamos a barra invertida aqui e a barra invertida aqui. E se eu escrevo, clico e corro, aí está, eu obtenho minha saída. E eu nem preciso mais da barra invertida aqui nas aspas simples porque elas estão cercadas por aspas duplas Tudo bem, clique com o botão direito e execute e tudo funciona perfeitamente bem. Então eu espero que você tenha entendido. Espero que você não esteja muito confuso. Esses são os caracteres especiais. Você não vai encontrá-los muito. Mas lembre-se de que os veremos no futuro. Eu vou usá-los. Se eu me lembrar, vou te dizer por que estamos usando isso. Talvez eu não vá. Mas depois de ver isso, é sua responsabilidade reconhecê-los no futuro. Antes de prosseguirmos. Um grande desafio para imprimir um link. Portanto, imprima o link a seguir para seu console usando a barra terminadora print.python.org Claro, não tenho certeza, mas acho que isso não leva a lugar nenhum. Mas eu quero que você imprima o link. No entanto, o truque aqui é imprimir a barra invertida Estamos tentando imprimir a barra invertida. Como isso funcionaria? Há duas maneiras. Um é muito óbvio, o segundo é mais complicado e precisa de um pouco mais de pesquisa Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Espero que você tenha feito o possível para fazer isso aqui. Vou imprimir o ponto python ou o terminador Nada mais importa. Como você pode ver aqui, é aqui que entram os problemas. Se eu escrever, clique em Executar, isso é o que eu recebo. Python.org e depois terminator e então qual é o problema? Bem, eu criei deliberadamente esse tipo de link aqui porque queria ter um backback que criasse a guia E então a barra invertida n, que criou uma nova linha. Como podemos corrigir isso? A primeira maneira é colocar uma barra invertida na barra invertida. Agora, clique com o botão direito e execute. E pronto, temos o link impresso corretamente. Mas também há uma maneira diferente. Vou duplicar isso e remover. Podemos adicionar um R no início. Como eu disse, isso exigirá mais pesquisas de sua parte. Mas, basicamente, o R, certifique-se de que imprimimos como está. Ou diz à função que essa string deve ser impressa sem caracteres especiais ou, para ser mais preciso, o R significa raw. Vocês imprimem a corda crua que têm aqui, senhoras e senhores, espero que gostem No próximo vídeo, veremos as variáveis e seus tipos e entenderemos melhor como essas coisas funcionam. Muito obrigado por assistir e nos vemos no próximo vídeo. Tchau tchau por enquanto. 10. 4. Variáveis e tipos: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste vamos falar sobre variáveis e tipos. Em primeiro lugar, vamos tentar explicar o que são, literalmente ou na verdade, variáveis. Vamos imaginar uma caixa. As variáveis são como caixas. Imagine que temos uma caixa. Essa caixa tem um nome. O nome é vidas. O que fazemos com essa caixa? Colocamos três dentro dessa caixa. Agora temos uma caixa com três. O mesmo conceito é válido quando se trabalha com variáveis em Python e qualquer outra linguagem de programação Em Python, criamos uma variável que tem o nome lives, então esse é o E então temos os dados que queremos colocar nessa variável, que nesse caso seriam três. Agora, em Python, se você vem de uma linguagem diferente em Python, não precisa especificar o tipo de Você só envia os dados. E com base nos dados que você enviou, a variável assumirá o tipo deles. Vamos falar sobre alguns tipos diferentes de variáveis. Em primeiro lugar, temos o tipo float. Por exemplo, a velocidade da velocidade pode ser apenas duas ou três, ou quatro ou cinco Pode ser 4,87 0,96 0,54 100,75 seja qual for esse número. Pode ser um carro alegórico. Então temos o lingote Ty, por exemplo, se quisermos verificar se algo está morto ou não, pode ser igual a quatro É que isso pode ser igual a sete. Tem que ser verdadeiro ou falso. O ouro será muito útil nas próximas aulas E, finalmente, é claro que não. Finalmente, temos muitos, muitos tipos de variáveis, mas essas são as mais comuns que usaremos nos próximos vídeos, que é a string de tipos. É uma sequência de caracteres, por exemplo, meu nome, esse é o nome da variável. E então temos uma sequência de caracteres. Os caracteres são M, I, C, H, E, L, se formam juntos, se juntam, criam o nome Michael. Vamos parar de falar sobre teoria e vamos dar um exemplo real e ver como tudo isso funciona aqui. Vou criar um novo arquivo Python que vou chamar de variáveis Vou ter a mesma idade 25 anos e simplesmente imprimirei a idade. Não há nada muito especial aqui. Justamente quando corremos, você pode ver que obtemos o número 25. Nada muito louco, certo? Já fizemos isso antes. Agora vamos imprimir algo um pouco diferente e você entenderá por que estamos fazendo isso em alguns minutos. Vou imprimir o tipo de H. Agora, se eu escrever, clicar e executar, obtenho a classe em letras de número inteiro Esses são números inteiros como menos um, menos dois, menos 312340, 312340 Todos são considerados números inteiros. Se eu digitar 25,6, por exemplo, veja isso. Agora eu tenho um apartamento, não é mais um número inteiro, é um flutuador Agora observe o que vai acontecer agora. Vou adicionar duas aspas simples, cerca de 25. E eu quero que você veja com muito cuidado o que vai acontecer. Olha, quando escrevo um clique e corro, obtenho a mesma saída, 25,6 Mas a diferença é que agora a classe é uma string É muito importante que você saiba porque às vezes as coisas não são as mesmas. Talvez você pense que, ok, 25,6 deve ser sempre um flutuador, Essa é a saída. Olha isso. Diga-me, Michael, 25.6 não nos importamos. É um carro alegórico? É uma corda? Quem se importa? Você deve se importar porque muitas coisas podem acontecer no futuro. Portanto, ter a capacidade e a flexibilidade de alterar o tipo de sua variável simplesmente alterando os dados que você está fornecendo a essa variável é uma bênção e uma maldição ao mesmo tempo em Python Então você tem que ter muito cuidado ao alterar o tipo de variável ou os dados que você está enviando para a variável, ok? O tipo de variável mudará com os dados que você está enviando. Mas se você estiver usando esses dados de uma determinada maneira ou essa variável de uma determinada maneira, isso pode causar muitos problemas no futuro. E veremos muitos desses problemas medida que avançamos no vídeo. Agora é hora de fazer um pequeno desafio para você fazer. Seu desafio será criar e imprimir variáveis. Primeiro, crie uma variável flutuante, um número inteiro e uma variável de ouro Imprima-os usando a impressão. Imprima o tipo de cada um em uma linha e certifique-se de que todos correspondam ao que foi dado a eles após o vídeo no momento e faça o desafio. Ok, bem-vindo de volta. Como você conseguiu fazer isso aqui? Uma impressão e, em seguida, um número flutuante igual a 70,4 b. Então teremos um t e teremos apenas Nós vamos ter uma corda. Uma corda. E vai ser, eu amo essa master class e vou deixar um comentário. Isso não tem nada a ver com o que está acontecendo agora. Isso acabou de sair da minha cabeça. OK. Então, sim, exatamente. Avaliação de 55 estrelas. OK. Com algumas exclamações, com alguns pontos de exclamação OK. Do alto da minha cabeça. E agora vamos imprimir o tipo de um número flutuante, Duplicar isso, um número, Duplicar isso e E o lingote de um touro. Às vezes, lingotes são chamados de touro, diremos que é Vamos também criar um que seja falso, já que existem apenas dois. Um falso touro falso porque você não quer ter o mesmo nome para duas variáveis diferentes, A, B, um touro falso. Clique com o botão direito e execute. Como você pode ver, temos um flutuador, um inteiro, uma corda, um touro e um touro Senhoras e senhores, muito obrigado por assistir. No próximo vídeo, veremos algo que precisamos observar, especialmente com nossa nova capacidade de mudar as coisas. Obrigado por assistir. Te vejo no próximo vídeo. Tchau tchau por enquanto. 11. 5. Algo para prestar atenção: Bem-vindos de volta, meus programadores de Python favoritos. Neste vídeo, veremos algo que pode potencialmente quebrar nosso programa. O que vou fazer é que aqui no topo eu tenho o H correto. Vou criar outra variável e vou chamá-la de nome. E eu vou dizer que o nome é igual ao Michael. Ok, então digamos que eu queira imprimir algo na tela e aqui vou fazer isso. Primeiro adicionarei o sprint e, acima dele, farei o seguinte Vou imprimir o nome e anotá-lo conosco, com um espaço em cada lado, com um espaço em cada lado, mais a idade e os anos de idade Parece uma sentença muito inocente. 25. Vamos fazer 25 cliques vermelhos e executar. E lá vamos nós. Michael tem 25 anos. Ele precisa de um espaço aqui. E agora tudo deve ficar bem. Correto. Michael tem 25 anos. Não há problema em nenhum lugar, exceto por não 25 anos. Mas isso não vem ao caso. O problema aqui surgirá se eu tentar fazer o seguinte. Agora veja, mesmo antes de corrermos, já temos um destaque. Agora, nunca vimos esse destaque antes. Esse é um erro esperado. Isso poderia potencialmente quebrar nosso código. É mais sério do que um aviso normal. Sempre preste atenção sempre que você vê algo assim. Agora, se eu escrever Click e executar, recebo um erro. E o que isso me diz? Isso me diz que houve um erro de tipo e só pode cactinar STR, ou seja, strings, não inteiros, duas strings, a idade era uma string, nós a concateinamos, e então decidimos, você sabe o que, eu não quero tê-la você sabe o que, eu não quero Vou removê-lo e vou torná-lo um número inteiro. E o Python permite que você faça isso. É muito simples, muito fácil. Mas esses são os tipos de problemas que podemos enfrentar se tentarmos mudar as coisas por nossa própria vontade. Por favor, mesmo que você tenha a capacidade de alterar o tipo de sua variável sempre que puder, Python oferece essa capacidade e somos muito gratos por Mas o Python também considera você um adulto adulto. Eles consideram que a pessoa que está escrevendo o código Python deve saber o que está fazendo e não deve fazer coisas assim Portanto, tenha muito cuidado ao alterar o tipo de variável. Muito obrigado por assistir. Este foi um vídeo rápido, não há nem mesmo um desafio aqui. No próximo vídeo, veremos os operadores numéricos. Então, vamos ver como podemos operar com números usando diferentes vantagens, desvantagens, divisões, etc., etc Nos vemos no próximo vídeo, e adeus por enquanto. 12. 6. Operadores de números: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, veremos os operadores numéricos. Vamos criar um novo arquivo Python que chamaremos de operadores de sublinhado de números Estrondo. Vou criar a primeira variável que será a igual a 25 e B igual a cinco Então eu vou imprimir A mais B, o dobro disso. Em seguida, uma duplicata negativa que vezes duplica aquele A dividido por B. Controle D para duplicar E então A dividido por B e depois uma porcentagem. Isso também é conhecido como módulo, se eu escrevo Click e executo, isso é o que eu recebo 403-01-7057 0.0 7.0 Esses são bastante óbvios. 35 mais cinco é 40, 35 menos cinco é 30, 35 vezes cinco é 175 Eu acho que a divisão é um pouco estranha, porque nos dá 7.0 Sempre que você divide dois números, mesmo que ambos sejam inteiros, o tipo de retorno sempre será um flutuante, a menos que você dê uma segunda divisão, menos que você dê uma segunda divisão, que remove todos os Por exemplo, se eu tivesse 35/4, você pode ver que recebo 875. E então, quando dividido, eu obtenho oito. Ele não arredonda para o número mais próximo. Essa é uma grande confusão que muitos estudantes têm. Não arredonda. Ele simplesmente remove tudo o que está depois do ponto flutuante. Mesmo que você tenha, digamos, 9,99 9999, a resposta não será dez, a resposta será Antes de prosseguirmos, vamos imprimir o tipo de a dividido por B. Em seguida, o a dividido por quanto você espera que a saída seja? Como você acha que serão os tipos desses dois? Clique com o botão direito e execute float e integer. Ok, eu não acho que haja muito a dizer aqui. Quero dizer, essas são coisas bem básicas. Saiba que podemos fazer aritmética dentro do Python usando todas essas coisas diferentes sem mais delongas usando todas essas coisas diferentes sem mais delongas. É hora de um pequeno desafio para você operar nessas entradas, na entrada, não nessas entradas Obtenha duas entradas do usuário. Use adição, subtração, multiplicação e divisão. Peço desculpas, eu não falei sobre o módulo aqui. Então, o módulo nos dá o restante. Então, por exemplo, 35/4, o restante é três. Se eu dividir por cinco, não sobra. Ok, então o restante é zero. Não há nada que reste. 32/5 o restante seria dois, então é o restante o que resta Use adição, subtração, multiplicação e divisão Pesquise como você calcula a potência em Python, por exemplo, dois números Há uma pequena dica que você precisa saber e essa é a entrada int Estamos acostumados a receber a entrada, mas ainda não usamos o t nela. E você verá por que isso é tão importante Coloque o vídeo agora mesmo e faça o desafio. Ok, como você conseguiu fazer isso? Então, eu vou entrar nessas duas linhas aqui. Em vez disso, vou dizer que a é igual a uma entrada inteira Opa, duplique essa entrada. Lá vamos nós. Agora, se eu escrever, clicar e correr, digamos 6.10 Pressione Enter e bum, isso é o que obtemos 16 -4.600,6 0.6 Essas são as várias adições e divisões que estamos Por que tivemos que convertê-lo em um número inteiro? Bem, eu vou te mostrar. Digamos que eu remova isso daqui. A propósito. No final, se você passar o mouse sobre ele, diz que cria e retorna um novo objeto do mesmo tipo ou do tipo inteiro O que quer que você dê, ele se converte em um número inteiro. Qual é o problema aqui? O problema aqui é que já aprendemos que não podemos concatenar dois O que significa que quando você recebe a entrada é uma string. É por isso que temos que convertê-lo em um número inteiro, porque a é um inteiro, quando fazemos a mais B, não funciona Já vimos isso em variáveis. Aqui, você pode ver que H não funciona. Você não pode concatenar uma string, um inteiro, com uma E o mesmo acontece aqui. Obtemos a entrada a, convertemos em um número inteiro e, em seguida, a adicionamos a B, que é uma Deve ser um número inteiro. Mas agora, como não temos a função int em torno dela, ela continua sendo uma string. E o mesmo vale para menos B. Agora, a vezes B funciona porque você pode multiplicar uma string por um número Eu vou te mostrar isso em vídeos posteriores. Também não podemos dividir, é claro, e não podemos pegar o módulo. É muito importante que tenhamos int em torno de nossa entrada para podermos convertê-la em 52,10, obtemos essas Agora, última parte, pesquise como calcular a potência. Agora, alguns de vocês podem ter encontrado alguma função, alguns de vocês podem tê-la achado mais fácil do que outros. A maneira mais fácil é simplesmente adicionar uma estrela extra aqui. E isso realmente cria, vamos tentar números. Boom, lá vamos nós. Isso é 14 elevado à potência três, ou a à potência. Agora, antes de prosseguir, há algo que você precisa saber: assim como na matemática normal, assim como na matemática normal também temos precedência de operadores ao trabalhar com Python Por exemplo, aqui, se eu fizer o seguinte, se eu imprimir um mais B dividido por três menos três multiplicado por quatro, todos sabemos que a divisão e a multiplicação vão antes da adição e multiplicação vão antes da adição Agora, se eu escrever Clique e correr e obtiver um valor igual a 2,1, você verá que a resposta é -9,666 Deixe-me tentar novamente para escolher alguns números mais fáceis. Vamos escolher três porque é dividido por três menos nove O que aconteceu? Temos três, isso é um mais A, isso é três. Menos três vezes quatro. Nós fazemos três vezes 412 menos os três que temos aqui Então, temos menos nove presidentes de operadoras. A precedência também se aplica aqui, mas podemos alterá-la usando parênteses Eu posso adicionar parênteses em torno de três multiplicados ou, na verdade, isso não faz nenhum sentido Vamos adicionar parênteses em torno de A e B. Agora, a resposta foi menos nove, quando tínhamos 2,3. Vamos 23. Estrondo. Lá vamos nós. Tivemos menos nove. Agora temos -10.333 Porque dois mais três é 5/3, eu não tenho ideia. Menos três vezes quatro. Lá vamos nós. Podemos adicionar parênteses para mudar as coisas Muito obrigado por assistir. Espero que você goste. E no próximo vídeo, veremos os tipos de dados de string. Vamos nos aprofundar nas cordas e no que elas são Obrigado por assistir ao novo. 13. 7. Tipo de dados de cadeia: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, veremos os tipos de dados de string na superfície. As cordas podem ser muito simples para você, mas as cordas têm algo escondido no fundo delas Vamos começar a explorar quais são esses segredos ocultos das cordas. Primeiro de tudo, vou criar um novo arquivo Python que vou chamar de tipo de dados de string Eu sempre adiciono um sublinhado nos nomes dos meus arquivos. Às vezes, você não precisa adicioná-lo quando pode ter espaços dentro dos seus arquivos. Mas se você quiser importar esses arquivos para um arquivo diferente, não poderá, a menos que eles tenham sublinhado. A melhor forma convencional é usar sublinhados e não ter letras maiúsculas Vou apertar Enter. Aqui, vou criar a seguinte mensagem. Eu vou dizer que a mensagem é igual a Python é uma ótima Python é uma ótima linguagem. Aqui, vou imprimir a mensagem. Muito simples. Eu não acho que haverá nenhuma confusão aqui. Quando escrevo, clico e corro, percebo que Python é uma ótima Perfeito, acabei de imprimir a mensagem. Mas você sabia que eu posso acessar caracteres individuais usando a mensagem? Eu posso imprimir a mensagem na posição número dois. Vamos ver o que vai acontecer se eu escrever, clicar e executar. Eu entendo. Agora, de onde veio isso? Bem, se olharmos aqui, temos P y. Agora você pode estar pensando, bem, é um, y é dois e é três, mas eu usei dois aqui. Como isso funciona? Bem, em Python e na maioria das linguagens de programação, quando você quer contar alguma coisa, você começa Aqui, vou adicionar um comum. Isso é comum, aliás, quando você tem uma tag de hash, isso é zero, depois 12345. Olha isso. Na posição número dois, eu tenho, o que eu ganharia? Por exemplo, na posição número quatro, eu posso ouvir você na parte de trás dizendo que eu entendo o e você estaria correto, você obtém, vamos continuar nomeando esses 56789 E então vou adicionar outro nível de comentários que estarão aqui. Por exemplo, um e depois 012-345-6789 e depois 012345. E aqui vou adicionar um, desculpe, dois. Agora, se eu dissesse qual seria o número ou qual seria o caractere em 16, o que você me diria que seria porque é 16. Bem, agora, se eu te disser 11, qual será a resposta? Oh, nada. Não é, na verdade é um espaço. O espaço ou o espaço vazio também é considerado um personagem. É isso que a corda esconde sob sua superfície. É chamado de intervalo. Quando iterável é um item ou um tipo de dados, como listas, topos, dicionários, conjuntos e listas, Veremos tudo isso nas próximas seções. Não se preocupe com isso por enquanto. Saiba que você pode percorrer sua string usando índices. Eles são chamados de índices, o no zero, o 11, quando você pode acessá-los usando os colchetes Esses são índices. Está bem? Então, espero que esteja claro. Espero que não seja muito difícil, porque eu quero que você realmente entenda isso antes de passar para o desafio imprimir uma mensagem de forma diferente. Então eu quero que você use a mensagem que temos para imprimir outra mensagem. E essa outra mensagem será você não está usando os índices do seu método de string original Então passe o vídeo agora mesmo e vá para o desafio. Ok, bem-vindo de volta. Como você conseguiu fazer isso aqui? Para imprimir U are hot, obviamente precisamos encontrar Y, O, U, etc., etc Então, vou imprimir colchetes de mensagem e, em seguida, vamos começar com o U. O U está em uma mais mensagem, o O está em quatro Então, mais a mensagem, o U, precisamos de um U, é aos 22, mais a mensagem, precisamos de um espaço. Um espaço pode ser encontrado às seis. E lá vamos nós. Excelente. apertar enter aqui. E não se preocupe, isso não vai quebrar nada. Vai ficar o mesmo aqui. Mensagem, abra isso, você é A, precisamos de um A. Onde está o A? São mais de dez mensagens. Precisamos de um UR. Precisamos de um R. Onde está o R? Às 13:13? Além da mensagem para 213. Onde está o outro U R? Você precisa de um E, é às 14. Vamos ver o que temos até agora. Praticamente pode funcionar. Ok, você é excelente. Agora, novamente, precisamos ter um espaço com os seis. Agora, para a cabana, vou encontrar o H, que é três mais esses quatro, mais a mensagem às 02:16 Com o botão direito do mouse, clique e corra e pronto Você é gostosa. Muito obrigado por assistir, senhoras e senhores . Espero que tenham gostado. No próximo vídeo, veremos índices negativos, para que possamos realmente analisar isso retrocedendo Obrigado por assistir e nos vemos no próximo vídeo. Tchau tchau por enquanto. 14. 8. Indexação negativa em strings: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, veremos a indexação negativa em strings Assim como temos indexação positiva, em que usamos números positivos, também podemos usar números negativos Deixe-me mostrar o que quero dizer. Em primeiro lugar, selecionarei todas essas linhas e pressionarei control forward, que comentará tudo. Novamente, selecione todos eles. Pressione control forward se quiser torná-los incomuns. Você também pode manter pressionado o controle de barra frontal ao selecionar essas linhas de código Controle a barra frontal. E agora, aqui, vou imprimir a mensagem na posição menos um Como você acha que será a resposta? Bem, se você disse que seria E, você está correto. Quando começamos a indexar, retrocedendo, começamos a ir do final da mensagem ou da string até o início, por exemplo, menos oito O que isso nos daria? Clique com o botão direito e execute. Eu não tenho ideia. Eu geralmente faço. Não quero dizer, 12345678? Sim, exatamente. Então, no L, por exemplo, se eu quisesse o, eu faria menos dez porque isso é menos oito Menos nove. Menos dez Então, clique com o botão direito e execute. E lá vamos nós. Nós obtemos o, para que possamos fazer indexação negativa. Muito simples. Não há nada demais aqui. Acho que você entendeu. Não acho que haja muitas complicações forma como tudo isso funciona. É exatamente como usar os índices positivos. É simplesmente negativo ao contrário. Então, com isso resolvido, é hora de um pequeno desafio. Seu desafio é imprimir a mensagem de forma diferente. Então, eu quero que você use índices negativos para imprimir a mesma mensagem E essa mensagem é: você é gostosa, mas quero que a imprima agora usando índices negativos Então, pause o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta. Como você conseguiu lidar com isso? Muitos de vocês podem ter passado por isso da maneira mais difícil. O que significa que você quer encontrar, por exemplo, o Y. Você tem que contar até o Y. Essa é provavelmente a maneira de não trapacear, mas eu tenho um jeito de trapacear mas eu tenho um Eu já tenho essas mensagens aqui. Deixe-me realmente copiar isso. Mãe, hmm. E o baseou aqui. E alguns de vocês que passaram muito tempo nisso já estão com raiva porque acham que há uma maneira mais fácil de fazer isso. A maneira mais fácil é porque já temos 26 caracteres aqui. E por que temos 26 caracteres? Porque começamos em zero e terminamos em 25, o que significa que temos 26. O que posso fazer é adicionar -26 a isso imediatamente. Agora eu posso calcular, isso é -25 ou você pode usar uma calculadora, por exemplo E eu calculo Ok, 13 -26 etc., eu obtenho -13, será -13 e aqui será menos menos Mas eu posso mantê-lo como está, para que eu possa manter a equação dentro de mim sem ter que mudar nada. E eu vou, você não está usando índices negativos, eu tenho um problema -13 -26 está fora Estou muito feliz que eu realmente tenha esse problema. O problema aqui é que eu posso maximizar, por exemplo, aqui, deixe-me, deixe-me remover isso e mostrar que isso realmente funciona. Ok, vamos lá. Você é gostosa. O problema é que se eu for para -22, por exemplo, o que eu ganho? Eu recebo o O, então estou aqui. Se eu clicar -25 com o botão direito do mouse e correr, recebo y, isso é ótimo -26 Eu entendi corretamente, está tudo bem. Mas se eu for -27, agora estou fora do alcance da minha string Então eu estou de novo, não há mais desvantagens onde eu possa ir E a mesma coisa acontece se eu tentar seguir na direção positiva. Então, eu sei que o último índice é 25, de onde eu obtenho, mas se eu tentar ir 26, agora estou fora do intervalo e isso não funciona mais. Espero que você tenha entendido. Talvez alguns de vocês nem tenham ouvido a última parte. Alguns de vocês podem ter clicado. E agora você fica tipo, você sabe o que, eu não quero esse curso, eu não quero essa master class. E você está usando palavrões que eu não vou repetir aqui por causa do que eu não ouvi Alguns de vocês tiveram que calcular tudo isso, ou alguns de vocês podem ter encontrado isso. Tenho alunos que encontraram essa equação sozinhos. Então, parabéns para aqueles que o fizeram. Aqueles que não se sentem mal, ainda têm muitos desafios pela frente, onde você pode provar seu valor neles. Então, muito obrigado por assistir. Espero que tenham gostado. E no próximo vídeo, veremos como fatiar strings usando os índices não para extrair apenas um único caractere, mas para extrair, extrair uma fatia inteira Então, eu vou te ver então. Tchau tchau por enquanto. 15. 9. Cortando cordas: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo Neste, vamos tentar nossas cordas Vamos continuar e começar. Vou criar um novo arquivo Python aqui ou, na verdade, podemos ficar no mesmo Não há necessidade de um novo arquivo. Vou apenas comentar tudo isso e depois começar um novo. Vou imprimir a seguinte mensagem. Abra os colchetes e, desta vez, vou dizer zero, coluna cinco Agora, quando escrevo Click e corro, recebo a palavra pytho Como você pode ver, isso é chamado de fatia onde eu tenho o começo e depois tenho o final que eu quero Agora você pode estar dizendo, espere, cinco é o fim. É o fim. Por que eu não tenho um n aqui? Bem, isso porque a regra aqui a ter em mente é que depende, mas nem sempre. Lembre-se disso ao trabalhar com quase tudo em Python Está sempre pronto, mas não está pronto, mas não inclui se eu queria ter Python O que devo escrever aqui? Sim, eu posso te ouvir. São seis. Agora eu entendo a palavra Python completa E observe que não há espaços aqui. Vamos analisar o corte de uma forma mais teórica. Aqui temos a string que queremos cortar, temos o início, a parada e a etapa Ainda não vimos a etapa Veremos as etapas em vídeos posteriores, mas, por enquanto, esse é o índice inicial, é aqui que começamos a fatiar, esse é o índice final e não está incluído E então temos o passo a passo, quais são os passos que estamos dando? Por exemplo, agora nosso passo é um porque vamos para H O. E você verá que podemos usar um passo de dois, por exemplo, para ter em vez disso. Veremos tudo isso em vídeos posteriores, mas, por enquanto, vamos nos concentrar em usar as fatias. Sem essas etapas, já é difícil entender as fatias, a mensagem das etapas aqui. Se eu fizer os seguintes 12, 17, qual você acha que será a saída? Se eu escrevo, clico e corro, entendo a palavra, ótimo. Porque eu começo às 12 e paro às 17. Lá vamos nós. E não há espaços lá dentro. Agora, minha pergunta para você é o que eu imprimiria se eu digitasse o seguinte? O que você acha que eu recebo? Se eu escrever, clicar e correr, você verá que eu entendo a palavra pelo polegar. Por que isso? Bem, quando você não especifica o começo ou não especifica o fim, você simplesmente começa de. Então, se você não especificar o início, você começa do início. E se você não especificar o final, basta ir até o final. Então, espero que você tenha entendido, espero que não tenha sido muito difícil. Vou lançar um desafio em que você terá que imprimir usando fatias. Portanto, imprima a linguagem da palavra cortando nossa string. E há dois métodos para fazer isso. Então, passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Precisamos usar o corte. Alguns de vocês podem ter usado a extração regular de variáveis usando os índices. Não, precisamos usar fatias. É bem simples. Acho que a mensagem aqui tem que ir do número 18, certo, porque começamos em L, L começa em 18 ou o índice de L está em 18. E então precisamos ir até o fim. Então eu posso ir 25, clicar com o botão direito do mouse e correr e oh, onde está o E? 25 não funciona bem nesse caso. Eu posso usar 26 mesmo tendo um erro em 26 aqui, se você se lembra. Mas ao usar o corte, é gerenciável. Agora, se eu for 27, como você pode ver, ainda tenho tudo. As fatias não são tão ruins. Deixe-me tentar, por exemplo, 30 e eu escrevo Clique e eu corro, bum, lá vamos nós. Eu ainda tenho linguagem ao usar fatias, não me preocupe em sair com o índice. Esse é o primeiro método, 18 a 26, eu entendo o idioma. O outro método é 18 e nada porque, como eu disse, posso ir até o final quando escrevo, clique e corra. Também recebo um idioma quando não forneço o início ou não forneço o fim. Eu simplesmente começo do começo ou vou até o fim antes de prosseguirmos. Ainda tenho alguns truques que quero te perguntar. Alguns questionários, se você quiser. Por exemplo, o que eu obteria se eu fizesse a seguinte coluna de mensagem 18, mais os colchetes de mensagem 18 Qual você acha que será o resultado? Bem, se eu escrevo Click e corro, entendo que Python é uma ótima Por que isso? Porque aqui eu começo do começo e vou até os 18. Na mensagem, começo dos 18 e vou até o fim. Espero que tenha sido entendido. Questionário que eu quero te perguntar. O que obteríamos se eu fizesse isso apenas como uma coluna? Bem, alguns de vocês podem ter respondido que recebemos a mensagem completa. É porque eu começo do começo e vou até o fim. Muito obrigado por assistir. No próximo vídeo, vamos cortar usando negativos, o que será uma dor de cabeça, mas será muito importante nos acostumarmos com tudo o que está acontecendo sob a superfície em Quando terminarmos esta seção, você terá uma base muito sólida, não apenas para a programação em Python, mas para a filosofia de programação em geral Então, obrigado por assistir. Se você tiver tempo, deixe-me um comentário. Onde quer que você esteja assistindo isso ou você pode simplesmente entrar em contato comigo. Diga-me, ei Michael, como se eu não entendesse nada sobre essa master class, por favor. Você pode me ajudar? Eu fico tipo, sim, claro, qual é o problema? Não sei por que eu disse isso. Muito obrigado por assistir e nos vemos no próximo vídeo. 16. 10. Como cortar com negativos: Bem-vindo de volta, meus desenvolvedores favoritos de Python. Neste vídeo, veremos como deslizar usando negativos Mais uma vez, vou comentar tudo isso e vou começar um novo. Agora você pode ver que temos muita coisa aqui, mas ainda vamos usar a mesma mensagem. Portanto, vale a pena ficar no mesmo arquivo. Se quiser, você pode dissecá-lo em vários arquivos. Você pode fazer o que quiser. Contanto que você mantenha tudo arrumado e limpo. Se você quiser voltar e examinar seus arquivos de tempos em tempos, vamos começar. Antes de tudo, quero imprimir a mensagem de -14 a menos nove Qual você acha que será o resultado? Se eu escrevo, clico e corro, eu entendo as palavras, ótimo, como isso está funcionando? Vou começar do final. 123-45-6789 101-112-1314 -14 está ótimo. E então 123-45-6789 menos nove está em sete, que é o espaço aqui, -14 a menos nove é a fatia que nos dá ótimos Agora, o que aconteceria se eu, por exemplo, fizesse -14,4 bits de forma estranha Se eu clicar com o botão direito do mouse e correr, não obtenho nada porque -14 está aqui ligado e quatro está aqui em A. Você pode estar pensando, bem, talvez esse não seja o problema O problema é que você simplesmente não pode usar negativos e positivos, mas você pode, se fizer -14 17, está aqui Clique com o botão direito e execute. Você entende a palavra. Ótimo. Não se trata de não poder dividir do negativo para o positivo É sobre, você não pode cortar indo para trás. Por exemplo, não consigo imprimir a mensagem de, digamos, nove. Quero dizer 19 a, não sei, 15. Isso não é possível. Não posso retroceder a menos que use uma etapa que aprenderemos no próximo vídeo Mas, por enquanto, você não pode voltar atrás. Você não imprime nada. Mas se você, por exemplo, digamos que eu comece com menos, assim como eu tenho aqui -14 é às 17 está no espaço. Não vou cortar para trás, não vou voltar. Eu canto para frente, não consigo cortar assim. Eu só posso cortar assim da esquerda para a direita. Eu posso cortar da direita para a esquerda. Eu não posso fatiar e essa é a única regra. Antes de prosseguir, você tem um pequeno desafio de imprimir usando fatias negativas. Imprima o idioma da palavra cortando nossa string. Mas desta vez você só pode usar o corte negativo. E um pequeno aviso de que existem algumas armadilhas aqui que você deve tentar evitar Pause o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu fazer isso aqui? Se eu tentar fazer o seguinte, estou tentando imprimir o idioma. Alguns de vocês podem ter se sentido tentados a fazer o seguinte. Menos oito e depois menos um, correto. O único problema aqui é que quando escrevo, clico e corro não recebo o E. Então, como faço para resolver isso? Bem, há duas maneiras pelas quais eu posso. Por exemplo, o uso 00 está aqui. Se eu escrever, clique no Irã, não funciona. Por que isso? Bem, porque a forma como funciona é pensar que estamos com menos oito aqui na L. Então estamos tentando retroceder Então, não funciona. Essa é a segunda armadilha. Agora, a última solução ou a única solução é realmente fazer o seguinte de menos oito até o final E quando escrevo Click in Iran, recebo o idioma inteiro. Então, muito obrigado por assistir. Espero que você goste. E no próximo vídeo, começaremos a usar a etapa para fatiar E nos vemos no próximo vídeo. Tchau tchau por enquanto. 17. 11. Usando um passo enquanto faz fatias: Bem-vindos de volta, meus desenvolvedores favoritos de Python. Neste vídeo, usaremos uma etapa ao fatiar Finalmente, mais uma vez, vou comentar , vou começar do começo. Aqui eu vou, com licença, imprimir uma mensagem e vou começar do zero, ir para 17 e usar uma etapa de dois Em seguida, duplicarei isso e usarei uma etapa de três Então, o que você acha que eu vou conseguir? Alguns de vocês podem ter pensado sobre isso, alguns de vocês já devem ter usado isso. E estou muito orgulhoso de você. Então, quando escrevo Click e corro, recebo po saget e ga. Minha pronúncia dessas antigas palavras simbólicas vai ser estranha Mas o que está acontecendo aqui é que eu obtenho P, Y. Estou usando uma etapa de dois E quando estou usando uma etapa de três, estou pulando duas letras aqui, começo com Y, H, O e espaço é espaço, é por isso que tenho dois espaços aqui Então eu pulo o espaço E e obtenho e depois pulo o R e E e obtenho A. Então esse é o básico de Agora, com esse conhecimento, e a propósito, quando não especificamos a etapa, usamos apenas uma como padrão e obtemos a etapa normal. Agora, vamos encontrar um uso útil dessas etapas. Vou criar um novo arquivo e chamá-lo de dados que chegam aqui. Vou fazer com que os dados sublinhem N, e será igual, será igual a 63548 Você não precisa escrever exatamente os mesmos números. Semicluna 6957 para frente 3267, multiplicação 48 a 926, colchete multiplicação 48 a 926, colchete 36 14. E, finalmente, teremos o seno positivo e 406-70-9907. Quero dizer, são dados chegando, mas, como você pode ver, temos corrupções dentro mas, como você pode ver, temos Nós temos, temos multiplicações, temos símbolos estranhos O que queremos fazer é criar um filtro. O que faremos é extrair todos esses separadores e imprimi-los. Está bem? Então, podemos usá-lo como um filtro para filtrar todas as coisas ruins e negativas aqui. Então, o que eu quero você faça é fazer o seguinte. Para imprimir os separadores. Eu quero que você imprima os separadores. Quer dizer, eu não sei por que eu tenho esse ponto aqui. Use as etapas de corte para evitar os números. Então, passe o vídeo agora mesmo e vá fazer cada desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Em primeiro lugar, vou imprimir, obviamente, os dados que chegam. E agora precisamos entender quais serão as fatias . Por onde começamos? Alguns de vocês podem ter começado do zero, mas não é do zero que queremos começar. Queremos começar do zero. Por que isso? Porque queremos, antes de tudo, pegar a vírgula e depois para onde eu quero ir? Alguns de vocês podem ter contado quantos caracteres tínhamos na sequência, mas há uma maneira muito mais fácil, que é ir até o final. Agora, a pergunta final é: qual etapa eu preciso usar? Bem, se eu começar aqui e quiser pular quatro letras, isso significa que a etapa deve ser cinco Agora, quando eu escrevo clique e corro, você verá que eu tenho todos os símbolos impressos. E agora eu posso usar esse filtro para colocá-lo nos dados que chegam. E se, por exemplo, eu encontrar parênteses ou este ou este, todos eles serão apagados Então, senhoras e senhores, muito obrigado por assistir No próximo vídeo, veremos o corte, mas desta vez vamos retroceder com Então eu vou te ver então. Tchau tchau por enquanto. 18. 12. Cortando para trás: Bem-vindos de volta, meus desenvolvedores favoritos de Python. Neste vídeo, veremos como cortar para trás. E espero que seja a última lição sobre fatiar. Então, vamos começar. Em primeiro lugar, vou criar um novo arquivo Python que chamarei de underscore slicing e, como o Intellij congelou, usarei o poder da edição para ver chamarei de underscore slicing e, como o Intellij congelou, usarei o poder da edição para ver você em apenas alguns segundos. Ok, bem-vindo de volta. Letras iguais a A, B, C D E F G H R J K L M N O P R S T U V W X. você pode ver, veja como o IntelLG é útil Esqueci X, Y e Z. Então, se eu escrever Clique em Mostrar contexto, Só me diz que esqueci algumas cartas. Então Y e Z. Não, vamos lá. Agora, o que eu quero fazer é criar uma variável que seja o contrário. É igual a letras. E agora vou começar com 25, ir até zero e ter um passo de menos um O que isso vai fazer? Começará do último e depois chegará a zero. Com um passo de menos um. Isso inverterá as letras. Se eu imprimir ao contrário, se eu escrever, clique, você verá que obtenho Z, Y, X, U, T, S, Q, Q, P, O, N, L, etc Mas, como você pode ver , falta o A. Como resolvemos esse problema? Você já deveria saber. Vá lá, eu sei que você sabe disso. O que nós fazemos? Vamos remover isso no meio. E agora clicamos com o botão direito do mouse e corremos e obtemos o A. Por que não obtivemos o A quando usamos o zero? Como depende, mas não inclui, não incluímos A no início. Espero que você tenha entendido como isso funciona. Esse é o básico disso. Isso é cortar, retroceder, quando usamos um Analisamos a indexação, analisamos o fatiamento, analisamos o fatiamento usando indexação negativa Usamos etapas e usamos etapas negativas. Como desafio final para todo esse novo conceito, quero que você imprima os três seguintes. Quero que você imprima o IJK usando etapas e índices positivos Etapas positivas, índices positivos U TSR. Usando índices negativos, quero dizer etapas negativas ou a etapa deve ser negativa, os índices podem ser Em seguida, os últimos oito caracteres na ordem inversa usando índice negativo e uma etapa negativa, ok? O último é o mais importante, índice negativo e etapa negativa. O segundo, apenas passos negativos. E o primeiro usa etapas positivas e indexa vídeos positivos agora mesmo e dê o melhor Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Primeiro de tudo, tivemos uma impressão e depois vou criar IJK igual a letras E isso deve ser bem fácil. Nós simplesmente partimos do IJK. Espere, deixe-me verificar novamente. 12345678. Aguarde até 012-34-5678. Sim, oito até 11, e nós imprimimos. Tinta. Tinta. Lá vamos nós. Muito bom. Agora, vamos fazer UTR e será igual a. Agora, dissemos que o UTS R deveria usar a etapa negativa. Isso significa que estamos retrocedendo , pois só precisamos usar índices positivos Então isso significa que temos 0123, 4567, 8910, 1112, 1314, 1516, 1718 1920. Começamos com 20 e precisamos voltar quatro etapas, o que significa 16, terei letras e estamos usando uma etapa negativa, então começamos em 20, vamos para 16 e não está incluído e menos um Vamos verificar se isso está correto. É R, clique com o botão direito, Executar. Lá vamos nós. Muito bom. E por que está me dizendo a palavra erro de digitação? Ok, não se preocupe. Um erro de digitação na palavra. Finalmente, precisamos dos últimos oito caracteres. Queremos ter os últimos oito caracteres com um passo negativo, com um índice negativo. Como vamos fazer isso? Então, primeiro de tudo, precisamos ir até o fim. Então, precisamos chegar a isso, precisamos dos últimos oito caracteres, então 12345678 Ok, então primeiro de tudo, vamos definir o passo negativo menos um Então, eu estou retrocedendo. Isso significa que preciso começar com menos nove e chegar ao fim Não, preciso chegar a menos nove na ordem inversa. Ok, agora faz sentido. Na ordem inversa. Passo menos um e um índice negativo menos nove aqui. E queremos começar do começo. Se eu imprimir os últimos oito caracteres, clicar com o botão direito do mouse e executar, There we go, 12345678 Tudo bem, então senhoras e senhores, muito obrigado por assistir No próximo vídeo, veremos alguns operadores de string e veremos como podemos imprimir números com strings e terminaremos com esta seção introdutória Obrigado por assistir. Se você está gostando das partituras, deixe-me um comentário. Se você não está enfrentando os desafios, esta é a hora de começar a enfrentá-los. Obrigado por assistir e nos vemos em apenas alguns segundos. 19. 13. Operadores de string: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, veremos os operadores de string. Assim como temos formatos de operadores como adição, multiplicação, divisão, etc., também temos operadores para cadeias de caracteres. Vou criar um novo arquivo Python e chamá-lo de operadores de sublinhado Vou criar a string número um, string um, que será igual a um espaço. Vou duplicar isso algumas vezes. Teremos a string 2345 aqui. Eu direi que não entra simplesmente em Mordor Se você está familiarizado com O Senhor dos Anéis, talvez conheça esse significado. Se você não é, me desculpe por ser um nerd, então vamos imprimir a sequência número um E, na verdade, não me arrependo de eu ser , lamento que você ainda não tenha assistido aos filmes. Sequência número dois, sequência número três, sequência número quatro e sequência número cinco. Essas são sequências de caracteres sendo concatenadas e já vimos o que acontece quando Você pode ver que formamos uma única frase, qual não se entra simplesmente. Agora vamos adicionar uma impressão aqui para separar as linhas e vamos fazer o seguinte. Eu vou dizer, ei, aí meu nome é Rodo Baggins Como você pode ver, não estamos fornecendo várias variáveis ou vários parâmetros para nossa impressão aqui. Ao contrário do que fizemos, por exemplo, neste caso em que tínhamos uma vírgula entre cada um dos nossos parâmetros sendo enviados para a impressão aqui, não há, essa é uma única variável aqui que está sendo enviada Então, quando corremos, você pode ver que obtemos o seguinte. Precisamos adicionar espaços no meio para que isso seja legível Como você pode ver, se quisermos imprimir várias sequências de caracteres uma ao lado da outra, não precisamos adicionar um sinal Eles simplesmente são adicionados sozinhos ou são concatenados Também podemos usar a multiplicação. Então, por exemplo, aqui eu posso imprimir a sequência número cinco multiplicada por três E qual você acha que será o resultado? Pense nisso por um segundo. Clique com o botão direito. E eu corro, recebo mordor, Mordor, Mordor. Você pode multiplicar o número três vezes. Quero dizer, você pode multiplicar uma string por um inteiro. Agora, qual você acha que a resposta aqui vai ser? Bem, você já deve ter visto que temos um destaque, o que significa que provavelmente receberemos um erro. Se eu passar o mouse sobre ele, ele diz que esperava STR, significa string, e obteve um número inteiro , limitado pelo final Se eu escrever click e executar, recebo o erro dizendo que você só pode concateinar uma string e não um inteiro em uma Isso é um número inteiro e isso é uma string porque a multiplicação acontece Como podemos resolver isso? Pense em duas maneiras de resolver isso. 321, posso adicionar parênteses aqui. Agora, três mais seis serão iguais a nove cordas cinco multiplicadas por nove, chegaremos a nove mods É mais um mordor do que deveríamos. Agora, a outra maneira de corrigir isso é transformar o seis em uma string. Agora, quando clicamos com o botão direito do mouse e corremos, obtemos mais mod e , em seguida, seis são adicionados a ele. OK. Agora, também poderíamos fazer isso de uma maneira um pouco diferente. Vou duplicar isso, vou cortar, colocar no início Adicione mais a isso. E qual você acha que será a resposta nessa situação? Eu quero que você realmente pense sobre isso e anote na sua cabeça antes de realmente executar o programa. Clique com o botão direito. E nós corremos, obtemos seis mod mod mod. A multiplicação funciona antes a adição de seis seja adicionada no início Mas então somente o mordor é multiplicado três vezes. Espero que isso faça sentido. Se quiséssemos que os seis também fossem multiplicados por mordor , teríamos que fazer algo assim E agora temos seis mod six mod six mordor. São muitos motores. Antes de prosseguirmos, há mais uma coisa que precisamos entender aqui, que é que podemos imprimir ou na sequência cinco. Isso verifica se temos ou dentro da string cinco e retorna um lingote Se eu escrevo, clique e corro, fico verdadeiro porque tenho ou tenho mais portas. Veja, eu realmente tenho dois Ors. Agora deixe-me verificar se eu tenho um mas desta vez com maiúscula. Qual você acha que será a resposta? Se eu escrevo Click e corro, fico falso. Por quê? Porque os caracteres, quando falamos sobre referências de string, devem ser os mesmos que estão na string. Por exemplo, a maiúscula não está presente ou a maiúscula não está presente em mordor É por isso que não foi detectado. Vamos agora tentar outra coisa. Vamos tentar fazer na sequência cinco. Qual você acha que será a resposta? Também é falso, embora tenhamos D, e depois, e depois R. Mas eles não estão na mesma sequência que estamos procurando. Eles não formam a palavra porta aqui. Espero que isso faça sentido. Finalmente, vamos imprimir, imprimir e verificar se está chovendo ou em Meu nome é Michael. Qual você acha que será a resposta? Se eu escrever, clicar e correr, você verá que a chuva, infelizmente, não está em Michael, mesmo que eu tentasse adicionar chuva como essa. Então note que eu tenho chuva, mas eu tenho um espaço entre eles. Qual você acha que será a resposta? Vai ser verdadeiro ou falso? Ainda é falso porque o espaço também é considerado um personagem. A única maneira de obter uma verdade aqui é realmente ter a palavra chuva em algum lugar da nossa sequência, e agora a temos como verdadeira. Muito obrigado por assistir. Espero que você goste. E no próximo vídeo, veremos como podemos incorporar números inteiros em incorporar números inteiros em nossas cadeias de caracteres e imprimi-las Porque atualmente você percebeu que não podemos fazer isso. Não podemos concatenar números e números inteiros. Mas definitivamente existe uma maneira de resolver isso. Então, muito obrigado por assistir. Espero que você esteja gostando das aulas. Estamos quase no final da seção, então nos vemos em apenas alguns. Tchau tchau por enquanto. 20. 14. Números de impressão: Bem-vindos de volta, meus programadores de python favoritos. Neste vídeo, veremos a impressão de números. E quando digo imprimir números, quero dizer a capacidade de imprimir números inteiros com cadeias de caracteres Então, vamos começar. Primeiro de tudo, vou criar um novo arquivo Python aqui que vou chamar de impressão de números de sublinhado Vou criar uma variável que é entorpecida, sublinhado ou anéis de sublinhado E eu direi que é igual a três. E vou imprimir o seguinte. Vou imprimir que havia mais anéis, anéis forjados por Sauron Havia três anéis forjados por Sauron. Se eu clicar com o botão direito do mouse, é claro que recebo um erro. Eu já tive um destaque. Eu deveria ter previsto isso. Não consigo concatenar um número inteiro com um. Agora, há muitas maneiras Podemos, por exemplo, adicionar as aspas simples ao redor das três aqui Mas, como vimos, essa é uma manobra arriscada. Você não quer sempre poder mudar o tipo do seu. Há uma maneira diferente de convertermos isso em uma string usando o método SDR Agora, quando eu escrevo, clique e eu corro. Eu entendo que havia três anéis forjados por uma serra. Parece que isso funciona, nada mal. O único problema aqui é que usar o SDR toda vez você tem um número inteiro que deseja imprimir não é muito viável, é um pouco chato Podemos usar algo chamado campos de substituição. Deixe-me mostrar o que é isso. Vou controlar D para duplicar essa linha e vou para o campo de substituição Isso é chamado de campo de substituição com um zero dentro. Em seguida, no final da string, digitarei formato número de anéis, o número de anéis, o colchete ondulado Zero, colchetes ondulados é um campo de substituição e substitui tudo o que temos Agora, quando usamos um zero, substituímos o primeiro. Clique com o botão direito em Executar, pronto. Havia três anéis. Isso é muito mais fácil do que usar o SDR aqui. Muito mais rápido. Agora, se você tiver apenas um item que está substituindo, você pode realmente usar esse clique com o botão direito do mouse e executar. Você não precisa indicar que está usando o zero. Agora vamos tentar outra coisa. Vou duplicar isso. Em vez de usar o formato, posso, diretamente no campo de substituição, digitar o número de anéis. Mas é muito importante que você clique na guia aqui. Por quê? Porque ele adiciona um pequeno F no início, o que significa que o campo de substituição realmente será útil aqui. Se não tivermos o F, isso não funciona. Essa é a saída que obtemos. Você precisa realmente ter um F no início da impressão e depois imprimi-lo. E isso é, aliás, algo relativamente novo. Você me verá usando-o mais tarde no decorrer do curso, mas eu também posso usar o formato. Portanto, é muito importante conhecer essas duas formas. Talvez você veja outras pessoas usarem o formato. Em algumas situações, o formato é melhor do que o, no início da string, mas isso depende da situação. Você pode usar o F, você pode usar o formato, usar o que quiser. Agora vamos dar uma olhada no seguinte. Vou adicionar uma impressão aqui, apenas uma linha vazia, apenas uma linha vazia, e vou imprimir foram feitos anéis de reposição no campo zero, um para os elfos, sete para o campo de substituição dois e no campo de substituição três para os homens Em seguida, aperte enter novamente, formate, e dentro eu terei 19, porque no total foram feitos 19, o número de anéis, depois anões, depois nove Agora, o que acontecerá é que temos um índice no formato, 19 está em zero, número de anéis está em um, anões está em 2,9, está em Quando eu escrevo, clique e corro, você verá que tudo foi substituído corretamente. Agora podemos adicionar um espaço aqui. Observe que, embora adicionemos uma entrada, a nova linha não é criada aqui. Como criamos uma nova linha? Claro que você lembra que é a parte de trás, é o personagem especial, mas não queremos fazer isso agora. Como você pode ver, isso funciona. Agora, por que usamos números? Poderíamos ter tido o seguinte. E observe que se um deles usa números, todo mundo precisa usar números, ou nenhum deles precisa usar números. Então, quando eu escrevo o clique e corro, você verá que eu obtenho a mesma saída. Então, por que usar os números em primeiro lugar? Bem, digamos que você queira que as palavras que estão na posição três sejam usadas no início. Então você pode digitar, por exemplo, dois e então você quer ter 12.3 Agora, quando você escreve Clique e nós corremos, você vê que anéis anões foram feitos, não faz sentido, mas estou tentando destacar para você como Por exemplo, digamos que você queria nove. Você queria esse item que está na terceira ou na quarta posição, mas no índice número três. Então, quando eu escrevo Click e corro, lá vamos nós. Foram feitos nove anéis. Então esse é o poder de usar campos de substituição. Como eu disse, você pode usar o formato ou usar o nome da variável diretamente no campo de substituição. E o F no início escolhe os métodos com sabedoria. Depende da situação. E quando você terminar de entender como tudo isso funciona, é hora de Aber, um desafio para você imprimir os dias de um mês Quero que você use campos de substituição para imprimir o número de dias correspondentes ao mês. Use apenas três campos de substituição, e o que quero dizer com isso? Este é um exemplo de como isso deve ser. Você deve ter 31 de janeiro, 28 de fevereiro, 31 de março , etc., etc. E então você também precisa, ou se quiser, pode imprimi-lo dessa maneira. Depende da situação. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui vou adicionar uma impressão. Eu vou fazer o seguinte. Vou imprimir o campo substituto de janeiro, o campo substituto de fevereiro, março, março, abril, maio, junho, julho, o mês de Júlio César, agosto e o mês de agosto, talvez eu não saiba, setembro e outubro, novembro, campo substituto de janeiro, o campo substituto de fevereiro, março, março, abril, maio, junho, julho, o mês de Júlio César, agosto e o mês de agosto, talvez eu não saiba, setembro e outubro, novembro, dezembro. E vou separá-los para que a linha não seja muito longa. , bum, bum. Lá vamos nós. Agora, no final, quero adicionar um formato. Então, teremos 31, 30. E, claro, 29, 29 é para fevereiro, correto? E aqui temos um erro. E o que isso nos diz se há poucos argumentos para a string de formato. Tudo bem. Então, ele quer que adicionemos o campo de substituição. Então, primeiro de tudo, teremos dois em fevereiro, porque é o único mês que tem 29 dias. Então temos janeiro com 31. Acho que é 31 de janeiro. Sim, acho que é 31. Então isso vai ser zero. Em que outro mês temos um 31? Espere, deixe-me verificar. Temos janeiro , março e maio. Vamos fazer isso. Janeiro, maio e depois julho, julho, agosto, outubro e dezembro, julho, agosto, outubro e dezembro. E o resto terá. Uma vez, lá vamos nós. Se eu escrever, clicar e correr, obtenho exatamente a saída que eu queria. Muito bom. Espero que você tenha conseguido fazer esse desafio sozinho. Agora deixe-me copiar isso porque eu quero te mostrar algo muito legal Agora, você poderia ter dado uma volta e simplesmente adicionado um verso para criar uma nova linha, e isso teria sido correto. Você teria acertado ao fazer isso, adicionando um retorno ao set a cada mês em uma linha diferente. Mas há um pequeno truque aqui que você pode usar usar três aspas ao redor dele Portanto, as três aspas produzirão exatamente a mesma coisa que você está tentando escrever O que quero dizer com isso, se eu escrever, clicar e correr, veja como minha saída funciona. Olha, parece exatamente do jeito que eu tinha, eu disse isso intencionalmente Então, aqui, veja. Janeiro, fevereiro, março, abril, janeiro, fevereiro, março, abril. E depois temos maio, junho e julho. E você verá que até foi empurrado. Então, vou remover essas aspas simples. E vamos também adicionar uma impressão aqui. Usar três aspas produzirá uma resposta exatamente igual à que você está procurando Deixe-me mover janeiro e estes para a mesma linha. Ok, vamos lá. Agora ainda temos fevereiro. Na verdade, vamos apenas adicionar uma resposta aqui em cada guia de turno mensal para voltar atrás, vamos clicar com o botão direito do mouse e executar, e ver como isso fica Ok, muito bom. Voltando, clique com o botão direito e boom. Lá vamos nós. Nós obtemos as mesmas saídas. Senhoras e senhores, muito obrigado por assistir. Acho que esse é o fim da seção. Talvez mais tarde eu adicione mais vídeos à seção. Quem sabe, veremos, mas espero que tenham gostado. Espero que você tenha dedicado seu tempo para entender tudo o que fizemos. Algumas dessas coisas não serão muito úteis no futuro. Não usaremos tudo o que aprendemos aqui, mas esta é uma seção crucial na qual você construirá sua base de programação para , posteriormente, abordar coisas cada vez mais difíceis. Na próxima seção, daremos nossos primeiros passos. Vamos entender os blocos de código. Vamos entender as declarações. E esses serão os blocos de construção essenciais para seu caminho e sua jornada para programar em Python e se tornar um desenvolvedor de Python Muito obrigado por assistir. Eu odeio dizer isso de novo, mas preciso. Eu descaradamente solicito uma avaliação se você estiver gostando Caso contrário, continue assistindo ao curso até se divertir e depois deixe meu comentário. Muito obrigado por assistir. Espero que você goste. Me bata. Você me manda uma mensagem. Diga-me, Michael, do que Upman gosta. Estou gostando das pontuações. Estou gostando das coisas que estou aprendendo. Isso tornaria meu dia. Realmente funcionaria. Obrigado por assistir. Nos vemos no próximo vídeo. Tchau tchau por enquanto. 21. Seção 3: Tomando nossos primeiros passos | 1. Introdução aos blocos: Bem-vindo de volta aos meus programadores de Python favoritos, a um novo vídeo e a uma seção totalmente E nesta seção, daremos nossos primeiros passos, embora já tenhamos começado, mas estávamos apenas começando. Estávamos apenas entendendo a filosofia por trás da programação e como as coisas funcionam em Python nos bastidores Mas agora estamos realmente dando nossos primeiros passos e entendendo a programação em Python E estamos começando com blocos de código. Antes de tudo, precisamos entender o que são blocos de códigos. Na verdade, como muitas linguagens de programação, Python usa blocos de código para programar sua A filosofia de design do Python enfatiza a legibilidade do código. Isso é algo que eu disse na seção número um, onde eu estava apresentando o Python O Python usa recuos em vez de colchetes Se você estiver familiarizado com qualquer outra linguagem de programação, talvez reconheça os colchetes que são usados para definir onde um bloco de E você pode ter reduzido esses colchetes em muitas linguagens diferentes, como Java ou C Sharp, Mas em Python, não exigimos que blocos de código sejam determinados ou delimitados por colchetes Podemos simplesmente usar indentações. E vou te mostrar o que quero dizer com isso. Bem, o que eu quero dizer com isso? Digamos que estamos trabalhando com um bloco de código. Se você tem experiência com linguagens diferentes, os blocos de código começam e terminam com esses colchetes. Por exemplo, temos quatro voltas. Este é um loop de quatro extraídos de um C Sharp ou Java. E você pode ver que começamos com esse bloco de código e depois terminamos com esses colchetes. Ou começamos com colchetes ondulados, temos o bloco de código dentro e terminamos com Essas são as outras linguagens, Python, temos algo diferente, usamos esses dois recuos Como você pode ver, esse é o loop quatro, é claro. Na próxima seção, você verá que quatro loops são escritos de forma diferente em Python Mas isso é só um exemplo. Então, esse é o código que queremos executar, e esses são os recuos que usamos em Python para limitar nossos blocos de código sem Vamos começar a dar alguns exemplos para entender adequadamente do que estamos falando. Aqui. Vou abrir um novo arquivo e criar um novo projeto. Vou chamar esse projeto. Obviamente, selecione onde você deseja que esse projeto seja criado. Aqui você pode chamar isso de Getting Started. Você pode chamar isso de blocos e declarações. Vou chamá-lo, na verdade, vamos torná-lo mais específico. Vou chamá-lo de blocos de código em Python e, em seguida, finalizaremos essa janela Tudo bem, parece que estamos prontos para ir. Certifique-se de selecionar o projeto aqui. Vá para o arquivo novo e eu vou criar um novo arquivo Python que vou chamar de declarações de bloco, sublinhado e sublinhado Então, a primeira coisa que vamos fazer aqui é criar um loop de quatro. Agora, não se preocupe, não espero que você entenda tudo sobre quatro loops, mas essa será uma ferramenta muito útil para entendermos adequadamente onde o bloco de código começa e onde termina Basta seguir meu exemplo e não se preocupe no próximo vídeo. Na próxima seção, quero dizer que expandiremos quatro loops e loops em geral Em primeiro lugar, vou digitar quatro em execução, o intervalo será 1216 e, em seguida, pressionar Enter Observe que quando eu pressiono Enter, eu não volto para o início da linha. Olha aonde eu vou. Estou abanado, estou recuado aqui Vou imprimir e adicionar um espaço extra para o P oito. Observe o que eu tenho aqui. Eu tenho algo chamado indentação. Esse é o recuo que eu falei quando falávamos sobre a estrutura de um bloco de código no Se eu escrevo click e executo, essa é a saída que eu obtenho. Eu vou falar sobre isso aqui à direita. Você vê que eu vou de um a 15. Basicamente, o que essa linha de código aqui significa. Isso significa que, para mim, em uma faixa de 116, eu quero imprimir, começo com I igual a um, eu imprimo Depois volto, faço com que seja igual a dois, e depois imprimo, volto, faço com que seja igual a três, imprimi 456, etc., e depois imprimo, volto, faço com que seja igual a três, imprimi 456, etc., até chegarmos a 15. E você aprenderá mais sobre intervalos na próxima seção. Mas, por enquanto, tudo o que você precisa saber é que subiram dois, mas sem incluir, subimos para 16. Mas. Não está incluído. Agora vamos continuar e ver se fazemos o seguinte. Se eu pressionar outro enter desta linha de impressão, você verá que ainda estou recuado Então eu posso digitar em formato impresso e aqui eu posso adicionar apenas um traço e multiplicá-lo por 20 O que você espera que aconteça? Por favor, demore alguns segundos. Pense na saída antes de realmente executá-la. Boom, lá vamos nós. Assim como fizemos com os olhos, a cada iteração, estamos imprimindo esses 20 traços que vimos antes Já vimos como isso funciona e como começar. É por isso que foi muito importante construirmos a base na primeira ou na segunda seção para sermos mais específicos, seja, nossa atualização. Agora, se eu escrever o seguinte, eu imprimo, ei, eu recuei Qual você acha que será o resultado? Observe que essa linha não está mais recuada. Não faz parte desse bloco de código. Como você acha que será a saída? Se eu escrever, clicar e correr, veja isso. Ei, estou recuado e só é impresso uma vez. Por que isso? Mãe, hmm. Por que isso? Bem, porque não faz parte do bloco de código. Não está mais dentro do laço dianteiro, então está do lado de fora. Portanto, ela se comporta como uma linha de código normal, não como recuada ou como parte do bloco de código que está nesse loop anterior Mas, por exemplo, se eu pressionar Tab, pressionar Tab quando você clicar aqui e depois pressionar Tab, ele será recuado Então, agora, se eu escrever, clicar e correr, pense na saída. Sim, exatamente. Lá vamos nós. Como você pode ver, adicionamos um recuo e o imprimimos a cada iteração de nossos Espero que você tenha entendido como um bloco de código opera em Python Agora é hora de um pequeno desafio. E seu desafio será explorar o código, usar o código que escrevi para você brincar com ele e se aventurar em sua exploração. Adicione recuos, remova recuos, tente adicionar mais algumas linhas de impressão, veja o que acontece, brinque com os recuos, veja como isso afeta seu código, veja como isso afeta seu código, o vídeo agora mesmo e faça o desafio Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Vamos tentar algumas coisas aqui e tentar decifrar nosso código. Por exemplo, se eu pressionar Shift, toque na segunda linha. Olha isso. Se eu tentar escrever, clicar e executar, isso me diz que há um recuo inesperado Se eu clicar no link e ele me levar até a linha, está na linha número quatro, MI em. Há um recuo inesperado. Como o Python usa recuo para delimitar os blocos de código, não podemos simplesmente adicionar recuos para adicioná-los não podemos simplesmente adicionar recuos para adicioná-los para delimitar os blocos de código, não podemos simplesmente adicionar recuos para adicioná-los. Eles precisam ser precisos. Eles precisam ser concretos indicar onde os blocos de código começam e terminam. O problema com isso é que eu já tinha um bloco de código aqui, impresso, depois removi o recuo, então o bloco de código acabou Mas então eu tive outro recuo, então isso não está mais correto Quando paramos de inventar, é aí que o bloco de código termina Então, por exemplo, eu posso fazer isso, mas não posso fazer isso porque parei o bloco de código. Eu terminei o bloco de código para esse loop de quatro quando parei o recuo Então, eu preciso ter um recuo. Agora, o que aconteceria nesse caso, novamente, se eu clicar com o botão direito em um ferro? Você já viu o erro. Você já viu a linha vermelha ondulada. Não podemos fazer indentações duplas. Você verá mais tarde que, de fato, podemos fazer recuos duplos quando estamos trabalhando com instruções if aninhadas ou loops Mas, por enquanto, apenas por causa deste exemplo aqui, como você pode ver, não podemos adicionar recuos duplos se eu remover, ei, estou E se eu imprimir olá, qual você acha que será a saída? E vou adicionar também uma impressão vazia. Como você pode ver, o hello é impresso a cada iteração. Senhoras e senhores, muito obrigado por assistir ao próximo vídeo Vamos analisar as declarações, que são um lugar muito interessante para começar. Isso realmente começará a formar suas habilidades em programação. Muito obrigado por assistir e nos vemos no próximo vídeo. Tchau tchau por enquanto. 22. 2. Declarações if: Bem-vindos de volta, meus programadores de Python favoritos. Neste vídeo, veremos a declaração if. Se as declarações forem uma continuação ou um uso mais prático dos blocos de declaração Então, vamos começar. Primeiro, vamos examinar a estrutura de uma declaração if. Temos alguma condição, então não temos certeza de qual é essa condição no momento, mas teremos algum tipo de condição se algum tipo de variável for maior que um determinado número ou qualquer condição que exista. Então, se alguma condição é verdadeira, essa condição tem que ser verdadeira. Em seguida, criaremos um bloco de instruções que será executado. Novamente, somente se essa condição for verdadeira, executaremos esse bloco de código. Mas também temos algo chamado L, em que, se essa condição não for verdadeira ou não for satisfeita, esse bloco de código será executado. E você notará que sempre temos as indentações aqui Novamente, você verá como serão essas ou quais serão essas condições. Mas, por enquanto, entenda que, se tivermos alguma condição aqui que seja verdadeira, executaremos o código que está dentro. E, novamente, estamos usando um bloco de código, ou blocos de código delimitados por recuos Vamos dar uma olhada em um exemplo para entender corretamente. E então eu vou te levar de volta e mostrar a estrutura novamente em nosso código aqui. Vamos criar um novo arquivo Python que chamaremos se as declarações sublinhadas aqui começarmos a receber Vamos dizer que a idade é igual a uma entrada inteira, porque queremos que seja um número inteiro E nós vamos dizer, ei, aí Sr. Potter, quantos anos você tem Então, essa será nossa contribuição. E também indicaremos que isso é uma entrada usando esse pequeno indicador aqui, certo? Para que o usuário saiba exatamente onde deve adicionar sua entrada. Idade é igual a qualquer coisa. E então vamos simplesmente imprimir a idade. Isso é apenas para fins de depuração, apenas para garantir que tudo Clique com o botão direito e execute. Ei, Sr. Potter, quantos anos você tem? Digamos 18. Pressione Enter. Estrondo. A resposta é 18. Ótimo. Mas agora vamos criar uma instrução if ou uma linha de código que só será executada sob uma condição específica. Vou remover a impressão H, não precisamos mais dela. Isso foi apenas para fins de depuração. E quando digo depuração, quero dizer que só para garantir que nosso programa funcione corretamente, direi que se a idade for maior ou igual a 17, vou imprimir, bem-vindo à festa, bem-vindo à Eu deveria escrever. Bem, não cometa 15 erros em uma palavra. Agora vamos examinar novamente a estrutura. Se houver alguma condição, então temos o bloco de código. Observe os recuos. Meu Deus, posso acessar meu código se a idade for maior ou igual a 17? Veja esse bloco de código. Imprimimos, bem-vindo à festa, é maior ou igual a. É por isso que tivemos que converter nossa entrada em um número inteiro, porque se não tivéssemos, não poderíamos comparar uma string com o Vou mostrar o que quero dizer com isso, mas por enquanto, vamos clicar com o botão direito do mouse e executar. Ei, Sr. Potter, quantos anos você tem? 21. Pressione Enter. Bem-vindo à festa. Harry Só porque temos 21 como entrada, é maior ou igual a 17. Nós podemos ir para a festa. Se eu escrever, clique novamente, eu corro novamente. Por exemplo, eu digito e 12, pressiono Enter. Boom, lá vamos nós. Não recebemos nada. Essa é uma declaração if condicional, somente sob uma determinada condição. O que aqui é se a idade for maior ou igual a 17. Isso funciona? Deixe-me mostrar o que quero dizer com maior ou igual a. Só podemos ter mais do que. Se eu escrevo, clico, corro e digito 21, novamente, isso funciona perfeitamente bem. Mas se eu tentar executar isso e digitar 17, nota é 17 e eu pressionar Enter, não recebo nada. Por que isso? Porque só executamos se for maior que 17. 17 não é maior que 17, é igual a 17. E nossa condição aqui, se a idade for maior que 17, precisamos realmente adicionar esse sinal de igual. E agora, se digitarmos 17 , pronto, somos bem-vindos à festa. Ótimo. Mas o que faríamos? Ou o que devemos adicionar aqui, caso obtenhamos uma saída caso não sejamos maiores ou iguais a 17. Bem, é aí que entra a declaração L. Já exploramos a declaração L. Nós conversamos sobre isso. É simplesmente adicionado aqui, abaixo do L. Observe que não está recuado porque não faz parte do bloco de código Esse é o bloco de código. Esse é o L que faz parte de toda a declaração if. Aqui, digitamos em formato impresso, desculpe Potter, mas vocês dois ou, na verdade, vocês não têm idade suficiente para a festa, como você pode ver, porque temos uma pequena aspa simples aqui Precisamos adicionar uma barra invertida para poder imprimi-la corretamente. Pronto, tudo parece bom. Adicionamos a linha extra para o P oito e depois clicamos com o botão direito do mouse e executamos. Agora, quantos anos você tem se eu digitar 12 e clicar, mas você não tem idade suficiente para o. Se eu executar isso novamente e digitar 25, pressione Enter. Bem-vindo à festa Harry. Agora, novamente, uma última coisa antes de continuarmos aqui. Precisamos saber se podemos realmente adicionar várias linhas aqui. Podemos dizer aqui que também tenho um desejo. Ok, então isso é um bloco de código. Podemos ter quantas linhas precisarmos em cada um desses blocos de código. Se eu escrever Click e correr 18, boom. Bem-vindo à festa aqui. Também queira, e você pode adicionar quantas precisar. Então, espero que isso esteja claro. Esta é uma introdução às declarações if. Esses são cruciais. Cada idioma que você encontrará terá declarações If. Portanto, reserve um tempo e certifique-se entender o que está acontecendo. Se você quiser brincar, brinque, mude a condição, veja o que acontece e depois passe para o desafio. Seu desafio será criar sua própria declaração F. Crie uma declaração F que verifique se a idade é 17. Faça isso logo abaixo da nossa condição atual. Imprima uma mensagem e crie uma declaração L. Imprima outra mensagem nesse caso. E o que eu quero que você faça, eu quero que você receba a mesma mensagem da primeira declaração condicional E note que eu não disse que quero que você escreva a mesma mensagem. Quero que recebamos a mesma mensagem. O que quero dizer com isso é que aqui, vou apenas começar com o desafio. Então, vou imprimir, por exemplo, aqui, alguns traços multiplicados por 20 Então, aqui, vou querer declarações. Declaração com o L, etc. O que há de errado aqui? Esqueci a declaração All right, a declaração if com os Ls e etc E eu quero obter a mesma saída quando eu executo aqui. Ok, digamos que digitamos 18, pressione Enter. Eu quero que, embaixo desses traços saia o mesmo. Bem-vindo à festa. Harry aqui, com a condição, deveria ter menos de 17 anos. Você precisa saber como alterar seu código quando tem uma condição diferente, mas ainda queremos o mesmo resultado. Esse é o objetivo. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, eu vou remover isso. Vou dizer que se a idade for menor que 17 anos, imprimirei a seguinte linha caso contrário, imprimirei essas duas linhas. Agora, se eu escrever o clique e correr, quantos anos você tem? 18, boom, obtemos o mesmo resultado. Se eu escrever o clique e correr e digitar 12, boom, obtemos o mesmo resultado. Como isso está funcionando? Aqui verificamos se a idade é maior que 17 anos ou maior ou igual a tudo, 18 anos ou mais é bem-vinda à festa Se eles não tiverem 18 anos ou mais, não são bem-vindos à festa aqui Fazemos a mesma coisa, mas desta vez a condição muda. Então, agora verificamos se a idade é menor que 17 anos, então dizemos, desculpe, Sr. Potter, você não está autorizado Se for menos do que a mesma ideia é verdadeira, mas está escrita de uma maneira diferente, e isso é muito importante que algo muito importante que você precise entender. Queremos ou podemos ter a mesma saída, mas um código diferente. E você verá que, embora obtenhamos a mesma saída com um código diferente, há códigos que são melhores do que os códigos abaixo. E vamos explorar isso no próximo vídeo. Mas, por enquanto, espero que você tenha entendido que isso não é muito complicado. Se você não tem certeza de como isso está funcionando, pense nisso logicamente, revise e entenda corretamente Não tenha pressa. Você está começando a desenvolver suas habilidades básicas em programação, então tudo bem se você não estiver entendendo tudo 100% corretamente, basta tomar seu tempo, fazer os exemplos, refazê-los, continuar com a seção e nos vemos no próximo vídeo E se você está curtindo o vídeo, deixe um comentário em algum lugar. Basta me ligar, você me manda uma mensagem como, ei Michael, estou adorando isso. Assim como o Mcdonald's. Nos vemos no próximo vídeo, onde veremos as declarações da boca nas declarações de mim. 23. 3. Declarações de elif: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo Neste, veremos as declarações elípticas. Vamos dar uma olhada em uma estrutura elíptica. Digamos que temos alguma condição. Condição número um, se a condição for verdadeira, executaremos o código. Já vimos isso no vídeo anterior. Deve ser bem óbvio. Mas agora, e se não quisermos simplesmente criar uma declaração se não houver mais nada verdadeiro? E se tivermos alguma outra condição como a condição número dois, L? Se houver outra condição número dois , executaremos a condição número dois. Se a condição número um não for verdadeira e esse código for executado, começaremos com a primeira condição como vimos antes Se a condição for verdadeira, executaremos esse código. Se a condição um for verdadeira, então alguma outra condição que seja a número dois. Se essa for verdadeira e a condição 1 não for verdadeira, executaremos o código a seguir. Vamos voltar ao nosso código e ver como isso fica aqui. Vou adicionar aqui, Alif, temos g igual a 150 Vou imprimir, oh, e a propósito, igual precisa de dois senos iguais Porque um seno igual significa que estamos atribuindo um valor a uma variável Dois senos iguais significam que estamos comparando dois valores. A idade labial é igual a 150, vamos dizer, e vou adicionar aspas duplas. Dumbledor, você está velho demais para essa festa. É assim que você escreve Dumbledor. Eu acho que sim. Agora, vou copiar isso e adicioná-lo aqui também. Note agora que o que precisamos é que essa condição não seja verdadeira. Para executar essa linha, é claro, precisamos que essa não seja verdadeira e precisamos que essa seja verdadeira para executar essa linha de código. Se eu clicar com o botão direito do mouse e correr, digitar 150 e pressionar Enter, você verá que temos uma discrepância Agora, temos, desculpe, porta dupla. Você está velho demais para essa festa. Mas nós só a obtemos nas segundas declarações condicionais, o que significa que a obtemos nas segundas declarações F aqui Enquanto estamos aqui, não recebemos nada. Por que isso? Bem, deixe-me contar algo sobre como o LF opera e algo que você precisa sempre observar ao trabalhar com várias instruções LF. Aqui no topo, vamos ver a lógica. A lógica diz que se a idade for maior ou igual a 17, executaremos esse bloco de código. Agora, qual é a idade? A idade é 150, correto? Então, 150, é maior que 17? Sim, é. A é 150, é maior ou igual a 17. Toda essa condição é verdadeira, o que significa que imprimimos bem-vindo à festa, se quisermos. Além disso, quando uma condição é verdadeira, é isso mesmo, simplesmente pulamos. Não continuamos passando pela boca, não continuamos passando pelos Ls. E isso deve ser óbvio pela forma como estamos formulando a condição, se a condição mais distante não for Vamos voltar para a estrutura. Se a condição número um não for verdadeira e a condição número dois for verdadeira, executaremos aqui. Funciona. Por quê? Porque primeiro verificamos se a idade é menor que 17 anos. Se for menor que 17, imprimimos, desculpe, você pode usar 150. É menor que 17? Não, não é. Portanto, essa condição não é verdadeira. Vamos para o Alif, verificamos, a idade é maior que 150? Sim, é. Então, imprimimos, desculpe, Bumble Door, você é muito velho. Se eu clicar com o botão direito do mouse e correr, e eu, por exemplo, tentar 180, pressionar Enter, isso me dirá que sou bem-vindo à festa em ambas as condições. Se agora eu digitar 50, pressione Enter, isso nos diz que somos bem-vindos à festa. E se eu digitar 12, pressione enter, não somos bem-vindos em ambas as partes porque somos menores de idade. Portanto, isso é apenas garantir que tudo esteja funcionando corretamente. Então, por exemplo, na marca 12, eu verifico se o H é maior que 17. Não, não é. A idade é igual a 150? Não, não é. Então eu vou ao LS e imprimo, desculpe, você não tem idade suficiente aqui. 12. É menor que 17? Sim, é. Então imprimimos, desculpe, Sr. Potter, você não tem idade suficiente e depois nem verificamos mais nada. É isso mesmo. Uma condição é verdadeira. Passamos por isso, bum, saímos. Isso ficará mais óbvio no próximo vídeo. Quando trabalharmos com depuração e inteligência, você verá como cada linha de Mas agora é hora de um pequeno desafio. Seu desafio é criar sua própria declaração Lip dentro de nossas duas declarações. Quero que você verifique se a idade é maior que 600 usando um Lip dentro das afirmações que já temos. Imprima uma mensagem nesse caso e faça isso para ambas as nossas declarações. Quero que você verifique se a idade é superior 600 vídeos positivos agora e aceite o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, vou adicionar uma idade labial maior que 600 e imprimir, você deve ser Nicholas Flamel Acho que é assim que você escreve Flamel. Espere, deixe-me pesquisar no Google. Espero que você saiba e, a propósito, estou usando essas referências e espero que você tenha uma ideia de quem é Harry Potter Se você não fizer isso, tudo bem. Não se preocupe. Nicolau Flamel Não. É assim que você escreve. Acabei de pesquisar no Google. Oh meu Deus. Posso, por favor, copiar isso? Sim É assim que você escreve Flamel. Tudo bem Vou copiar essas duas linhas e colocá-las aqui. Mude a guia, clique com o botão direito, execute. Se eu digitar 800, pressione Enter, o primeiro não funciona, o segundo funciona novamente. Por que isso? Eu quero que você reserve um tempo para entender isso sozinho, e isso funciona apenas no segundo, porque A é igual a 800. Aqui, verificamos se a idade é maior ou igual a 17.800 . É maior ou igual a 17? Sim, é. Portanto, essa condição é verdadeira. Imprimimos, damos as boas-vindas à festa e pulamos a declaração if. Vamos até a impressão aqui verificamos se 800 é menor que 17? Não, não é. A idade é igual a 150? Não, não é. A idade é maior que 600? Sim, é. O que significa que imprimimos, você deve ser Nicholas Flamel e nós saltamos Não continuamos até a declaração L. Senhoras e senhores, espero que gostem. No próximo vídeo, vamos nos aprofundar e ver como podemos depurar uma inteligência que nos ajudará muito em nossa jornada Você estará depurando o tempo todo, e não importa quanto tempo você fique com o Python, a depuração fará parte de sua jornada e o ajudará tremendamente em depuração fará parte de sua jornada e o ajudará tremendamente todo o seu caminho ou jornada de aprendizado. Então, eu vou te ver no próximo vídeo. Tchau, tchau por enquanto. 24. 4. Depuração no IntelliJ: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste, veremos a depuração no Intelligy. Essa será uma lição muito importante, uma ferramenta muito importante em seu arsenal que permitirá que você continue aprendendo uma maneira muito melhor e passando por iterações de seu código para entender como ele funciona corretamente Então, vamos começar. Primeiro de tudo, você precisa adicionar algo chamado ponto de ruptura. Esse ponto de ruptura é onde seu programa irá parar executado e parar nesse ponto exato Então, você pode ver aqui, entre o código e o número de linhas que você tem, há um espaço vazio. Por exemplo, posso clicar nesse espaço vazio para adicionar esse ponto vermelho. Isso é chamado de ponto de interrupção. Se eu passar o mouse sobre ele, ele diz alguma coisa? Não, não. Mas confie em mim, esse é um ponto de interrupção em que ele suspende o tópico Então, isso impede a execução do código. Deixe-me mostrar o que quero dizer. Eu adicionei o ponto de interrupção aqui, correto? Na primeira instrução if, clico com o botão direito do mouse e depuro a instrução if E como você pode ver, temos algo diferente acontecendo agora. Me perguntam, quantos anos você tem? Digamos que eu aperte 150 e aperte Enter. E olha só, eu não estou executando o código ainda. Não há nada acontecendo. Ainda não há saída. O depurador. Deixe-me encerrar isso e vamos trabalhar na depuração Você verá uma longa linha azul. Essa longa linha azul indica em qual linha estamos atualmente em nosso processo de depuração Atualmente, estamos nessa linha que estamos tentando avaliar. Você também pode ver todas as variáveis que temos. Por exemplo, agora só temos uma variável que é um número inteiro, que é idade, que é 150 Você também pode vê-lo sendo exibido aqui no código real em cinza. Você pode até mesmo passar o mouse sobre ele. Clique nele, Definir valor. Você pode alterar o valor se quiser, se quiser brincar com os valores e alterá-los e ver como o programa responderia nessa situação. Mas, por enquanto, estamos avaliando se a idade é maior ou igual a 17 Quando eu entro, você pode ver que eu tenho muitos botões aqui, mas o mais importante vai ser o passo para dentro, que é sete. Se eu entrar em Boo, você pode ver porque essa condição acabou sendo verdadeira, nós a avaliamos, acabou sendo verdadeira Entramos nesta linha de código que é bem-vinda à festa em que entramos novamente, Harry, aqui quero. E agora veja o que vai acontecer quando passarmos por isso novamente. Como você pode ver, pulamos de toda a declaração if. Então olhamos por cima do lábio, olhamos para a idade, olhamos para o Ls e depois entramos diretamente na impressão aqui Vou entrar novamente, dar uma olhada no console também. Veja o console agora. Somos bem-vindos à festa, Harry aqui, tenho um desejo. Se eu entrar novamente, agora que imprimimos, executamos essa linha de código e imprimimos nossos traços. Vamos continuar agora. Estamos verificando se h é menor que 17. Se eu entrar e notar que H é 150, 150 é maior que 17. Não é menos do que 17. Então, o que acontece? Simplesmente pulamos a impressão. Não executamos esse bloco de código. Agora estamos verificando se o H é igual a 150. Sim, é. Então, entramos nessa linha de código, desculpe, porta dupla. Você está velho demais para essa festa. Agora, o que acontecerá quando entrarmos novamente, quero que me diga antes de executarmos ou entrarmos , como você pode ver, terminamos e imprimimos, desculpe, porta dupla. Você está velho demais para essa festa. E o que você deveria saber é que não vamos passar por esse Lyp, não vamos passar por isso, vamos simplesmente pular Deixe-me mostrar outro exemplo. Por exemplo, aqui, digamos que eu digite 12 aqui, pressione Enter e entramos em ação. Ok, paramos aqui mesmo na execução. O que acontecerá agora com a linha azul? Quero que me diga que temos 12. 12 é maior que 17? Não, não é. Então, vamos para o próximo telefone. A idade ou 12 anos é igual a 150? Agora não é. Então entramos e vamos para a próxima elif. Verificamos se a idade é maior que 12 anos? 12 é maior que 600? Agora não é. Então, entramos, mas agora nos concentramos no que vai acontecer. O que costumávamos fazer era verificar se era maior do que entramos no elevador e entramos no próximo Mas quando estamos trabalhando com os Ls, não avaliamos nada nos Ls. Veja para onde a linha vai, mas vamos diretamente para a impressão. Não há nada para avaliar se a primeira condição era falsa e o segundo elifo era falso e o terceiro elifo era falso. Podemos adicionar quantos glifos quisermos. Se tudo isso fosse falso, não verificamos nada no Ls. Simplesmente entramos no Ls e executamos o código lá. Agora, como você pode ver, não tínhamos nada. Entramos, executamos uma linha sanguínea de código e funciona. Entramos, novamente, a idade é menor que 17 anos? Sim, é, e temos a mesma saída. Tudo bem, bem, bom. Então, espero que você tenha entendido o que está acontecendo. Agora é hora de um pequeno desafio. E eu quero que você teste o depurador em todo o seu código e tenha certeza de que entendeu como os pontos de interrupção e pontos de interrupção Por exemplo, agora eu quero que você tente ver o que acontece quando nossa idade é maior que 600. E tente antes de usar o depurador, sempre tente imaginar como o código será executado em sua cabeça e depois analise-o, poste o vídeo agora mesmo e faça Ok, como você conseguiu fazer isso? Agora, por exemplo, se eu remover o ponto de interrupção que adicionei aqui nesta impressão, se eu escrever, clique em um bug de identificação, por exemplo, eu digito 800, pressione Enter no console Você verá que eu já li toda essa declaração if e só parei quando chego a esta impressão. Isso é o que o ponto de interrupção faz. Ele só interrompe o código nessa linha de código, na linha que indicamos para que o código pare não para em outro lugar. Deixe-me colocá-lo de volta no topo. E depure isso novamente. Podemos ver o que acontece. Então, vamos digitar 800 e pressionar Enter. 800 é maior que 17? Sim, é. Então, imprimimos, bem-vindo à festa. Boom, imprimimos, aqui temos uma varinha, e agora imprimimos isso. Vamos verificar 600. É menor que 17? Não, não é. Vamos para a próxima fase. G é igual a 100? Não, não é. Vamos para o próximo lábio. H é maior que 600? Sim, é. Então, imprimimos, você deve ser Nicholas Flamel, e quando terminamos, simplesmente pulamos e não precisamos ir para outra coisa Então, senhoras e senhores, esta é uma lição muito importante de entender O debucker será uma excelente ferramenta em seu arsenal para garantir que você veja corretamente todas as variáveis e veja como seu código está funcionando veja como seu código está Você usará um depurador, não importa o que faça na vida quando se trata Então, por favor, dedique um tempo para entender claramente o que está acontecendo. E nos vemos no próximo vídeo, onde nos aprofundaremos nas declarações condicionais Então, tchau, por enquanto. 25. 5. Mais profundamente em declarações condicionais: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E nesta, vamos nos aprofundar nas declarações condicionais Para entender melhor as declarações condicionais, vamos criar um jogo E será um jogo de adivinhação em que tentaremos adivinhar a idade de Nicholas Flamels Vamos continuar e começar. Vamos criar um novo arquivo Python aqui que vou chamar de Nicholas Sublinha H. Boom. Primeiro de tudo, vamos criar o H real será igual a 665, depois vamos imprimir qual é a idade de La Mel, Wesley, e depois dar a ele o indicador antigo Então, vamos adivinhar qual será igual ou, na verdade, não precisamos dessa. Já que vamos receber a entrada em uma segunda ou outra linha aqui. Teremos a entrada que terá a inclinação. É claro que isso precisa ser um número inteiro porque vamos compará-lo com alguns números Vamos criar as declarações aqui. Se a estimativa for menor que o H real, imprimiremos executaremos a estimativa acima de elif , elif A estimativa é maior do que a idade real que será impressa. Por favor, execute guess lower. Lá vamos nós. Como isso vai funcionar? Bem, deveria ser óbvio que se a estimativa for menor que a idade real, que é 600, vamos mandar correr para adivinhar mais, por favor. Se for maior do que a idade real, diremos a eles que adivinhem menos. Se eu clicar com o botão direito do mouse e executar, este era o depurador aqui, podemos fechá-lo O que é f 12 anos? Por favor, execute Guess Higher. Clique e execute what is flames age 1.000 Por favor, execute Guess lower Tudo bem, parece que nosso código funciona corretamente. O único problema é que se eu digitar 650 e pressionar Enter, ainda me diz para adivinhar mais alto. Interessante Qual é o problema aqui? Eu vou esperar. Eu peço desculpas 665. Pressione Enter. Eu não entendo nada porque na verdade temos a idade certa. 665 não é menor que a idade real e não é maior que a idade real, é igual à idade real E não recebemos nenhuma resposta, não recebemos, ei, parabéns, não ganhamos pontos para Griffendor. Qual é o problema? O problema é que eu ainda não te dei o desafio fazer e se Ron acertar? Então, imprima uma mensagem de parabéns se Ron, adivinhe corretamente, passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Alguns de vocês podem ter acabado de imprimir isso aqui. Parabéns, 10.4 Griffin Door. É assim que você escreve Griffin Door? Sim. Clique com o botão direito e execute 665. Insira dez pontos, quatro portas de grifos. O único problema aqui é que se eu digitar, por exemplo, 12 e apertar Enter, eu ainda recebo parabéns , o que não é bom Agora, as próximas pessoas, ou alguns de vocês, talvez tenham feito o seguinte, disseram Lip, a suposição é igual ao H. Então adicionei uma aba aqui para criar um recuo, é parte do bloco de código Clique com o botão direito e execute 6665. Pressione Enter, parabéns, corra dez pontos. Porta de quatro grifos. Excelente. Se eu digitar 12, não obtenho a resposta. Agradável. Excelente trabalho. Isso está correto. Isso poderia funcionar, mas existe uma maneira ainda melhor, porque lembre-se de que, quando estamos trabalhando com um L, se realmente avaliarmos a linha de código, essa é uma avaliação extra qual realmente não precisamos porque, e eu clicarei no final da linha e pressionarei a barra de controle para comentar Podemos simplesmente usar um LS. Se eu escrever, clicar e executar 665, boom, parabéns, 1.000 palpites a menos. Por que isso funciona? Bem, porque se a estimativa não for menor que a idade real e a suposição não for maior que a idade real, então qual é a suposição? Só há uma possibilidade, que é igual à idade real. Lá vamos nós. Espero que você tenha entendido. Espero que tudo isso faça sentido. O que eu quero que você faça agora é que eu quero que você execute isso através do depurador Não tenha pressa. Use o depurador Leia o código, experimente todas as possibilidades. Eu farei isso com você em 321. Adicione um ponto de interrupção aqui. Clique com o botão direito do mouse em debug. Feche isso. O que é Flamels, 12 anos Pressione Enter. Tudo bem, acho que 12 anos é menor do que a idade real? Sim, é. Por favor, adivinhe mais alto. Vamos iniciar o scan debug 1.000. Clique em Enter, é menos? Não, não é. É maior? Sim, é. Por favor, execute Adivinhe mais alto, adivinhe mais baixo. Nós imprimimos. Agora, se eu clicar com o botão direito do mouse e depurar novamente, você pode simplesmente clicar na depuração, aqui na parte superior 665 acertos é menor que a idade real, é maior que a idade real. Não, não é. Em seguida, simplesmente entramos na impressão. Nós terminamos com isso. Agora, deixe-me retomar essa linha e comentar a linha de L. Clique com o botão direito do mouse em debug. Então, o que é L H 665. Pressione Enter. Observe o que vai acontecer. É menor do que a idade real? Não, não é. É maior do que a idade real? Não, não é. Então temos que avaliar isso novamente. É igual ao H real? Sim, é. E então imprimimos, para que você possa ver usando um L, LF desnecessário que acabamos de adicionar uma avaliação extra, que não é recomendado, mesmo que isso não seja um grande problema. Nesta avaliação extra de 0,1, você está me dizendo que quem se importa? Como se fossem alguns milissegundos de trabalho extra. Mas imagine se tivéssemos um loop que fizesse isso 1.000 vezes por segundo. Imagine isso nessa situação. É claro que isso não é possível, mas a otimização de código é algo que você precisa conhecer mesmo neste momento. Usar um L aqui faz o mesmo trabalho que o elevador, sem quaisquer consequências adicionais ou futuras. O que significa que é melhor usar o Ls apenas para remover uma operação extra como essas operações. Essas comparações consomem alguns milissegundos do seu código, e é melhor economizar nesses milissegundos a qualquer momento possível Muito obrigado por assistir. Espero que tenham gostado, e o próximo vídeo é sobre dar às pessoas uma segunda chance. Então, eu vou ver você nesse vídeo. Tchau tchau por enquanto. 26. 6. Dê uma segunda chance: Bem-vindo de volta ao novo vídeo dos meus programadores de python favoritos novo vídeo dos meus programadores E esta é a época de retribuir. Claro, isso depende de onde você está ou quando está assistindo isso sem mais delongas. E vamos parar com as piadas. Vamos continuar e começar. Queremos dar uma segunda chance porque ele é um bom companheiro bruxo. O que fazemos aqui? Como podemos dar uma segunda chance? Bem, isso deve ser bastante óbvio. Precisamos obter outra entrada aqui. Vou obter uma estimativa igual à entrada de números inteiros e a esse indicador aqui E então, é claro, precisamos verificar se a estimativa era igual à idade real que vamos imprimir. Muito bem, Sr. Wesley dez pontos ou, neste momento, acho que deveríamos dar a ele cerca de cinco pontos, porque ele precisou tentar Então, cinco pontos para a grade, clique com o botão direito, execute. Digamos que 5.500 Boom. Por favor, adivinhe mais alto. Ah, bom. Agora eu recebo uma segunda entrada. Então eu digito 665. Estrondo. Muito bem, Sr. Wesley Cinco pontos. Porta Four Griffin. Agora, novamente, lembre-se de que estamos usando dois sinais de igualdade, o que significa que estamos comparando os dois valores para verificar se eles são iguais. Quando usamos um único sinal de igual, isso significa que estamos atribuindo um valor a uma variável Agora, o único problema aqui é que, se eu clicar com o botão direito do mouse e correr, eu digito 900 e pressiono Enter. Só me dizem para ficar mais lento, sem nenhuma maneira de obtermos uma segunda entrada adequada Então, o que fazemos aqui? Você já deve saber que devemos fazer a mesma coisa com os inferiores. Agora, se eu escrever, clicar e correr, quero que você também perceba isso. Deixe-me acrescentar aqui o Sr. Ron. Só para que possamos distinguir entre essa impressão e essa impressão. Se eu escrever, clique e eu corra, digite 900 e pressione Enter, por favor, vá mais devagar e digite 665 Lá vamos nós. Muito bem, Sr. Round, cinco pontos para Griffin Door Essa é a linha de código, essa é a impressão que está sendo executada e não essa Por quê? Porque temos 900, o que significa que essa condição não é verdadeira. Isso significa que verificamos se essa condição é verdadeira e, como é 900, é maior do que a idade real Entramos no bloco de código e recebemos outra entrada e verificamos se o gás é igual à idade real. Na verdade, isso é chamado de se aninhado, o que significa que é um se dentro de outro se, mesmo que seja o Santa Live Mas é o mesmo conceito aqui. Em seguida, imprimimos o seguinte. Agora, o único problema, e mais uma coisa, observe o recuo Agora temos um recuo duplo. Eu te disse há alguns vídeos que não podemos ter recuos extras apenas neste caso em que temos um bloco de declaração dentro de outro bloco de declaração Podemos ter esses recuos duplos O único problema aqui é que, se eu escrever, clicar em Executar, digitar 900 e depois digitar em baixo, ok, 800, não recebo nada impresso para mim. Pelo menos eles deveriam me dizer que eu não sou bom nisso. Sou idiota. Eu deveria estudar mais para os seguintes testes para saber o que ele é Flamel Pelo menos alguma indicação aqui deveria acontecer. Esse será o seu desafio adicionar uma instrução L às nossas novas declarações if. E verifique se você tem os recuos corretos para eles. Pause o vídeo agora mesmo e adicione um L aos seus novos ifs. Bem vindo de volta. Como você conseguiu lidar com isso? Aqui, é muito simples. Basta adicionar um L a eles se eu quiser imprimir errado novamente, errado novamente. E então aqui eu adicionarei um L e direi que você errou de novo. Quando escrevo clique e corro, vamos digitar 900, 800, você entendeu errado. Novamente, essa linha de código foi executada. Vamos tentar essa vitória de 400, 500. Essa é diferente. Essa é a linha de código que foi executada. Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, veremos os operadores de teste. Então, vimos alguns desses operadores já como o menor que, o maior que, o igual a, o maior que ou igual a, o menor que ou igual a, o menor que ou igual a. Mas funciona da mesma forma o maior que e igual a. No próximo vídeo, veremos outro operador que é diferente de. É muito útil. Te vejo no próximo vídeo. Muito obrigado por assistir. Apenas como um desafio extra, como uma lição de casa extra, mesmo que eu não a tenha aqui Tente usar o depurador em vários lugares aqui para ter certeza de que você entende como tudo A única desvantagem de usar um depurador quando você tem uma entrada é que às vezes ela Por exemplo, aqui, se eu entrar em Sim, e o console agora está aguardando a entrada. Se eu digitar 20, pressionar Enter, você pode ver que agora ele não entra corretamente, como se algumas coisas estranhas acontecessem Deixe-me tentar isso de novo, tipo 120, pressione Enter. Ok, vamos lá. Agora funciona. Você precisa usar a etapa do meu código, como você pode ver, porque ela pode ficar bloqueada na leitura do código dentro da entrada Isso é algo muito avançado, não se preocupe com isso. Ao usar as entradas, use o step into, por exemplo, aqui você pegou isso, ok? Entre no meu código. Tudo bem, e então digite 300 , quero dizer, entre novamente. Tudo bem, lá vamos nós. É assim que poderia funcionar. Tudo bem, senhoras e senhores, muito obrigado por assistir e nos vemos no próximo vídeo 27. 7. Operadores de teste: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente Neste, analisaremos diferentes operadores de teste. Como eu disse no vídeo anterior, você já viu muitos desses operadores e esses são os operadores que temos menor que ou igual a, maior que, maior que ou igual, igual a. Finalmente, aquele que não vimos antes, que é o n igual, que é um ponto de exclamação seguido por um É muito importante lembrar. Muito importante ao usar. Não vamos perder mais tempo e vamos analisar o uso desses operadores. Se voltarmos ao nosso jogo que criamos aqui, quero escrever ou ter a mesma saída. Deixe-me reformular isso Quero reescrever o código com a mesma saída usando operadores diferentes Em primeiro lugar, vou selecionar tudo isso e pressionar o controle de avanço para comentar tudo. Então eu vou dizer que se o palpite é diferente do real ele, eu vou dizer que se o palpite for menor do que o real ele, eu vou imprimir, por favor, execute o palpite mais alto e depois imprima. Por favor, execute o Guess Lower aqui. Eu vou dizer que outra coisa imprima. Muito bem, Sr. Ron ou Sr. Wesley. Dez pontos, quatro portas de grifo. Ok. Então, como isso funciona? Eu quero que você faça uma pausa por um segundo, e eu quero que você pense em como isso realmente funciona Em primeiro lugar, verificamos se a estimativa é diferente da idade real. Se não for, o que significa que essa condição é falsa, vamos para o outro Correto e imprimimos Bem feito, Sr. Wesley Dez pontos para Griffin Door. Vamos testá-lo. Clique com o botão direito e execute 665. Pressione Enter. Muito bem, Sr. Weasley. Dez pontos para Griffin Door. Agora, se for diferente da idade real , só então vamos verificar. Se a estimativa for menor que a idade real, pedimos ao usuário que adivinhe mais. Se for L, então dizemos à pessoa que adivinhe mais devagar. Agora, por que não dissemos que a estimativa labial é menor ou maior do que a idade real para adivinhar menos? Pense por um segundo por que não usamos o lábio exatamente como fizemos neste caso aqui. Quero dizer, aqui verificamos se o lábio é maior do que ele real. Bem, é pela mesma razão que não usamos um lábio aqui e, em vez disso, escolhemos usar um L. Porque nessa situação, não queremos avaliar isso desnecessariamente E por que é desnecessário verificar aqui se é maior? Bem, porque já estabelecemos que a idade ou que o gás é diferente da idade real, significa que ou será maior ou será menor do que a idade real. Depois de nos certificarmos de que não é igual à idade real, verificamos se é menor que a idade real porque é menor que a idade real, ou se não for menor que a idade real, significa que deve ser maior que a idade real. Não há outra maneira de contornar isso. Não pode ser igual. Se for menor que, significa que é maior que, é por isso que só precisamos dos Ls aqui para que isso funcione. É claro que aqui estamos usando a expressão diferente de. Sim, o único problema aqui é que não temos uma segunda chance. Portanto, se eu digitar 100 ou 900, execute o Guess mais devagar, mas não tenho outra entrada E é aí que entra seu desafio. Seu desafio será obter uma segunda entrada, obter uma segunda entrada do usuário. Verifique se o hóspede estava correto e, se não estiver, imprima uma mensagem com base no resultado. Devo te dar uma dica? Talvez eu não devesse. Você só deve ter mais uma entrada. Tente pensar nisso. Só mais uma entrada aqui. Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? A propósito, se você adora as pontuações, se está gostando do meu ensino, se está aprendendo alguma coisa, por favor, deixe-me avaliar. Isso me ajudou muito. Mas de qualquer forma, o que deveríamos estar fazendo aqui? Alguns de vocês podem ter feito o seguinte. Depois de imprimirmos, obtemos a estimativa igual à entrada. E então aqui, deixe-me adicionar esse aviso extra e depois faremos o que. Desculpe. Lá vamos nós. E então vamos verificar se a estimativa é igual à idade real, imprimir bem feito, cinco pontos, L imprimir errado novamente. Então o que você fez foi copiar isso e colocar no Ls para que realmente funcionasse. Porque agora, se eu escrever Clique, eu executo e digito 500, 665 Bem feito, cinco pontos, excelente trabalho. O único problema aqui é que isso é chamado de código redundante. Sempre que você estiver copiando e colando código, comece imediatamente a pensar: o que estou fazendo? alarme deve começar a disparar em sua cabeça que existe uma maneira melhor e mais fácil de fazer Você nunca deveria ter que copiar o código. É claro que existem exceções, mas na maioria das situações em 95% do tempo em que você está copiando o código, você pode evitá-lo Como podemos evitar isso nesse caso? Bem, se eu disser que na verdade não precisamos adivinhar aqui, não precisamos adivinhar nessa mudança de declaração L para voltar atrás. Só precisamos adivinhar. Então, se eu escrever, clicar e executar 90665, muito bem, clique em Write e execute 30665. Bem feito. O que eu fiz aqui? Bem, em vez de adivinhar a idade real dentro desse bloco de código onde verificamos se é menor que a idade real. Ou nesse bloco de código em que verificamos se é maior, não importa. Podemos simplesmente colocá-lo do lado de fora. Observe que isso não faz parte do outro, isso não faz parte do. É por um segundo se não dermos sugestões, se tivéssemos o seguinte código. Então, assim que você acertar o palpite incorretamente, você quer dar um segundo palpite Não importa se era maior, não importa se era menor. Desde que seja diferente da idade real, teremos que adivinhar. E esse é o ponto principal. Essas duas afirmações if aqui são apenas um ponto de orientação para o usuário, se ele deveria estar adivinhando mais ou Mas, além disso, teremos que adivinhar. De qualquer forma, não importa se devemos adivinhar mais alto, não importa se devemos adivinhar mais baixo, devemos adivinhar. Esse é o ponto principal. Espero que você tenha entendido como isso funciona. Algumas pessoas realmente ficam confusas, mas você deve reservar um tempo para entender e aprender adequadamente por que temos essa suposição aqui. E não dentro do L, não dentro do F. Apenas um único funciona o suficiente Ok, muito obrigado por assistir. Espero que você goste. E no próximo vídeo, veremos escrever ifs de uma forma um pouco diferente Então, tchau, por enquanto. 28. 8. Se de forma diferente: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste, vamos ver se de uma maneira diferente Então, o que vamos fazer é reescrever nosso programa para adivinhar a resposta correta primeiro, e depois vamos continuar e fazer todo o resto E quando dizemos que vamos reescrever o código, quero dizer que você vai reescrever o código e os melhores tipos de vídeos. Os melhores tipos de vídeos são aqueles que você começa com um desafio, certo Não. Ok. Por favor, não clique em reescrever o código para verificar se a suposição do usuário estava correta no início, escreva o código se a suposição for igual à idade real e, em seguida, continue a partir daí e faça os ajustes necessários para obter a mesma saída se a suposição do usuário estava correta no início, escreva o código se a suposição for igual à idade real e, em seguida, continue a partir daí e faça os ajustes necessários para obter a mesma Novamente, queremos a mesma saída. O que eu quero que você faça, na verdade, é que eu não comente isso. Em vez disso, quero que você adicione uma impressão aqui. Claro, eu quero isso fora de tudo, e eu quero que você adicione um multiplicado por 50 e, em seguida, continue escrevendo o código para ter a mesma saída Mas desta vez você precisará começar com o gás sendo igual ao H. E eu tenho uma dica para você, se você não quiser a dica, pause o vídeo e vá para o Se você quiser a dica, 31, não precisa excluir ou adicionar nenhum código Basta mover um pouco de código. Pause o vídeo agora mesmo e vá para o desafio. Oh, ok, bem-vindo de volta. Como você conseguiu lidar com isso? Em primeiro lugar, precisamos começar a escrever as condições iniciais, que verifica se a estimativa era igual à idade real. Se for igual, então o que eu quero fazer é simplesmente dizer: ótimos dez pontos para Griffin, certo? Então eu vou ter um L. O que devemos fazer no L? Exatamente a mesma coisa que fizemos neste caso. Essa é uma simples movimentação do código. Não precisamos acrescentar nada. Não precisamos mudar nada porque alteramos a condição inicial. Tudo o que precisamos fazer é mudar a posição do nosso código. Agora, se eu escrever, clique, mas você sabe que o problema com isso é que vamos obter outras entradas aqui Quero dizer, você sabe o que, vamos fazer isso. Então 300 aperte enter, por favor, adivinhe mais alto, 665 aperte enter e pronto Bem feito, porta 5.4 griffin, mas aqui, porque a suposição mudou Por quê? Porque a suposição aqui era outra entrada e era 665 Realmente não funciona, então, na verdade, devemos comentar isso. Clique com o botão direito e execute 300. Por favor, adivinhe mais alto 665. Lá vamos nós. Bem feito, cinco pontos. Ok, então é a mesma saída, é exatamente o mesmo código. Obtemos os mesmos resultados, apenas mudamos o operador na parte superior. Portanto, este é apenas um bom exercício para mostrar que às vezes você pode obter o mesmo resultado usando códigos diferentes. Às vezes, não importa qual tipo de código você usa, às vezes não importa que tipo de código você usa ou qual condição você escreve. Como vimos neste vídeo na declaração F onde começamos com g sendo maior que 17. E vimos que não é tão bom quanto usar menos de 17 anos neste caso. Às vezes é melhor. Então, muito obrigado por assistir. Espero que você goste. E nos vemos no próximo vídeo, onde falaremos sobre expressões complexas. Quer dizer, e se tivermos várias condições aqui na mesma linha de código, não em um LF, na mesma linha de código. Te vejo no próximo vídeo, adeus por enquanto. 29. 9. Expressões complexas usando e, ou: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos analisar condições complexas usando, e até agora só fizemos condições muito simples. E se, por exemplo, quiséssemos que mais de um valor fosse avaliado, por exemplo, idade maior que 17 anos. Talvez se quisermos verificar se a idade também é menor do que alguma coisa, é aí que começaremos a usar expressões complexas usando e também veremos tabelas de verdade e e/ou. Primeiro, vamos criar um novo arquivo Python aqui. Então, novo arquivo Python e eu vou chamá-lo de expressões plex Em primeiro lugar, obteremos a entrada para uma temperatura. O que queremos fazer é ter um PC para jogos onde queremos jogar alguns jogos, mas só podemos jogar esses jogos se nossa GPU estiver em uma determinada temperatura Em primeiro lugar, vamos medir a temperatura, a temperatura, é assim que você corrige a temperatura. Sim, entrada de números inteiros. Quão quente está sua GPU? Gpu significa Unidade de Processamento Gráfico Gráfico, eu acho Sim, acho que sim. Essa é a GPU E então vamos verificar se a temperatura é maior ou igual a 20 e a temperatura é menor ou igual a 70, então vamos dizer, ótimo, continue jogando seu jogo aos 60. Continue tocando seu chiclete. Coma bem 60 FPS. Eu imprimo, opa, desculpe, você não pode jogar seu corpo de jogo Esquecemos que estamos usando aspas simples. Está tudo bem Como você pode ver, em primeiro lugar, temos uma pequena linha ondulada nos dizendo que podemos simplificar a comparação de cadeias Isso será tratado no próximo vídeo, mas por enquanto o que precisamos entender é que aqui estamos verificando se a temperatura é maior que 20 ou maior e igual a 20 e a temperatura é menor que 70, então podemos jogar nosso jogo Vamos ver como isso se parece no mundo real. Quando corremos, qual é a temperatura do seu PC? 20 Pressione Enter. Ótimo, você pode continuar jogando seu jogo. Por quê? Porque 20 é maior ou igual a 20. Lembre-se de que o igual a é a palavra-chave. Vamos correr novamente. 17 pressione Enter. Opa, desculpe Você pode jogar seu jogo. Agora, alguns de vocês podem estar dizendo, espere, espere, espere, espere. Michael, Michael, 17 anos. Não é maior do que 20, quero dizer. Ok, eu vou te dar isso. Mas é menos de 70. Então, o que dá, qual é o problema? Bem, quando estamos trabalhando com um fim, temos que ter ambas as condições verdadeiras. Então isso deve ser verdade e isso deve ser verdade. Ambas as condições devem ser verdadeiras para avaliar toda a condição como verdadeira, a fim de entrar no bloco de código. Por exemplo, se eu escrever, Click, e eu executar e digitar 100, 100 é maior ou igual a 20. A primeira condição é verdadeira, ótimo. Mas o 100 não é maior que 70. É maior que 70, não é menor ou igual a 70. O que vamos conseguir aqui? Opa, desculpe. Você pode jogar seu corpo de jogo. Precisamos que ambas as condições sejam verdadeiras, para que sejam avaliadas como verdadeiras, para realmente entrarmos no bloco de código aqui. Então, com isso esclarecido, deixe-me falar um pouco sobre as tabelas da verdade. Então, se temos uma verdade e uma verdade, obtemos uma verdade. Se temos um verdadeiro e um falso, obtemos um falso. Se temos um falso e um verdadeiro, obtemos um falso. E se tivermos dois falsos, obteremos um falso. Novamente, antes de prosseguirmos, você precisa entender que podemos adicionar mais do que apenas duas condições aqui. Podemos adicionar, não importa quantos quisermos. Se todas elas são verdadeiras, então nos tornamos verdadeiros e podemos entrar. Se apenas um deles for falso, não podemos entrar. É semelhante a quando é como o veto, você sabe, os cinco países mais importantes, ou maiores países, ou países poderosos, qualquer que seja, eles recebem um voto de veto Então, por exemplo, digamos que os EUA e a Rússia, e eu não sei, a França e Grã-Bretanha digam sim, sei lá, à luta contra alienígenas Se então a China decidir que não quer lutar contra alienígenas e vetar a decisão, então não lutaremos contra os É a mesma coisa aqui. Se todos, em todas as condições, a temperatura é maior que 20 e a temperatura é menor que 70. E outra coisa. E outra coisa. E outra coisa. E então uma condição não é verdadeira, toda essa afirmação seria falsa. E não entraríamos nesse bloco de código que é a tabela da verdade final. Agora também temos a tabela Or Truth. Nós não vimos o Or. Vamos ver isso no próximo vídeo. Será um desafio para você. A tabela da verdade, temos a verdade ou a entendemos. Se temos ou somos falsos, nos tornamos verdadeiros. Se tivermos o falso ou o verdadeiro, obteremos o verdadeiro. E se temos falso ou falso, ficamos falsos. A tabela da verdade é diferente da tabela da verdade final, onde temos que fazer com que tudo seja falso. Se apenas uma condição for verdadeira, todo o resto será verdadeiro. Está bem? Então, isso é tudo o que você precisa saber sobre expressões complexas com as extremidades e os ors. Obviamente, há muito mais complexidades nisso. Você encontrará, não é muito comum encontrar as pontas e os minérios, mas é muito importante que você os conheça. Eles serão úteis em muitas situações. Eles são um pouco mais específicos quando se trata de seu uso. Não é muito usado. Você pode se locomover usando as pontas e os minérios na maioria das vezes, mas você pode , e você encontrará, provavelmente encontrará as pontas e os minérios, então é uma boa ideia saber como eles funcionam. E no próximo vídeo, vamos lidar com essa linha ondulada aqui que nos mostra como simplificar a comparação de cadeias Na verdade, podemos escrever isso de uma forma mais simples. Então, eu vou te ver no próximo vídeo. Tchau, tchau por enquanto. Ah, e por favor. A propósito, se você está gostando disso, deixe um comentário. Isso me ajudou muito mais do que você pode imaginar. Se você tiver alguma dúvida, entre em contato comigo. Eu tenho meu número em algum lugar por aí. Você sempre pode entrar em contato comigo. Você pode entrar em contato com seu instrutor dedicado. E nos vemos no próximo vídeo. Tchau tchau. 30. 10. Comparação simplificada em cadeia: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, simplificaremos a comparação de cadeias e teremos um desafio muito confuso Tempos muito emocionantes. Primeiro de tudo, vamos dar uma olhada na expressão que escrevemos aqui. Intelligent está tentando nos dizer que existe uma maneira mais simples de escrever essa instrução para expressão Se escrevermos Clique e clicarmos na ação Mostrar contexto, você verá que temos muitas sugestões aqui. Mas uma das mais importantes é que elas servem apenas para reescrever Mas você tem essa lâmpada. Normalmente, a lâmpada é uma boa ideia. Você pode simplificar a comparação da cadeia. Se clicarmos nela, você verá que ela muda nossa expressão para a seguinte. Isso está escrito de uma maneira diferente, mas provavelmente deveria ser mais familiar para você. Onde você pode ver que a temperatura deve ser maior ou igual a 20 e menor ou igual a 70, ela deve ter o mesmo resultado. Portanto, sempre que você alterar seu código, certifique-se de testar tudo. E também sempre certifique-se de testar as extremidades. O que quero dizer com isso, quando eu corro, por exemplo, 50 deve funcionar, certo? Mas sempre teste números de 2070, como 71,19. Sempre teste Sempre tente saber o que aconteceria em casos extremos sem isso do caminho. Agora vamos mostrar o desafio. Então, o que eu quero que você faça é que eu quero que você use ou eu quero que você altere a condição de usar ou em vez de, e, claro, certifique-se de fazer os ajustes necessários no código. E, claro, isso deveria ser óbvio. Queremos ter o mesmo resultado, queremos manter o mesmo conhecimento aqui. Por exemplo, adicionaremos uma impressão com Não sei, o traço é, novamente, multiplicado por 50 Eu quero que você escreva o código aqui onde usamos um Or e ainda temos a mesma expressão para a temperatura. Ou seja, se eu digitar 50, eu deveria receber sim, você pode jogar seu jogo, se eu digitar 100, não, você não pode jogar seus jogos, etc Mas desta vez usando um Or. Publique o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, vou digitar o seguinte. Se a temperatura for menor que 20 ou a temperatura for maior que 70, eu imprimirei, você não pode jogar seu jogo. Acho que isso faz muito sentido. Se a temperatura for menor que 20 ou maior que 70, você não poderá jogar seu corpo de jogo. E então no L vai imprimir, ótimo, você pode continuar jogando. Acho que isso faz sentido. Não acho que precise de muita explicação aqui. Se eu escrever clique e execute, você não pode jogar seu jogo 20. Ótimo. Você pode jogar seu jogo 1971. Você não pode. E lá vamos nós. Tudo parece estar funcionando corretamente. Tudo bem? Não há nada demais aqui. Basta verificar se a temperatura é menor que 20 ou se a temperatura é maior que 70. Agora observe a lógica que está acontecendo aqui. 66 não é inferior a 20. Isso está correto. Porque 66 é maior que 20. Então essa condição é falsa, certo? Mas 66 se a temperatura e se a temperatura for maior que 70, ok? Então isso é falso e esse é falso. Então, temos duas quedas, e como essa é falsa e essa é falsa, ótimo, você pode continuar jogando. Então, toda essa expressão é avaliada como falsa. Aqui, deixe-me te mostrar, te levar de volta à nossa mesa da verdade. Precisamos ter os dois falsos para obter um falso. Mas, por exemplo, aqui, se eu escrever, clicar e correr e disser 12, ok? Então 12 é menor que 20. Tudo bem. Portanto, essa condição é verdadeira, mas não é maior que 70. Portanto, essa condição é falsa. Mas porque temos um verdadeiro e um falso, ou um verdadeiro ou um falso, obtemos um verdadeiro. Então, toda essa expressão é avaliada como verdadeira. Isso significa que vamos, opa, desculpe, você não pode jogar seu jogo Então, antes de prosseguirmos, é muito importante ter em mente como o Python avalia Python para de verificar o resto das extremidades quando descobre que uma delas é falsa Porque, como eu disse, se temos 100 condições e 99% 99 delas são verdadeiras e uma é falsa, então toda a expressão é falsa. O que o Python faz é continuar verificando se as condições são verdadeiras Quando encontra uma falsa , não continua examinando as outras. O oposto é verdadeiro quando se trabalha com um ou. Ele examinará todas as expressões no re até descobrir que uma é verdadeira e depois avalia que tudo é verdadeiro Então eu espero que você goste. Espero que tenha feito sentido, e espero que você tenha entendido como estamos usando o R. Esse é um desafio um pouco confuso Por alguma razão, muitos estudantes acham muito, muito difícil entender isso. Aproveite o tempo, tente reescrever você mesmo, tente entender tudo o que está acontecendo E no próximo vídeo, veremos o teste do valor verdadeiro. Que vai ser um vídeo muito importante e muito divertido. Então, eu vou ver você e a próxima esposa por enquanto. 31. 11. Teste de valor de verdade: Bem-vindos de volta, meus programadores de python favoritos. Neste vídeo, veremos os testes de valor de verdade. E o que queremos dizer com isso? Queremos dizer que às vezes as condições não parecem normais, como quando comparamos duas coisas, mas elas ainda são avaliadas como verdadeiras ou falsas. Por exemplo, um zero sempre é avaliado como falso. Interessante Certo, deixe-me mostrar link a seguir e ele será vinculado em algum lugar. Claro, se não for, entre em contato comigo. Eu sempre esqueço essas coisas aqui. Se eu mostrar o seguinte, como você pode ver, temos os tipos integrados. Você pode até mesmo examinar os tipos incorporados, o Python, as documentações padrão da biblioteca, o digitador e, para o Google, você achará O valor verdadeiro que testa qualquer objeto pode ser testado quanto ao valor verdadeiro para uso em F ou por um tempo. Vamos ver o tempo na próxima seção, condição ou como operando Hm Da operação de lingotes abaixo. Por padrão, um objeto é considerado verdadeiro, a menos que sua classe defina que qualquer método bull retorne falso com exatidão, etc., o que significa que todo objeto, se você apenas tentar definir um objeto, ele será avaliado E eu vou te mostrar o que quero dizer com isso mais tarde. Mas vamos dar uma olhada em alguns objetos que podem ser considerados falsos. Por exemplo, quando estivermos usando um não ou um falso, não veremos nenhum na próxima seção ou na seção seguinte. Por exemplo, zero é avaliado como falso 0,0 A float zero, j e é um número imaginário Zero decimal ou fração zero para uma sequência e coleção vazias Portanto, se você tiver uma string vazia e tentar verificá-la, ela será avaliada como falsa se você tiver parênteses vazios, colchetes vazios Então, essas são listas e duplas. Nós os veremos nas próximas seções. Lá vamos nós. Você também pode ler, por exemplo, isso aqui. Foi aqui que eu não criei a tabela que você viu alguns vídeos atrás. Na verdade, eu o comprei daqui. E como você pode ver, eles têm uma coisa extra que vamos usar, que é e não é. Nós o usamos? Acho que usamos na seção anterior, mas vamos analisá-lo mais desta vez. Como você pode ver, o igual, o diferente e a identidade do objeto em que você tenta verificar se um objeto é igual a outro objeto diferente é o mesmo objeto. Então, vamos ver isso mais tarde. Mas, por enquanto, vamos testar essas teorias e verificar se zero é realmente avaliado como falso. De volta ao nosso código aqui, vamos criar um novo arquivo Python que chamaremos de teste de valor verdadeiro Aqui, vou dizer que se zero eu imprimo verdadeiro, imprimo falso. Mesmo antes de executarmos isso, veja o que estamos recebendo, obtemos uma luz alta sobre a impressão verdadeira. Se eu passar o mouse sobre ele, ele diz que esse código está acessível. Por quê? Porque zero sempre será avaliado como falso, o que significa que toda a expressão é falsa. O que significa que iremos até o Ls e imprimiremos em falso. Se eu escrever click e novamente false, isso nunca mudará. Esse código está acessível. Agora, se alterarmos 0-1, como você pode ver, agora esse código está inacessível porque sempre será avaliado como uma execução verdadeira, verdadeira, verdadeira, verdadeira E não é só isso, se digitarmos qualquer número que quisermos ou qualquer outra coisa, ele sempre será avaliado como verdadeiro. Qualquer coisa diferente de zero é avaliada como verdadeira. E o mesmo vale para 0,0 ou não? Oh, sim, lá vamos nós. Também é avaliado como verdadeiro. Isso é o que vimos aqui, 0,00 j, etc., etc. Por exemplo, se tivermos um falso aqui, é claro que ele será avaliado como falso , clique e execute false. Se não tivermos nenhum, o que é algo que veremos mais tarde, também obteremos um falso. Esse é o ponto de valor por meio do teste de valores que não são. Você pode não pensar que zero criaria um falso, mas é considerado falso. Ok, então com isso esclarecido, deixe-me mostrar um exemplo melhor disso ou um exemplo mais prático disso. Então, por exemplo, aqui eu vou dizer que nome é igual Me dê seu nome, me dê seu nome. E então aqui eu vou dizer se é o nome. Então, estou simplesmente verificando o nome. Não estou verificando se é igual a alguma coisa. Não estou verificando nada. Só estou dizendo que se o nome for impresso, ei, como você vai imprimir, quem é você? Se eu escrevo, clico, corro e digito Michael, boom. Ei, como você está Michael? Perfeito. Se eu executar isso e tiver um espaço, ei, como você está? Porque o espaço também é considerado valioso. Mas se eu escrever, clicar e pressionar Enter, ele me dirá quem é você? Se eu não digitar nada, basta pressionar Enter, ele me diz quem é você. Por quê? Porque não temos nada no nome. E deixe-me realmente tentar imprimir o nome no final. Se eu clicar com o botão direito e pressionar Enter aqui, como você pode ver, não recebo nada. Acabei de receber um espaço vazio. O que é um espaço vazio? Onde está? É isso aqui. É uma string vazia sem nada dentro dela que é avaliada como falsa Antes de continuarmos, tenho um pequeno desafio para você verificar se uma string vazia mudou de uma condição simples para verificar se o nome não está realmente vazio. Então, devo te dar uma dica se talvez você não tenha entendido o que queremos aqui? Então, o que estamos fazendo aqui é porque o nome está vazio e não tem nada nele, nós apenas dizemos se o nome queremos mudar isso. O que essa expressão significa? Isso é o que eu quero que você faça, que altere essa expressão para refletir melhor o que estamos realmente verificando. Talvez você ainda esteja confuso. Se quiser, você pode entender a dica, mas é uma dica um pouco grande se você não quiser, se você quiser pesquisar isso sozinho , passe vídeo agora mesmo e faça o desafio Se não, eu vou dar para você em 331, uma string vazia Você precisa verificar se o nome não é igual a uma string vazia. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? A única coisa que precisamos fazer aqui especificar que estamos verificando se nome é diferente de uma string vazia. Isso é o que estamos realmente tentando dizer quando escrevemos if name, estamos verificando se não é igual a uma string vazia. Isso é tudo o que precisávamos fazer. Vamos executar isso. Pressione Enter, quem é você? Execute esse tipo e qualquer outra coisa? Pressione Enter, vamos lá. Tudo bem, então espero que você tenha entendido no próximo vídeo que veremos In and Not In para verificar as declarações condicionais Então, eu vou te ver no próximo vídeo. Tchau, tchau por enquanto. 32. 12. Usando in e not in Declarações condicionais: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste vamos usar e não em declarações condicionais Eu realmente deveria pensar em mudar o nome desses vídeos nas aulas. De qualquer forma, existem dois usos, um para os loops e outro para as condições Mas desta vez, vamos simplesmente aprender sobre seu uso em nossas pequenas condições simples. Vamos criar um novo arquivo em Python aqui. Vamos ligar para o carro, sublinhado, checando os dois aqui Vamos ter um carro que é o BMW M três, bom, então este é o nosso carro. E então teremos uma entrada, que será o nome do carro igual à entrada. E qual carro você gostaria? O que você gostaria? E então vou verificar se o nome do carro está no carro. Vou imprimir. Vou imprimir o nome do carro de campo de substituição que está no carro de campo de substituição. Caso contrário, vou imprimir, desculpe, não temos um campo de substituição novamente, eu esqueci Eu acabei de adquirir o hábito de usar aspas simples antes Eu costumava sempre usar aspas duplas. Agora eu sempre uso aspas simples. E como estou usando aspas simples, recebo esses erros o tempo todo. Eu não sei. Força do hábito, eu simplesmente esqueço, você sabe, mas está tudo bem. Sem danos, sem falta. Se eu escrever um clique e eu corro, eu digito, qual carro você gostaria? Bem, eu gostaria de um BMW. O Bmw é bom. Bmw está na BMW, três. Então, tudo acaba sendo bom. Mas se eu escrever Clique e eu corro e digito Ferrari. Desculpe, não temos Ferrari. Hmm, não é muito bom. Bem, porque não faz parte do BMWM três. Não há nenhuma sequência de personagens aqui que esteja na BMW. Então, por exemplo, se eu escrever Click, correr e digitar B. Ok? B está na BMW. Se eu tentar isso de novo e digitar M3m3, está na BMW. Mas se eu digitar no espaço M três e pressionar enter, você pode ver, desculpe, não temos um espaço M três. Portanto, deve ser exatamente o mesmo que temos aqui. A mesma sequência de caracteres que temos no carro é usada para verificar. Se tivermos isso mais tarde, também usaremos isso para listas e em loops, mas, por enquanto, usá-lo para declarações condicionais é suficiente Obrigado por assistir. Antes de partirmos, você tem o desafio de obter outra opinião. Portanto, você precisa criar outra condição para a instrução if. Verifique se uma string faz parte do nome do carro disponível e, em vez da entrada, use a entrada. Portanto, você precisa usar uma string diretamente em vez de tê-la aqui. Então, em vez do nome do carro, você precisa ter uma string real sendo usada para verificar se ela está no nome do carro. Ok, vídeo positivo agora. E a parte mais importante é usar o K neste vídeo positivo de desafio agora mesmo e fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Vou comentar isso e o que vou fazer é verificar se a BMW ou, desculpe, que não está no nome do carro, será impresso Vou imprimir, desculpe, não temos mais um BMW BMW no nome do carro. Eu vou imprimir. Na verdade, eu tenho. Eu vou imprimir. Espere, não, isso significa Ok. Agora, está tudo bem. Vamos imprimir, vamos dizer que BMW está no nome do carro. Clique com o botão direito e execute. Se eu digitar Ferrari. Desculpe, não temos BMW na Ferrari. Faz sentido então BMW. Bmw está na BMW. Tudo está funcionando sem poder ser as duas coisas. Há um problema aqui. Se eu escrevo Clique e corro, eu digito BMW em maiúsculas, BMW em maiúsculas. Isso acontece às vezes, pressione enter , desculpe, não temos BMW e BMW. O problema aqui é que os caracteres em maiúsculas são considerados diferentes dos caracteres em minúsculas. Então, por exemplo, se eu escrever BMW com apenas um caractere em maiúscula e pressionar enter, desculpe, não temos BMW e B M. Qual é a solução para isso? É muito simples. Há algo chamado de dobra de caixa aqui, posso adicionar dobra de caixa. Se eu passar o mouse sobre ela, ela retornará uma versão da string adequada para comparação sem maiúsculas e minúsculas Basicamente, o que isso significa é que leva tudo para minúsculas. Quando escrevo Click e executo F e B, pressione Enter. Bmw está na BMW porque usamos a dobra da caixa do nome do carro. Reduza para a letra minúscula e compare-a com a BMW e tudo funcionará perfeitamente. Então, muito obrigado por assistir. Espero que tenham gostado. Este é o último vídeo da seção três, eu acho. Talvez eu acrescente mais tarde, quando atualizarmos o curso. Essa master class sempre será atualizada de tempos em tempos. Então, talvez eu adicione mais projetos, talvez eu adicione mais aulas aqui. Se eu julgar necessário ou alguma atualização em Python , sempre estarei atualizado com Muito obrigado por assistir. Parabéns por ter chegado até aqui. As habilidades que você aprendeu até agora são indispensáveis. Na próxima seção, você aprenderá muito mais sobre loops, sobre interrupções de listas Você tem uma longa jornada pela frente, mas é uma jornada muito, muito frutífera se você se ater a Se você está curtindo os vídeos, se está se divertindo, se está aprendendo, se gosta da qualidade do som. Espero que eu esteja fazendo o meu melhor aqui. Se você está gostando de toda a qualidade do som, da edição, de tudo, por favor, me avise em uma resenha. Onde quer que você esteja assistindo isso ou entre em contato comigo, me diga. Nossa, Michael, estou adorando isso como o McDonald's. Muito obrigado por assistir e vemos no próximo vídeo, na próxima seção ou onde quer que a vida nos leve. Tchau tchau por enquanto. 33. Seção 4 - Loops no Python | 1. Introdução a para loops: Bem-vindos de volta, meus colegas programadores de Python a um novo vídeo e a uma seção totalmente E neste, veremos loops em Python Muitas pessoas acham essa parte do Python e do aprendizado de programação em geral muito difícil Onde eles precisam entender esse conceito muito novo, que é loops que é simplesmente ter o mesmo código sendo iterado repetidamente a cada vez com um resultado diferente, usando valores diferentes Mas eu quero que você não se preocupe nem um pouco. Eu criei a forma mais abrangente de aprender ciclos que eu posso Obviamente, também é preciso muita concentração de sua parte. Você tem que tomar seu tempo, entender tudo o que está acontecendo. E eu quero que você realmente me dê sua total concentração. Você o fará, por toda a sua atenção , porque as coisas que aprenderemos serão muito cruciais, muito importantes. Não é muito difícil, mas isso exige uma concentração imensa Então, vamos começar. E antes de tudo, precisamos entender o que são loops. Na verdade, os loops podem executar um bloco de código várias vezes, e essa é a coisa básica Eles simplesmente executam o mesmo bloco de código várias vezes. loops são úteis se você quiser executar o mesmo código repetidamente, cada vez com um valor diferente Portanto, temos o mesmo código que vimos antes, assim como tínhamos códigos e as declarações F que vimos. Mas agora queremos executá-los várias vezes, cada vez com um valor diferente. E você verá o que quero dizer com isso. Vejamos uma estrutura geral de quatro voltas. Então, primeiro, temos quatro vezes que queremos fazer um loop e, em seguida, queremos fazer algumas coisas e o código a ser executado. E, claro, isso é um bloco de código, o que significa que está indentado Você pode ver o recuo aqui, quatro vezes que queremos fazer E então as coisas que queremos fazer aqui. Sem mais delongas, vamos passar para alguns exemplos e começar a ver como os quatro loops funcionam Primeiro de tudo, vamos falar sobre inteligência aqui. Vamos criar um novo projeto. É claro que será um projeto em Python. Vou colocá-lo dentro do curso de Python. Dentro do código aqui. Sim, código e depois barra invertida. E, claro, você pode salvá-lo onde quiser. E eu vou chamar isso de loops em Python. Clique em Concluir. Sim. Tudo bem, vamos lá. Então, agora temos loops e Python. Primeiro de tudo, vamos criar um novo arquivo Python que será composto por quatro loops E com um sublinhado no meio, não precisamos fazer o sublinhado, mas geralmente é melhor ter os nomes dos nossos arquivos como uma única palavra e sem letras maiúsculas, porque as letras maiúsculas serão mantidas para as aulas mais tarde, ou seja, no futuro Não se preocupe com isso agora. Por enquanto, vamos criar esse arquivo que tem quatro loops e acho que, na Intel J. Vou usar a magia da edição para ver você quando congelarmos Ok, bem-vindo de volta. Então, primeiro de tudo, vou criar uma mensagem muito simples. E eu vou dizer que a mensagem é igual à sequência de caracteres a seguir. Estou aprendendo Python como vimos antes. Cada personagem é um item em si mesmo, o que significa que cada um desses caracteres tem um índice anexado a ele. Então, o que eu vou fazer é examinar cada um desses personagens. O que significa que vou dizer o seguinte. Siga comigo. Quatro caracteres na mensagem, Colin, imprima o caractere Em primeiro lugar, quero que você pense em qual poderia ser a saída aqui. Se eu clicar com o botão direito do mouse e executar, essa é a saída que eu obtenho. Deixe-me estocá-lo aqui. Olha isso. Estou examinando cada um dos personagens. E isso também inclui o espaço. Já vimos isso antes. Isso inclui o espaço. Então, estou examinando cada personagem. Estou selecionando a mensagem, colocando-a no caractere variável e depois imprimindo o caractere Então eu vou voltar, vou para o próximo personagem, que é o apóstrofo Estou colocando isso na variável e estou imprimindo o caractere. Estou voltando, estou aumentando em um. Vou escolher o caractere, colocá-lo no caractere variável e imprimi-lo no espaço, L, E, A , etc A propósito, não precisamos nomear esse personagem. Poderíamos chamar isso de x se quisermos. A saída será a mesma. Esse é apenas o nome da variável, mas vou mantê-lo como caractere porque representa o que estamos fazendo aqui. Tenho certeza de que, neste momento, você ainda não tem certeza absoluta de como isso está funcionando. Não se preocupe. Examine com atenção e entenda, antes de tudo, pelo menos o que está acontecendo. Você não precisa se aprofundar muito aqui. Você não precisa compreender totalmente os pequenos aspectos que estão acontecendo Saiba que estamos lendo a mensagem, colocando cada personagem em personagem e imprimindo-a a cada iteração. Agora, neste momento, depois de observar essa respiração, expire. Eu quero que você faça o seguinte desafio. E não se preocupe, o desafio não é muito complicado. É só você usando o depurador, algo que já fizemos Eu quero que você configure o ponto de ruptura no laço dianteiro. E eu quero que você analise seu código e certifique-se entender como esse loop anterior itera sobre a mensagem de string Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Talvez você tenha feito o desafio sozinho, talvez esteja esperando por mim. Tudo bem. Vamos adicionar um ponto de interrupção aqui. Clique com o botão direito e faça o bug out for loop. Lá vamos nós. Você pode ver que nossa mensagem é a seguinte. Obviamente, ele está usando a folga para o caractere especial, que é uma aspa simples. Mas agora vamos intervir e você verá que o personagem é. Se entrarmos novamente, voltaremos ao topo e você verá isso no console que imprimimos. Lembre-se de que isso é o que está sendo impresso agora, quando eu entro novamente agora, embora esteja escrito aspas simples no verso, mas é apenas a aspa Eu continuo. O caractere agora é M. Eu imprimo M. Agora o caractere é um espaço vazio. Eu também imprimo o espaço vazio. Isso não é nada, é um espaço vazio. Agora o personagem é L. Eu imprimi o caractere é que eu imprimi. Por algum motivo, isso não é refrescante. Deixe-me verificar a mensagem. Estou aprendendo Python. Mas de qualquer forma, como você pode ver, estamos mudando o personagem e esclarecendo tudo. Vamos ver o que acontece. Ok, vamos lá. Agora está funcionando novamente por algum motivo. Mas, como você pode ver, estamos examinando cada personagem. Deixe-me encerrar isso e tentar depurá-lo novamente do seu lado Tenho certeza de que você não está tendo esse problema. Se você estiver, lá vamos nós. Estamos imprimindo o apóstrofo. O, o espaço. Ok, vamos lá. Agora está funcionando novamente. Não tenho certeza do que estava acontecendo. L, E, e mais uma vez parou. Mas, como você pode ver, estamos examinando cada personagem. Esta foi sua introdução aos loops. Claro, há muito mais nos loops, mas o que eu quero que você entenda é que estamos fazendo esse código várias vezes Vamos dar uma olhada na estrutura. Então, primeiro de tudo, o loop pode executar um bloco de código várias vezes. Esse é o nosso bloco de código. Observe a intenção que está por trás disso. loops são úteis se você quiser executar o mesmo código repetidamente com um valor diferente Estamos executando a impressão repetidamente a cada vez com um valor diferente, em que o caractere com um valor diferente está alterando o valor. A estrutura de um loop de quatro é apenas quatro e, em seguida, o número de vezes que queremos fazer um loop aqui, começamos com o quatro e, em seguida temos o número de vezes que queremos olhar. Agora, não definimos ou não definimos o número de vezes que queremos repetir de antemão Acabamos de dizer que queremos repetir essa mensagem porque a mensagem é uma string e as strings significam que podemos iterá-la Então, estamos examinando cada caractere individual, extraindo as informações dessa string e colocando-as na variável de caractere aqui E depois imprimindo o personagem. Em seguida, estamos alterando o valor e imprimindo-o de novo, de novo e de novo. E podemos continuar fazendo isso até chegarmos ao fim. Então, senhoras e senhores, muito obrigado por assistir No próximo vídeo, veremos um pouco mais os loops de debucking Então, estou muito animado em ver você lá. Por favor, não fique petrificado com o que você, que acabou de ver. Não tenha pressa. Respire e expire e confie no processo. Não é tão difícil quanto você pensa que é. Então, eu vou te ver no próximo vídeo. Tchau tchau por enquanto. 34. 2. Depurando um loop de alça, espaço: boas-vindas de volta aos meus desenvolvedores de python favoritos em um vídeo totalmente novo E neste, vamos depurar ainda mais nossos Em primeiro lugar, precisamos relembrar um projeto antigo que tínhamos. Vou criar um novo arquivo Python aqui. Vou chamar isso de separação de dados. Vamos chamar isso de “vem em loops”. Eu não sou o melhor em nomear coisas, ok, então vamos esclarecer isso Se você se lembra, em um projeto mais antigo, recebemos os seguintes dados. Agora, o meu pode ser diferente do que você escreveu, mas a parte mais importante aqui é que primeiro tínhamos um número numérico aqui e depois um caractere, depois quatro números, e depois algum tipo de caractere e depois quatro números e algum tipo de caractere E nosso objetivo era remover todos os separadores e colocá-los na lateral Ou pelo menos imprimir todos os números necessários sem que esses caracteres especiais sejam adicionados. Então, a forma como fizemos isso foi usando o código a seguir. Imprimimos os dados que chegam de um até o final com uma etapa de cinco. Então, por exemplo, se eu escrever clique em Executar, essa é a saída que eu obtenho. Eu recebo todos esses separadores. E agora eu posso usar isso como um filtro para remover todas as informações desnecessárias e ter números limpos chegando. Bem, o problema com isso é que se eu tentasse adicionar apenas um único número aqui, digamos, por exemplo, três, agora a distância não é mais cinco. O que eu recebo é o seguinte. Esse filtro é ruim. Se eu tentasse usar esse filtro, perderia os dois, os quatro e os seis e corromperia completamente os dados que estão chegando Como lidaríamos com isso? Como garantiríamos que os dados recebidos sejam filtrados corretamente Como extraímos adequadamente os separadores para criar esse filtro Bem, para isso, vamos usar loops. Vamos nos livrar desse código. Bem, na verdade, vamos comentar isso para que possamos sempre saber o que aconteceu no passado. Construirá em cima disso aqui. Primeiro de tudo, vou adicionar números aleatórios e alguns aleatórios, vamos adicionar, sei lá, uma multiplicação, uma porcentagem aqui, e jogar coisas em todos os lugares só para que possamos ver como podemos corrigi-las É claro que, usando os dados que chegam e o corte que fizemos aqui, não é possível extrair essas informações porque temos uma etapa muito definida A maneira de fazer isso é, antes de tudo criar separadores de variáveis, classificadores separados, e será igual a uma string vazia Estamos apenas configurando as coisas. Em seguida, analisaremos os dados que chegam. Você já deve saber como fazer isso. Quero que você dedique apenas alguns segundos para pensar como analisamos cada personagem individual e os dados que chegam. Dizemos quatro caracteres, lembre-se de que esse é apenas o nome da variável. Podemos chamá-lo do que quisermos nos dados que chegam. Então, aqui eu vou dizer, se nenhum caractere for numérico, vou dizer separadores mais é igual ao caractere e vou imprimir os O que está acontecendo aqui? Em primeiro lugar, estou examinando os dados que chegam, ou na verdade, isso é chamado de iteração sobre os dados que Cada personagem está sendo colocado no personagem aqui mesmo. Então eu estou verificando se esse caractere não é numérico, o que significa que não é um número Se eu passar o mouse sobre o numérico, você verá que ele retorna se a string for uma string numérica Caso contrário, se for seis, então é numérico, isso é verdade Verdadeiro é falso, o que significa que não entramos nessas condições, nem nessa condição, nem nesse bloco de código na instrução if. Espero que você conheça bem suas condições. Nós os examinamos extensivamente na seção anterior. Se o caractere não for numérico, como, digamos, o cifrão , essa afirmação aqui é falsa, o que significa que, com um nó atrás dela, ela se torna que significa que entramos aqui, e isso significa que acrescentamos nosso separador com o caractere, e nossa sequência de separadores cresce, a propósito Não tenho certeza se já fizemos isso antes, mas vou fazer isso pela segunda vez. Separadores iguais aos separadores mais caracteres que estamos construindo em cima do nosso Então, vamos agora executar isso e vamos dissecá-lo ainda mais. Vou clicar com o botão direito do mouse e vou executar, e essa é a saída que recebo. Como você pode ver, eu tenho todos esses separadores, incluindo o espaço aqui, todos impressos corretamente. Então, não tenha pressa. Eu quero que você veja isso. Quero que você pause o vídeo e entenda o que acabou de acontecer Porque vou adicionar uma linha de código aqui que nos ajudará a entender isso melhor. Vou imprimir os separadores em cada iteração que você possa ver o que está acontecendo Se eu clicar com o botão direito do mouse e correr, veja como isso funciona. Começamos do começo, temos nossos seis aqui mesmo. Examinando o personagem. Começamos com os seis, imprimimos os separadores Lá vamos nós. Nós não temos nada. Verificamos, se não for numérico, o seis também é numérico, não é Claro que é. Isso é verdade. Não é verdade é falso. O que significa que não entramos aqui, o que significa que simplesmente voltamos ao topo. Não anexamos nosso separador, imprimimos os separadores . Novamente, essa é a linha de código em que estamos imprimindo o separador Agora temos o caractere que é numérico. É um número numérico? Eu posso te ouvir na parte de trás. Não, não é. O que significa que isso é falso. O que significa que isso é verdade. que significa que entramos na declaração e acrescentamos nosso separador Portanto, nosso separador cresce com a vírgula. Então, quando voltarmos e agora o caractere estiver em três, imprimimos os separadores que são apenas uma vírgula E então verificamos se três é numérico. Sim, é. Então não entramos na condição. Voltamos ao topo. Imprimimos os separadores. Imprimimos os separadores. Imprimimos os separadores. E agora chegamos ao dólar. O dólar é numérico? Não, não é. Portanto, toda essa afirmação é verdadeira. O que significa que acrescentamos nosso separador ao caractere e agora temos o Sinal commodelar. Sinal commodelar Lembre-se de que estamos examinando tudo isso. Então chegamos ao ponto e vírgula, bum. Acrescentamos o ponto e vírgula, chegamos à estrela, acrescentamos a estrela, chegamos à frente e E continuamos cultivando isso. Então, se você conseguir passar por isso corretamente, então você está bem. Agora eu tenho um desafio não oficial, que é adicionar um ponto de interrupção aqui e passar por esse código novamente usando E eu quero que você compreenda isso completamente sem dúvidas Ok, então eu vou passar por isso com você. Então, vou depurar os dados que chegam. Então, vamos ver o que está acontecendo. Vou encerrar isso. Entramos nos dados que chegam com o personagem seis. Imprimimos os separadores. Obviamente, os separadores não são nada. É só uma linha vazia. O seis é numérico? Sim, é. O que significa que nenhum caractere é numérico é falso. O que significa que, se for falso, não entraremos nisso. Em seguida, voltamos ao topo Agora temos um, imprimimos os separadores Caso contrário, numérico é o numérico comum. Não, não é. O que significa que nenhum caractere é numérico é verdadeiro, o que significa que nos aprofundamos nos separadores Os separadores, veja o que vai acontecer com o separador Estrondo. Agora tem um, voltamos ao topo, agora estamos trabalhando com três. Imprimimos os separadores e finalmente temos o coma. Os três numéricos. Sim, é. Não entramos nos separadores com caracteres iguais. Voltamos aqui, bum, boom, seis para o cifrão, imprimimos os separadores O cifrão é numérico? Não, não é, ou seja, não. O caractere é numérico significa que este é verdadeiro, o que significa que entramos na declaração, o que significa que anexamos nossos separadores com o caractere e adicionamos o cifrão Eu vou parar o programa. Quero que você continue com tudo isso e tenha certeza de que entende como está funcionando. Esse é o seu desafio. Antes de sair, eu só quero te mostrar o que aconteceria se eu adicionasse um sinal de igual aqui e não um sinal de mais igual Porque alguns de vocês podem estar pensando o que significa acrescentar usando mais iguais Se eu escrevo Click e executo, essa é a saída que eu obtenho. Eu simplesmente pego o último caractere que não é numérico, o sinal positivo Meu objetivo aqui é somar tudo isso. Quero ter uma coleção desses separadores para poder usá-los no final É por isso que eu adiciono ao separador. Eu pego o separador, digamos que o separador aqui é o coma Eu pego o separador aqui mesmo. É o coma. Eu adiciono a isso o dólar seno. Agora estou em coma. Sinal de dólar. E então eu coloquei tudo isso no separador novamente. Agora, o separador é igual ao seno do dólar. Então eu encontro o ponto e vírgula. Agora lembre-se de que o separador aqui é um cifrão em coma. Eu adiciono o ponto e vírgula e coloco tudo de volta nos separadores Então, agora eu tenho um cifrão com vírgula e ponto e vírgula. Ok, então espero que esteja claro. Muito obrigado por assistir. No próximo vídeo, veremos loops em um intervalo que é um pouco um intervalo que é um pouco diferente da iteração em uma string Então, eu vou ver você no próximo vídeo. Tchau, por enquanto. 35. 3. para loops em um intervalo: Bem-vindos de volta, meus programadores de python favoritos. Neste vídeo, veremos loops em um intervalo Vou criar um novo arquivo python aqui que vou chamar de quatro loops Alcance de sublinhado. Aqui, vou simplesmente dizer que para I no alcance, esse intervalo será de um a 30. Vou simplesmente imprimir aqui o seguinte para substituição de pontos, formato de ponto de campo E então, a propósito, eu não quero usar esse formato de formato. Não tenho certeza se já o usei antes de onde o mudei exatamente. Porque às vezes eu atualizo este curso e esta master class, o que vou usar em vez disso não é o formato, mas dentro dele, pressiono e pressiono Tab, e você verá que um pequeno F é adicionado por trás disso aqui. que nos dá a mesma saída do formato usando o campo de substituição. Mas de qualquer forma, veja a saída que temos. Eu disse que quero que eu esteja na faixa de um a 30, mas ao trabalhar com intervalos, assim como quando estávamos trabalhando com as fatias, depende, mas não incluindo I, começa em um, mas termina em 29. Está bem? É muito importante entender isso. Vamos até, mas não incluímos. E esse é o básico do uso de um intervalo. Por exemplo, eu quero que você adicione uma, vamos também remover uma linha extra. Vamos adicionar um depurador aqui. Vamos clicar com o botão direito do mouse e depurar nosso loop. Aqui, entramos em I é igual a um, I é igual a dois, I é igual E, a propósito, novamente, é claro que você já deve saber que I é apenas um nome arbitrário para nossa variável Você pode chamá-lo do que quiser, assim como fizemos nos vídeos anteriores, onde tínhamos quatro caracteres na mensagem. O nome da variável deve representar o que estamos passando. I neste caso representa índice, ou geralmente em matemática eles usam I, JK ou XYZ Então você pode usar o que quiser, é claro, aqui. Mas, como você pode ver, eu aumenta e imprimimos. Então, estamos fazendo um loop sobre esse intervalo. Estamos produzindo, imprimindo ou executando o mesmo código todas as vezes com um valor diferente que está mudando Isso deve ser muito informativo para você. Espero que tenha entendido o que fizemos aqui. Espero que esteja claro para você. Caso contrário, você tem um pequeno desafio, que é testar alguns intervalos. Então, eu quero que você brinque com os intervalos e eu quero que você experimente com vários intervalos e veja o que funciona e o que não funciona, apenas como uma pequena dica. Por exemplo, você pode usar o intervalo de -5,0. Também recomendo que você use os intervalos É claro que, no próximo vídeo, vamos nos aprofundar nos intervalos sozinhos, mas, por enquanto, quero que você mesmo teste esses intervalos Pause o vídeo agora mesmo e vá para o desafio. Ok, como você conseguiu fazer isso? Aqui, por exemplo, digamos que eu queira começar do zero, clicar com o botão direito do mouse e executar. Lá vamos nós. Começamos do zero, mas também depende, mas não inclui. Se eu quisesse incluir os 30, teria que ir para 31 para que os 30 fossem incluídos. E se eu tentar fazer menos seis aqui, até 31? O que aconteceria? Eu começo com menos seis ou menos Eu começo com menos seis porque o começo está incluído, apenas o final não está incluído Espero que você tenha tentado algumas coisas aqui. Por exemplo, talvez se eu adicionar uma guia extra. Obviamente, isso não faz parte da faixa de quatro ou da manipulação aqui, mas se você tentar adicionar uma guia, verá aqui que há um aviso informando que você inventou algumas coisas Ainda funciona, mas você exagerou em algumas coisas. Sim, isso é o básico. No próximo vídeo, vamos nos aprofundar nos intervalos Mas entender os intervalos é muito importante porque eles não serão o principal caso de uso de nossos for loops, mas ainda são muito, muito importantes Então, você precisa entender como eles funcionam. Muito obrigado por assistir. Espero que tenham gostado. Este foi um vídeo mais curto e no próximo, vamos nos aprofundar nos intervalos Então, mal posso esperar para ver você lá. Tchau, tchau por enquanto. 36. 4. Mais profundamente em intervalos: boas-vindas de volta aos meus desenvolvedores favoritos de Python em um vídeo totalmente novo Neste, examinaremos mais profundamente ou revelaremos , mais profundamente os intervalos Por exemplo, o que aconteceria se eu tivesse esse intervalo? Como você acha que será a saída? Se eu escrevo, clico e corro, ok, essa é a saída que eu obtenho. Então, quando eu não especifico o início, eu simplesmente começo do zero. Você verá que os intervalos são muito semelhantes ou operam de maneira muito semelhante à operação de fatiamento. Se eu não especificar o início, começo do zero. Também podemos fornecer aqui uma etapa, por exemplo, quando tenho três delas, começo do zero, vou para 30 e tenho uma etapa de duas. Qual é a saída? Pense nisso antes de corrermos. Boom, lá vamos nós. Temos 0246. Um boom, boom, boom. Vamos em uma etapa de duas. E, claro, se eu tiver três, bem, deve ser óbvio que vamos para uma etapa de três a seguir. O que aconteceria se eu fizesse o seguinte? Se eu fizer 36, menos dois. Você já deve saber que esta é uma etapa de menos dois. O que aconteceria nesse caso, por favor? Quero que você pense na saída antes de executar isso. Estrondo. Lá vamos nós. Nós retrocedemos Obviamente, temos o 0,30 inicial, temos o final 0,6 e temos um intervalo de menos dois Eu quero que você reserve um tempo e brinque com todas essas expressões e valores e veja o que aconteceria se você adicionasse um passo positivo com um começo maior ou menor, ou qualquer outra coisa Teste alguns intervalos. Brinque. Certifique-se de que você entendeu isso corretamente antes de passar para o desafio a seguir. Seu desafio é usar seu alcance. Então, volte e encontre o arquivo, condições complexas em um projeto anterior. Em seguida, use o intervalo em vez dos operadores para avaliar a condição na temperatura. Então, se você se lembra, criamos um mini mini projeto em que verificávamos a temperatura da nossa GPU e verificávamos se ela era válida para jogar nosso jogo Vou apenas adicionar esse código aqui. Então, vou criar um novo arquivo Python e vou chamar isso da faixa complexa de sublinhado faixa complexa E vou colar esse código aqui, caso você não tenha o código. Se você se lembra, isso é o que tínhamos. E depois também simplificamos a comparação da cadeia. Agora, o que eu quero que você faça é transformar os operadores em um intervalo para ver como os intervalos também podem nos ajudar, não apenas em quatro loops, mas também em declarações if Passe um vídeo agora mesmo e vá fazer o desafio. Ok, como você conseguiu fazer isso? Aqui é muito simples. Podemos simplesmente verificar se a temperatura está na faixa de 2071, por que a configuramos para 71 e não 70 Porque depende, mas não inclui quando escrevo Click e executo, qual é a temperatura da sua GPU Se eu digitar 70, lembre-se de que se estiver entre 20 ou 70, se for igual a um desses valores, podemos continuar jogando. Se eu fizer 71, você pode ver que não consigo jogar y porque 71 não está incluído na faixa. Depende, mas não inclui. E é muito importante entender isso, senhoras e senhores, espero que tenham ordenado No próximo vídeo, veremos aninhados, o que significa que teremos loops dentro de loops Então, será como seção de loop ou início de loop. Se você não entendeu a piada, lamento muito por ter feito isso e também por aquele aplauso Nos vemos no próximo vídeo, onde criaremos loops dentro de loops, por enquanto 37. 5. Aninhado para loops: boas-vindas de volta aos meus desenvolvedores de python favoritos em um vídeo totalmente novo E neste, como eu disse, veremos loops aninhados, o que significa que teremos loops dentro de outros loops Então, não vamos perder mais tempo e vamos começar. A primeira coisa que vamos fazer é ter o exemplo perfeito de um loop aninhado, que é um calendário Então, vou criar um calendário. E por que isso é um exemplo perfeito? Porque temos anos que têm meses, que têm semanas, que têm dias, que têm horas, e você pode começar a pensar nisso. E é um ciclo repetido. Todo ano tem 12 meses. Todo mês tem aproximadamente quatro semanas. E então toda semana tem sete dias. Exatamente. Então, vamos trabalhar nas semanas e nos dias nessa situação. Então, primeiro de tudo, vamos criar as semanas, então vou dizer quatro semanas no intervalo. Esse intervalo será 15. Aqui. Simplesmente imprimirei semana em pontos, substituição, campo e semana se eu escrever Clique e, como você pode ver, obteremos a primeira semana, segunda semana, a terceira semana, a quarta parte do mês Mas agora, e se eu quisesse imprimir os dias dessa semana? Eu adicionaria mais quatro loops aqui que estão aninhados dentro dos quatro loops anteriores Eu direi quatro dias de alcance. E esse intervalo vai de um a oito novamente. Lembre-se de por que estamos usando o 5.8 Porque isso depende , mas não inclui Vou imprimir de volta. E você se lembra do que a barra invertida T faz? Eu quero que você se lembre com muito cuidado. Campo de substituição de barra invertida, desculpe, campo de substituição de dia e O que a barra invertida D faz se eu escrever, clicar e correr? Boom, lá vamos nós. Ele adiciona uma aba ao nosso dia para que possamos ter essa separação bonita apenas por diversão. Também adicionarei uma impressão aqui com esses traços multiplicados por 20 E adicione um espaço ao clicar com o botão direito do mouse em run and boo, pronto Temos a semana um, dia um, dia dois, dia três, dia quatro, dia cinco, dia seis, dia sete, e depois passamos para o segundo dia. Então, como isso está funcionando? Bem, eu não vou te dizer como. Vou mostrar como vou adicionar um depurador e recomendo que você faça isso sozinho, sem E então veja como eu faço isso e explico. Então, vou depurar nosso calendário e começaremos do topo Começamos na primeira semana. Imprimimos na primeira semana e agora estamos nos dias em que temos o primeiro dia, imprimimos no primeiro dia, mas não voltamos ao topo. Não voltamos à semana, em vez disso, voltamos ao loop for atual. Continuamos fazendo isso repetidamente, repetidamente, até chegarmos a sete. E então, quando esse loop termina, a condição aqui não é mais verdadeira. E quando eu digo condição, é apenas a condição na faixa. O que significa que o intervalo é de um a sete, não estamos mais em sete ou ultrapassamos, imprimimos sete, imprimimos os traços E só então voltamos ao topo. Aumentamos a semana, agora estamos na segunda semana e depois voltamos ao dia. E o legal disso é que, na verdade, o redefinimos para um e continuamos fazendo isso. Então, espero que isso seja claramente entendido. Acho que não há muito mais a dizer aqui. Novamente, como sempre, se você tiver alguma dúvida, fale comigo ou com seu instrutor dedicado Faça qualquer pergunta a eles. Eles estão disponíveis para você. Então, espero que você tenha entendido o que está acontecendo aqui. Agora, vou te dar um pequeno desafio. Antes de fazer o desafio, reserve um tempo para entender isso de forma clara e adequada , pois será crucial para a tabela de multiplicação A tabela de multiplicação é outro bom exemplo do uso de loops aninhados Como temos dois números, crie um novo arquivo Python chamado tabela de multiplicação Use loops aninhados para imprimir a tabela de multiplicação de um a nove Sua saída deve ser mais ou menos assim. Um multiplicado por um é 11, multiplicado por dois é E então temos dois multiplicados por 122, por 242 por 36 E você tem que fazer isso para todos os números. Eu quero que você comece a pensar em ciclos aninhados aqui, porque lembre-se, é como nas semanas e dias em que trabalhamos Você pode imaginar que esta é a semana 1.2 no lado esquerdo estão as semanas e, em seguida, os números de um a nove no lado direito são os dias. E, finalmente, temos que multiplicá-los para obter a saída. Então, não tenha pressa. E, claro, isso deve ser de 12 a nove, então todas as nove iterações devem estar lá E também, eu quero que você adicione esses traços. Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Vou criar um novo arquivo Python que chamarei de tabela de sublinhado de multiplicação. Aqui, eu vou dizer quatro no alcance. E o intervalo será de um a dez. Porque lembre-se de que depende, mas não inclui, queremos que os nove estejam lá. Então, lá dentro, vou dizer quatro j no alcance e vai ser de um. Então, aqui vou imprimir que tenho o seguinte campo de substituição. Em seguida, pressiono tab para o preenchimento automático multiplicado pelo campo de substituição j igual ao campo de substituição que multipliquei por j. É aqui que a maioria das pessoas tem dificuldades. É aqui que a maioria das Então, finalmente, onde devemos adicionar a impressão em qual nível? Nesse nível? Talvez algo que eu não tenha mencionado no exemplo anterior no calendário. Essa impressão a que quatro voltas ela pertence? Pertence a este ou a este? Obviamente, ele pertence aos quatro loops seguintes porque não faz parte do bloco de código dos quatro primeiros loops, porque tudo o que pertence a esses quatro loops é indentado Você verá que essa impressão não tem o recuo desse loop Ele tem o recuo desse loop. Por exemplo, quero que você me diga o que aconteceria se eu fizesse essa impressão aqui neste nível. Onde os traços aparecerão? Lá vamos nós. Podemos ver que eles só aparecerão no final porque essa impressão não faz mais parte desses quatro loops. Lá vamos nós. Agora ele aparece no lugar correto. De volta à tabela de multiplicação. Esta impressão pertence a esses quatro laços. Quando escrevo, clique e esta é a saída que recebo. Lá vamos nós. Esta é a nossa tabela de multiplicação. Um multiplicado por 11 por 21 por nove, e depois dois por 22 por 32 por 93 por 13 por sete, etc., etc Lá vamos nós. Então eu espero que você tenha entendido. Espero que você tenha feito o seu melhor. Muitas pessoas falham em criar ou realizar esse desafio, mas se você foi capaz de fazê-lo, significa que está no caminho certo. No próximo vídeo, continuaremos usando o loop frontal e veremos outro caso muito útil. E daremos uma primeira olhada nas listas, que serão aprofundadas na próxima seção, mas teremos que usá-las nessas situações específicas Muito obrigado por assistir e nos vemos no próximo vídeo. Tchau, tchau por enquanto. 38. 6. Usando continue in para loops: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste vamos usar continuum em nossos for-loops e entender o que são Mas as contínuas não são suficientes neste vídeo, porque também veremos listas ou uma pequena olhada no que são listas Portanto, é uma coleção de objetos do mesmo tipo. Agora, como eu disse neste vídeo, vamos abordar apenas as informações superficiais sobre listas. Temos uma seção completa dedicada a listas, casais e tratamento de dados usando essas ferramentas. Mas, no nível da superfície, é uma coleção de objetos do mesmo tipo. Eles podem ser acessados usando um índice, assim como podemos acessar certos caracteres em uma string usando o índice. E eles têm métodos disponíveis para acessar, classificar, pesquisar e modificar. Agora vamos ver a estrutura de uma lista. Parece algo assim. Então, temos uma lista chamada itens de computador e é igual a, e abrimos os colchetes indicando que isso é uma lista Aprenderemos que existem casais que indicam ou são indicados usando parênteses Mas, por enquanto, vamos nos concentrar apenas nas listas que têm colchetes. E você verá que temos esses objetos, às vezes eu me refiro a eles como itens dentro dessa lista e você verá que eles são todos do mesmo tipo. Agora, é claro, mais tarde, quando nos aprofundarmos cada vez mais, entenderemos que eles não precisam ser do mesmo tipo, mas 99,999% das vezes você encontrará listas, derrubadas ou qualquer coisa parecida em sua vida, ou os itens serão Assim como aqui, esta é uma lista de strings com isso fora do caminho Vamos agora testá-los. Aqui, vou criar um novo arquivo Python que vou chamar de concessionária Car underscore Vou criar uma lista de sublinhados de carros igual à seguinte Eu terei BMW, Honda, Ford, Volk, Volkswagen e Volk Swagen Lá vamos nós. Mais uma vez. Sim, finalmente. Então teremos a Ferrari. Então teremos Ad. Esse será nosso último carro aqui. Vamos repetir essa lista de carros, assim como fizemos com a mensagem aqui Podemos fazer o mesmo com nossa lista. Eu vou dizer quatro carros na lista de carros. Vou imprimir que gosto de dirigir meu carro. Se você voltar para os quatro, verá que aqui estamos iterando a mensagem usando a variável de caractere A mesma coisa vale aqui, estamos iterando a lista de carros usando nossa variável de carro Se eu escrever, clicar e correr, obtenho a seguinte saída. Gosto de dirigir meu BMW, gosto de dirigir meu Honda, meu Ford, meu Volkswagen, minha Ferrari, eu E meu Audi. OK. Como eu fiz isso? De qualquer forma, como você pode ver, estamos iterando a lista e imprimindo-a Agora, a próxima coisa que quero fazer é lançar um pequeno desafio para você. Seu desafio será dirigir todos eles, exceto alterar o código para dirigir todos os carros, exceto o Ford. Eu vou te dar uma dica. Se você não quiser a dica, pause o vídeo agora mesmo e vá fazer o desafio Se você quiser a dica, precisará criar uma condição F dentro do loop for, e é basicamente isso Pause o vídeo agora mesmo e o desafio. Ok, como você conseguiu fazer isso? Como dissemos, estamos iterando sobre cada um desses objetos O que eu quero fazer é dentro do circuito for, vou dizer que se o carro for diferente do Ford, só então vou imprimir gosto de dirigir meu carro, se for diferente do Ford. Agora, se você usa um código diferente e ainda tem a mesma saída, parabéns. Caso contrário, quero que você comece a levar esses desafios mais a sério. Não tenha pressa. Mesmo que demore 10 minutos, mesmo que você precise pesquisar na Internet. Se você tentar enfrentar esses desafios sozinho, obterá muito mais benefícios com a solução que eu forneço. Agora, se eu escrever Click e correr, lá vamos nós. Você pode ver que eu gosto de dirigir todos esses carros, exceto o Ford. Mas há uma maneira diferente de excluir um item de ser impresso em uma lista, que é usando o continue aqui Vou mudar essa condição para ser igual ao que você acha que deveríamos escrever aqui? Você deve ter uma dica, que é o nome ou o título deste vídeo É o continuum. Se eu escrever, clicar e correr, você verá que obtenho a mesma saída. O que continuam fazendo aqui? Não vamos teorizar sobre o que o continuum está fazendo e, na verdade, vamos tentar usar um depurador e Primeiro de tudo, começamos com a lista de carros. Aí está. O carro é B, o carro é igual ao Ford? Não, não é. Então, imprimimos, eu gosto de dirigir meu BMW. A Honda não é igual à Ford. Agora, a Ford é igual à Ford. E veja o que acontece. Entramos na condição e agora notamos qual linha de código será executada. Você pode ver isso? Basicamente, o que o continuum faz é evitar totalmente o resto do loop anterior Tudo o mais que estiver sendo descontinuado será ignorado. Tudo o que resta a ser feito nesse ciclo de quatro será ignorado. Alguns idiomas não têm descontinuidade. Você provavelmente nunca vai realmente seguir o continuum durante o desenvolvimento do Python no dia a dia Mas é importante que você saiba que tem acesso a essas ferramentas. No próximo vídeo, veremos algo que é muito mais importante, que é a pausa. E a pausa, ao contrário de continuar aqui, será muito, muito útil. Espero que tenham gostado, espero que tenham entendido e, como eu disse, por favor, comecem a dar o melhor de si nesses desafios. Eles não são apenas para pular, eles não são para você simplesmente olhar para mim como eu resolvo essas soluções Você tem que sair e resolver esses problemas sozinho. Muito obrigado por assistir e nos vemos no próximo vídeo. Tchau, adeus a partir de agora. 39. 7. Usando o break in para loops: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste vamos usar o intervalo aqui. Se mudarmos isso de continuar para uma pausa, o que acontece é que só imprimimos “ Gosto de dirigir meu carro” até chegarmos ao Ford. Como você pode ver, não estamos mais dirigindo nada. E isso é mais útil quando você deseja economizar memória ao pesquisar um determinado item na sua lista. Imagine que você está tentando encontrar o Ford. Depois de encontrar o Ford, basta imprimir as informações ou qualquer coisa. Você apenas fornece o valor, representa esse valor e para de pesquisar na lista, então isso pode ser muito útil. E você verá muitas pausas, não apenas durante as pontuações, não durante esta master class, mas durante toda a sua carreira de programação daqui para frente. Vamos agora criar mais dois objetos de valor aqui. Eu vou dizer, em primeiro lugar, que eu tenho o carro para dirigir e é igual ao da Ferrari Eu realmente gostaria. Então eu vou ter um índice de sublinhado do carro que é igual a não, e vou explicar para você mais tarde por que não estamos fazendo nada Mas antes de fazer isso, ou na verdade, há um vídeo dedicado a entender por que não usamos nenhum aqui. Antes de fazermos isso, quero apenas imprimir algo que ainda não vimos. Esse é o tamanho da nossa lista de carros. Não tenho certeza se já discutimos o comprimento antes, tenho certeza de que não. Mas o comprimento, basicamente, o que ele faz é nos dar o tamanho da lista ou da string que temos. Por exemplo, temos 123456 carros no total. Portanto, o tamanho da lista de carros é seis, e isso não deve ser nenhuma surpresa para você. Esse é o comprimento. Isso é o que o comprimento nos dá. Agora eu quero fazer alguma coisa aqui. Em primeiro lugar, vou comentar esses quatro ciclos. E então aqui eu vou dizer quatro índices no intervalo. E o alcance é o comprimento da lista de carros. Depois, vou verificar se a lista de carros no índice é igual ao carro que eu quero dirigir. Eu vou dizer que o índice do carro é igual ao índice. O que estamos fazendo aqui? Em primeiro lugar, o que isso significa? Se você se lembra, quando tínhamos, por exemplo, aqui de volta aos quatro loops, temos essa mensagem, certo? Posso acessar, por exemplo, uma mensagem na posição 12012345 Digamos que cinco. O que eu ganho? Eu entendo porque tenho 101.234,5 e tenho A mesma lógica se aplica à concessionária de automóveis. Por exemplo, se eu quiser imprimir a lista de carros na posição três, qual é a saída? Pense nisso antes de testá-lo. A resposta seria a Volkswagen exatamente aqui. O que estou fazendo é ter o índice e o intervalo do comprimento da lista de carros, que é seis. Qual é o intervalo acima de seis? É de zero a cinco. O índice muda de 0 a 1 para dois a três. E então eu uso essa variável de índice dentro da lista de carros e obtenho a lista de carros na posição zero. Bmw, eu verifico se é igual ao carro para dirigir. Se for, então eu defino o índice do carro para esse índice. E então, quando eu terminar, vou imprimir, vamos adicionar um campo de substituição aqui. Está na posição de campo de substituição aqui. Nós vamos ter o carro para dirigir. O índice ou o índice do carro. OK. Clique com o botão direito do mouse e corra, e sua Ferrari estará na quarta posição 01234. Perfeito. O que eu recomendo que você faça é ter um mini desafio, não é um desafio oficial. Eu quero que você adicione um ponto de interrupção, e eu quero que você passe por isso por um loop. E eu quero que você entenda claramente o que está acontecendo. E eu também quero que você me diga por que isso não é tão eficiente quanto poderia ser. Clique com o botão direito e identifique o dinheiro aqui. Eu tenho o loop for. Eu começo a entrar, o índice é zero. O que está no índice zero? B, B não é igual ao carro que queremos dirigir. Estamos no índice um. O que temos no índice um? Nós temos a Honda O Honda não é igual ao carro que queremos dirigir. O índice é dois. São quatro. Não é igual à Ferrari, à Volkswagen, não é igual à Agora estamos no índice número quatro. E o que temos no número de índice 401234? Temos a lista de carros da Ferrari no índice quatro, agora é igual à E é igual ao carro que queremos dirigir, que é a Ferrari Sim, é. Entramos aqui, ajustamos o índice do carro para o índice e boo. E agora temos um índice de carros igual a quatro. Perfeito. O único problema é que já encontramos nosso carro, estamos prontos para dirigi-lo, mas ainda entramos nos quatro e continuamos aqui. E isso é um problema porque pode não parecer um grande problema para você, porque, bem, você pode simplesmente dizer, ok, então fizemos uma iteração extra na lista de carros Qual é o grande problema? Qual é o grande problema aqui? A questão é: e se encontrássemos Ferrari na posição número quatro e tivéssemos 10.000 carros, então teríamos que fazer mais 9.996 Tenha isso em mente desnecessariamente. E imagine se cada uma dessas iterações exigisse 0,1 segundo, multiplicado por quase 10.000 , são 100 segundos a mais, acho que se minha matemática estiver correta Ou 1.000 segundos a mais, 1.000 segundos a mais. Então imagine a dor com 1.000 segundos a mais. Desnecessariamente, o que fazemos aqui em vez disso é adicionar uma pausa Agora, se eu depurar isso de novo, a propósito, eu tenho a mesma saída, mas a única diferença é que quando chego ao índice número quatro, eu disse o índice do carro em relação ao índice, eu saio e bum, olha isso Eu não volto mais para o loop for, eu simplesmente saio e não continuo. E se tivéssemos 10.000 carros e encontrássemos a Ferrari na quarta posição, teríamos fugido e não teríamos que esperar por 1.000 segundos extras Então, espero que você tenha entendido como o freio funciona. É uma ferramenta muito, muito útil, especialmente quando começamos a trabalhar com o Y loop, que não será o próximo vídeo, mas será o vídeo depois disso. Então, muito obrigado por assistir e nos vemos no próximo vídeo, onde entenderemos o que é esse. Isso não significa nada. Mas por que o usamos nesse contexto? Te vejo no próximo vídeo. Tchau tchau por enquanto. 40. 8. Por que usar None: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente novo, e neste, veremos por que não usamos nenhum Então imagine que não estávamos procurando minha Ferrari, mas meu BMW Se eu clicar com o botão direito do mouse e correr, o que eu ganho? Eu fico com a posição zero. Não parece muito bom, então não podemos simplesmente usar o índice de carros que obtemos, precisamos adicionar um mais um a ele. Faz muito mais sentido. E acho que podemos ou não ter os espaços aqui. Então agora, está no primeiro, o e não parece bom, mas pelo menos agora temos uma posição melhor. Vamos remover isso por uma questão de clareza. Então, agora, se, por exemplo, eu estou procurando minha Ferrari, bum, aí Está na posição cinco ou na posição cinco ou na posição cinco. Talvez isso fizesse mais sentido na posição cinco. OK. Lá vamos nós. Agora, faz muito mais sentido. Mas e se eu tivesse o lambo? Então, estou procurando meu ambo. Se eu clicar e correr, oh, eu tenho um erro. E o que esse erro diz? Diz que não é do tipo. Portanto, o índice do carro é do tipo. Nada significa nada. É apenas um espaço reservado. Você pode chamá-la se quiser, nenhuma é uma constante que não representa nada e isso nos ajuda a evitar erros como esses. Agora podemos, por exemplo, mudar algumas coisas aqui, criar uma condição. E essa condição será realmente criada por você. Então, você criará uma condição que verifica se o índice de um carro não é nenhum. Imprima uma mensagem com base nisso e adicione uma declaração L com sua própria mensagem impressa. Então, pause o vídeo agora mesmo e vá fazer o desafio Ok. Como você conseguiu lidar com isso? Então, aqui, vou verificar se o índice do carro não é nenhum. Vou imprimir que seu carro está pronto para dirigir. Então, agora evitamos esse problema. Lá vamos nós. Agora, não temos nenhum erro. E vou adicionar uma declaração L aqui que vai dizer imprimir. Desculpe. Não consegui blá Legal. Encontre seu carro para dirigir, clique com o botão direito e corra. Desculpe, não consegui encontrar seu laboratório. Está tudo bem. Não se preocupe. Não se preocupe, sabe? Meus lambos provavelmente em algum lugar. Eu não sei. De qualquer forma, como você pode ver, usar o substantivo é muito importante Agora, alguns de vocês podem estar dizendo, bem, poderíamos ter usado zero. Mas isso não é bom. Ba, como você pode ver, sua lâmpada está na posição número um. Não é nada bom. Agora, alguns de vocês podem ter dito: Por que não usar menos um Bem, como você pode ver, seu ambo está na posição zero, mas você está me dizendo que, espere, isso é porque não temos nenhum aqui porque estamos verificando se não é nenhum, e é por isso que a condição está funcionando E isso é realmente verdade. Agora, poderíamos ter usado menos um, mas em certas condições, você pode encontrar algo assim Você pode ter uma lista de carros menos um. E o que temos se tentarmos isso, lista de carros menos um é o Audi Porque lembre-se, nesta lista, podemos retroceder. Portanto, é apenas uma maneira mais conveniente de usar o n para evitar problemas como esses. Então, espero que você tenha entendido por que isso é tão importante de usar e por que é necessário ter um espaço reservado como Veremos muito mais disso sendo usado no futuro. Em todos os nossos projetos, e é claro, você verá isso muito em sua trajetória de desenvolvimento em Python Agora, para ser honesto com você, todo esse código é meio desnecessário. Existe uma maneira muito melhor de fazer isso ou pelo menos aqui com este for loop. Se comentarmos isso, podemos realmente fazer o seguinte. Podemos dizer se o carro para dirigir está na lista de carros. Podemos dizer que o índice do carro é igual ao índice de pontos da lista de carros. Carro para dirigir. E vamos examinar mais esse código, e eu o entenderei em um nível muito mais profundo mais tarde, quando aprendermos sobre listas e tuplas ou na próxima seção, e pronto Agora está me dizendo, desculpe, não conseguimos encontrar o lambo. Mas se eu estiver tentando dirigir meu Ford, devemos ver se meu Ford está na posição número três. OK. Então, basicamente, o que isso faz aqui. Em primeiro lugar, ele verifica se o carro para dirigir está na minha lista, que significa que ele percorre toda a lista e compara cada valor ou cada item e vê ou verifica se temos o carro que eu quero dirigir E se isso acontecer, definimos o índice do carro como o índice de pontos da lista de carros, que se você passar o mouse sobre ele, ele nos diz que retorna o primeiro índice de valor, que significa que, digamos que estamos procurando um Ford Enviamos o Ford como o carro para dirigir até esse índice e ele nos fornece o índice e define como o índice do carro aqui. Então, espero que tenham gostado Este é um código um pouco mais avançado. Vamos ver isso na próxima seção. Mas espero que tenham gostado desse vídeo. Espero que você tenha entendido por que usar n é tão importante. E no próximo vídeo, veremos loops que são muito semelhantes a quatro loops, exceto que é um loop condicional Então, eu vou ver você no próximo vídeo, por enquanto. 41. 9. Introdução aos loops de while: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, faremos uma introdução aos while loops Em primeiro lugar, o que é um loop de arame em Python? Semelhante a quatro loops, ele executa um bloco de código um certo número de Mas a diferença desta vez é que, em vez de determinar o número de vezes com antecedência, esperamos até que uma determinada condição seja atendida Para que possamos sempre refazer o laço de arame até que essa condição seja atendida e, em seguida, pulemos para fora do laço de arame. Então, vamos dar uma olhada na estrutura de um laço de arame. Dizemos que, embora uma determinada condição seja verdadeira, fazemos algumas coisas, executamos alguns códigos e continuamos fazendo isso enquanto essa condição é verdadeira. Então essa é a ideia. Embora uma determinada condição seja verdadeira, nós executamos. Portanto, não sabemos quantas vezes esse loop de arame será executado. Ao contrário de quatro loops, em que temos uma quantidade predeterminada de vezes em que executaremos o código em um loop de tempo, não sabemos Continuaremos fazendo esse ciclo até que uma determinada condição seja atendida. E vamos ver como isso vai ficar. Em primeiro lugar, vou voltar ao meu código aqui e criar um novo arquivo Python que vou chamar de livro Wi loops Vou te lançar um desafio. Não onde não seja um desafio selvagem, é um simples desafio de quatro. Eu quero que você crie um loop de quatro que itera em um determinado intervalo Eu quero que você imprima o índice em cada iteração, e é basicamente isso Passe o vídeo agora mesmo e vá fazer o desafio. Ei, bem-vindo de volta aqui para I no intervalo 26, vou imprimir a guia I igual a I para adicionar automaticamente o F por trás dela, que nos permitirá imprimir de zero a Novamente, já vimos isso antes. Você deveria ter feito esse desafio com muita facilidade. Agora, o que eu quero fazer é converter isso em um Wiloop para que você possa ver como as coisas funcionam Em primeiro lugar, sempre que estamos trabalhando com um loop y, sempre precisamos ter uma condição ou um objeto com o qual começamos. Aqui, você pode ver que configuramos j20. Vamos dizer que, embora j seja menor que 26, essa é a condição que estamos esperando. Vou imprimir J igual ao campo de substituição J. Agora, se eu escrever o clique e correr, o que você acha que vai acontecer? Bem, como você pode ver, esse loop continua. Qual é o problema aqui? Bem, o problema é que J permanece zero, certo? Há um aumento de J, nada alterando o valor de J em nenhum lugar. E o que acabamos com é um loop infinito. Agora, geralmente loops infinitos são extremamente perigosos e são a principal causa da falha de todos os programas Mas, felizmente, isso é Intellij. Ele tem uma proteção embutida para coisas assim, o que significa que nunca será infinito. Ele diminuirá a velocidade e continuará produzindo essa saída. Mas nunca queremos ter isso. Nunca queremos ter um circuito de fio infinito, e isso pode ser um grande problema. Portanto, precisamos ter alguma maneira de alterar a condição dentro desse laço de arame. Então, temos que ter aqui j mais igual a um. Agora, quando eu escrevo, clique em, você verá que paramos em 25 e começamos com j em zero. Essas são as coisas que sempre precisamos observar ao trabalhar com um loop y. Primeiro de tudo, temos que ter a condição inicial aqui. Temos j igual a zero. Você não pode iniciar seu loop y sem essa condição. É claro que, mais tarde, quando expandirmos esse exemplo, veremos mais e mais disso. Mas essa é a linha principal que você precisa seguir ao trabalhar com um loop Y. Em segundo lugar, você sempre precisa ter algum tipo de código dentro do seu loop Y que alterará sua condição para falsa. O que significa que J agora é menor que zero. Menos de 26, é igual a zero. Então, imprimimos J e aumentamos J em um. Então, de novo, e de novo, e de novo e de novo, até chegarmos a 25. E quando J é igual a 25, aumentamos em um, torna-se Quando voltamos aqui e verificamos, 26 é menor que 26? Não, não é, é igual a 26. E é por isso que saímos do loop Wi, porque essa condição não é mais verdadeira aqui. Embora uma determinada condição seja verdadeira, fazemos algumas coisas e executamos alguns códigos. Quando essa condição não é mais verdadeira, saímos do nosso circuito. Esse é o grande problema dos while loops. É exatamente como quatro loops, com algumas ressalvas adicionadas Ou o que significa que não temos um número predeterminado. É claro que, neste caso, temos, mas às vezes as condições serão diferentes. Acho que, na minha opinião, embora os loops sejam talvez mais importantes do que quatro loops, eles são úteis em muito Eles são mais dinâmicos. Então, vamos adicionar um depurador. E eu quero que você faça isso sozinho e depois volte para o vídeo. Então, vou clicar com o botão direito do mouse e depurar. E, na verdade, deixe-me colocar isso cinco porque eu não quero passar por todos esses números. Então, vou depurar o código. E vamos ver o que acontece. J aqui, você pode ver que é igual a zero, enquanto j é menor que cinco. Entramos, imprimimos, voltamos ao topo. Agora observe para onde estamos indo. Nós mudamos o J. Agora J é um, a condição ainda é verdadeira. Um ainda é menor que cinco, J 2j3j4. Agora J tem cinco anos. Se entrarmos no circuito de arame, ele o avalia exatamente como uma declaração if normal e não está certo, então simplesmente pulamos para fora dele Senhoras e senhores, esta é sua introdução ao why loops No próximo vídeo, vamos nos aprofundar nos circuitos de arame Vamos ver como podemos usar o freio e por que esses dois pares, o laço de arame e o freio, são uma força tão poderosa. Te vejo no próximo vídeo. Tchau, tchau por enquanto. 42. 10. Mais profundamente em loops while: Bem-vindos de volta, meus programadores de python favoritos. Neste vídeo, vamos nos aprofundar nos loops selvagens Antes de continuarmos e criarmos nosso novo projeto, que é coberturas de pizza, nosso miniprojeto, precisamos entender algumas coisas que estão acontecendo aqui Embora já tenhamos abordado isso, acho importante examinarmos mais de perto para entender adequadamente o que está acontecendo. Então, primeiro de tudo, como dissemos antes, sempre precisamos inicializar Sempre precisamos ser capazes de mudar a condição aqui. E também precisamos ter certeza que essa condição realmente termine. Agora, com essa situação, garantimos que, quando for enquanto ou enquanto J for menor que cinco, continuaremos passando por isso. Agora, alguns erros que podem acontecer. Por exemplo, se você tiver aqui o deslocamento J na guia Shift para remover uma guia. Aba. Para adicionar uma guia extra. Você verá aqui, alguém pode estar olhando para isso e dizer, bom, quero dizer, estou aumentando J, qual poderia ser o problema? O problema é que você está aumentando J fora do bloco de código do nosso loop. Portanto, é muito importante que você saiba que o J está dentro, que a condição está mudando por dentro. Outra coisa que você verá mais tarde é que às vezes podemos dizer que é verdade. Se tivermos a verdade, significa que continuaremos fazendo isso para sempre. E você pode estar me dizendo, ok, como é isso para sempre? O que você quer dizer com “para sempre”? Quero dizer, para sempre. Eu continuarei aumentando para sempre. E como podemos parar com isso? Bem, em situações como essas, teríamos uma condição aqui que diria que se j for menor que, ou espere, se J for maior que, sei lá, 12, quebraríamos. Se eu escrever, clique e corra, bum, aí está. Quando chegamos a j igual a 12, essa condição se torna verdadeira Ou, na verdade, quando j é igual a 13, porque 12, na verdade imprimimos isso, j mais é igual a um, e boom, agora temos esse, é 13 e partimos Vamos lá, porque 12 não é maior que 12. É igual a 12. Você pode dizer maior ou igual a. E nessa condição, pararíamos às 11. Essas são coisas com as quais você pode brincar. Eu recomendo que você brinque com essas condições aqui para entender adequadamente. Mas, como eu disse, a verdade e a pausa funcionam incrivelmente bem juntas E veremos mais disso na próxima lição. Mas, por enquanto, vamos nos aprofundar um pouco mais. E vamos começar a criar nosso pequeno projeto aqui , que será a pizza underscore toppings Então, vamos ter algumas coberturas disponíveis. disponíveis E eles serão iguais aos seguintes. Vamos ter, e eu apertarei Enter para que tenhamos mais espaço, pepperoni duplicado com controle D conheça as bolinhas de queijo, a maior, uma de todas, a mais polêmica , abacaxi O que você acha que o abacaxi deveria estar na pizza? É uma pergunta que eu faço aos alunos o tempo todo. Deveria ou não deveria ser? Eu, pessoalmente, não me importo. Por que não comer abacaxi? O tomate também não está nas pizzas? Tomate não é uma fruta? Esse também é um tópico muito controverso. Para ver o que eu fiz lá, vou criar o tópico escolhido e vou configurá-lo como apenas uma string vazia. Agora, queremos continuar pedindo uma cobertura ao cliente , desde que ele não escolha uma das coberturas não disponíveis Para isso, vou te lançar um desafio. Seu desafio é criar um laço de arame. Quero que você crie um laço de arame que continue solicitando uma entrada. A entrada só deve parar quando a cobertura estiver nas coberturas disponíveis Você tem que imaginar qual deve ser a condição desse laço de arame. Continuaremos executando o bloco de código que contém a entrada, enquanto a cobertura escolhida não está nas coberturas disponíveis E uma dica para você é que a entrada deve estar dentro do bloco de código wild loop E eu deveria ter avisado você sobre a dica, mas esse é um desafio bastante difícil Muito raramente alguns estudantes enfrentam esse desafio. Acho que uma dica é necessária. Além disso, a condição deve ser a cobertura escolhida, não no vídeo positivo de cobertura disponível Neste momento, eu te dei dicas mais do que suficientes. Se você não entendeu as dicas e conseguiu fazer isso sozinho, parabéns, você está se saindo muito bem Se você precisou da dica e conseguiu realizá-la, ótimo Se você usa as dicas e ainda não conseguiu criá-las, recomendo que se concentre mais nas coisas em que estamos fazendo (vídeo positivo) no momento e faça o desafio Bem vindo de volta. Então, primeiro de tudo, precisamos dizer que, embora, quero dizer, essa seja a parte mais fácil, isso deve ser feito de forma bastante simples o sublinhado da cobertura escolhido, não nas coberturas disponíveis Vou dizer que a cobertura escolhida é igual à entrada, escolha uma cobertura para sua pizza Então eu vou dizer, espero que você goste de campos de reposição, cobertura de campo substituta escolhida em sua pizza Agora vou clicar com o botão direito do mouse e vou correr e escolher uma cobertura para sua pizza Eu quero tomates, eu batata. Ok, posso comer um pouco de queijo? Sim, lá vamos nós. Espero que você goste de queijo na sua pizza. Portanto, embora a cobertura escolhida, que está aqui, não esteja nas coberturas disponíveis, continuaremos fazendo essa pergunta até que o queijo esteja na cobertura disponível, o que significa que toda essa O que significa que pulamos e imprimimos, espero que você goste de cobrir sua pizza Então, espero que você tenha entendido o que está acontecendo aqui. Vamos testá-lo novamente. Se, por exemplo, digitarmos almôndegas, bum, aí está As almôndegas estão disponíveis nas coberturas disponíveis, ou fazem parte das coberturas disponíveis, o que significa que podemos realmente selecioná-las, significa que podemos fazer com que essa condição e podemos pular Como você pode ver, usar laços de arame é muito mais dinâmico do que usar um laço dianteiro Por exemplo, não podemos criar um loop frontal para lidar com algo assim. Não sabemos de antemão quantas vezes queremos pedir a cobertura Continuaremos perguntando, desde o cliente não selecione uma das coberturas disponíveis Então, muito obrigado por assistir. Espero que você goste. E no próximo vídeo, aplicaremos a força e a potência do freio às nossas presilhas de arame Então eu vou te ver então. Tchau, tchau por enquanto. 43. 11. Interaja em um loop de alça, espaço: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos quebrar um ciclo de tempo. Já vimos como funciona uma quebra em um loop de Wile, mas vamos nos aprofundar um pouco mais Em primeiro lugar, o que queremos fazer é dar ao nosso usuário ou cliente a capacidade de sair do processo de escolha da cobertura Obviamente, se eles estão comprando algum tipo de pizza e digitam algumas coberturas indisponíveis, não queremos forçá-los a continuar Queremos dar a eles a capacidade de desistir. Então, o que vamos fazer é aqui, depois de escolherem uma cobertura dentro do laço de arame, eu vou dizer que se a cobertura escolhida é igual a sair, então vou imprimir adeus E então vamos sair. Clicamos e eu corro, entramos na loja como se eu quisesse tomate, eu quero batata, eu quero um pássaro, eu quero frango. Não sei por que eu disse pássaro. Eu quero um pouco de carne. Como você pode ver agora, o cliente fica tipo, ok, sabe o que? Não quero que sua pizza se adeus, desista. Nós podemos simplesmente sair. Isso nos diz adeus. Então, o que diz? Espero que você goste de parar de comer sua pizza? Quero dizer, quem gosta de parar de comer sua pizza? Ninguém sabe. Mas antes de corrigirmos esse problema, há outro problema que precisamos corrigir. E isso é, se alguém está fazendo batata tomate, e então você sabe qual variedade essa pessoa digita e desiste. Você sabe, desista, desista. Isso não permite que eles desistam. Se eles digitarem e desistirem, isso não permitirá que parem. E pior ainda, se eles digitarem queijo , não está funcionando tão bem. Por quê? Como cheese tem maiúscula, quit tem Q maiúsculo. E estamos comparando esses dois valores ou variáveis de string O caso é muito importante aqui. Só podemos selecionar queijo se tivermos letras minúsculas. Se tivermos até mesmo uma letra maiúscula ou qualquer letra, como você pode ver, ela não se registra. Precisamos corrigir isso. E quando digo “nós”, quero dizer, porque você precisa usar uma caixa dobrável, certifique-se de que podemos sair quisermos, sem ter que nos preocupar com a capa. Agora, eu tenho uma dica aqui que indicará como fazer isso, mas eu recomendo que você poste o vídeo agora mesmo e faça uma pesquisa para descobrir como fazer isso Existem diferentes maneiras de fazer isso, dobrando três casos de uso para um. Agora, por meio de sua pesquisa, você pode encontrar algum método diferente Ambos funcionam. Use o que quiser. Publique o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? O importante aqui é usar a dobra da caixa aqui mesmo sobre o assunto. Vamos usar o estojo dobrável e agora eu clico com o botão direito. E se eu digitar quit no intervalo com todas as letras maiúsculas, ele realmente sai do programa Agora, o problema. Agora, alguns de vocês podem ter encontrado mais baixo, o que diminui tudo Ambos bons, ambos são iguais. Eu prefiro usar estojo dobrável. Se executarmos isso novamente e, por exemplo, eu digitar queijo, você verá que ainda não funciona. O que devemos fazer aqui? Exatamente? Podemos usar o estojo dobrável aqui. Agora, se eu clicar com o botão direito e digitar queijo, boom. Como você pode ver, temos isso funcionando. Mas há uma lição muito importante aqui que podemos aproveitar, embora dois métodos funcionem da mesma forma. E eu não estou falando sobre o caso de todas as palavras mais baixas você pode usar a que quiser, é a mesma coisa O que estou falando é que, embora possamos adicionar uma dobra de caixa aqui e uma dobra de caixa aqui para que funcione, melhor maneira é adicionar uma única dobra de caixa aqui, uma única caixa caindo na entrada. Agora, se eu executar isso, você verá que eu posso parar, eu posso selecionar queijo. Em vez de usar dois estojos, posso usar apenas um. E você verá que não é capital, o que parece ainda melhor na produção. Você precisa começar a pensar em eficiência e eficácia. Embora você possa usar duas dobras de estojo, não é tão eficiente quanto usar uma única Agora, é claro, esse caso aqui não vai mudar o mundo. Ainda assim, quando você está economizando alguns milissegundos em um loop, isso faz toda a diferença Eu quero que você realmente se concentre nessa ideia e pense sobre ela na próxima vez que estiver tentando escrever qualquer programa de codificação Agora, obviamente, ainda há um problema aqui: na verdade, paramos de comer pizza e não estamos nada bem. Não se preocupe, voltaremos a isso mais tarde, quando aprendermos sobre algo chamado Ls em um loop. E nos vemos no próximo vídeo. Tchau, tchau por enquanto. 44. 12. Gerador de números aleatórios e importação: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, veremos geradores de números aleatórios e também apresentaremos uma introdução à importação Se você se lembra, criamos um jogo de adivinhação há algum tempo que envolvia adivinhar a idade de Nicholas Flameles Então, vamos usar o mesmo cliente potencial ou o mesmo exemplo, mas vamos expandi-lo porque, como você lembra, quando estávamos trabalhando com a era de Nicholas Flamel, já sabíamos qual era a idade já sabíamos qual era a E tivemos uma quantidade muito limitada de tentativas que podemos aplicar. Agora vamos ter uma quantidade infinita até finalmente consegui-la. Além disso, a idade será aleatória. Vou criar um novo arquivo Python aqui que vou chamar de Nicholas Flamel E bum, vou clicar com o botão direito em Nicholas Flamel e fechar outras abas que fechará todas as outras guias e todos os outros projetos E fique com este. Em primeiro lugar, vou importar aleatoriamente. Quando eu faço isso, significa que estou importando algo chamado módulo O aleatório tem uma biblioteca inteira e você pode até mesmo manter o controle e clicar em aleatório para abrir essa biblioteca. Agora, quando digo biblioteca , são algumas linhas de código de algumas, talvez quase 1.000 linhas de código. E como você pode ver aqui, temos classes e funções e muitas, muitas coisas que podemos usar aleatoriamente. Em vez de digitar tudo isso apenas para usar maybe e range, por exemplo, podemos simplesmente importar aleatoriamente e agora temos acesso a tudo o que está nesse aleatório Um módulo é algo que já está pré-criado, pré-codificado para que possamos usar Em seguida, vamos criar esse he real, teremos o sublinhado h real igual a um ponto aleatório e em 120, se eu segurar o controle e ir para rand int, você verá que abrimos o pi aleatório, o módulo que acabamos de importar, e você pode ver que esse é o rand em que estamos usando igual a um ponto aleatório e em 120, se eu segurar o controle e ir para rand int, você verá que abrimos o pi aleatório, o módulo que acabamos de importar, e você pode ver que esse é o rand em que estamos Deixe-me encontrar a função. Onde está o controle? Vamos tentar encontrar o aleatório, boom, aí está, retorna um número inteiro aleatório Deixe-me abrir isso, na verdade, deixe-me fechar isso. extremidade Rand retorna um número inteiro aleatório no intervalo B, incluindo ambas as Então, isso é algo muito importante de entender. Quando escrevi 120, isso significa que o 20 está incluído, então vamos obter um número aleatório 1 a 20. Ambos serão incluídos Antes de continuarmos, preciso fornecer o H mais alto possível, e vou te dizer o porquê. O maior sublinhado H será 20 em vez de 20. Aqui mesmo. Vou digitar com o H. Em seguida, vou imprimir o que está errado, aqui está o que é Flames Weasley e vou dar esse indicador onde o jogador digita o resultado, ou na verdade, apenas temos uma impressão aqui, teremos a entrada em teremos a entrada Peço desculpas. Aqui vamos dizer que está entre uma e a maior idade do usuário, porque lembre-se, esse é um número aleatório. O usuário precisa ter alguma indicação, apenas para nosso próprio bem, para que não passemos horas tentando adivinhar isso. Vamos imprimir a idade real. Isso, é claro, será simplesmente para testes. Agora que imprimimos ou pedimos ao usuário que nos fornecesse o nome, vou lhe dar um pequeno desafio. Agora você já tem o código, então isso não deve ser um desafio muito difícil. Tudo o que você precisa fazer é criar um laço de arame que continue solicitando informações aos nossos jogadores ou ao nosso jogador até que ele tenha a idade correta Mantenha a instrução F dentro do loop Wi e teste se o jogador deve subir ou descer. Passe o vídeo agora mesmo e vá fazer cada desafio. Ok, bem-vindo de volta. Qual é o nosso objetivo? Precisamos criar um laço de arame que continue solicitando uma entrada ao jogador enquanto sua suposição não está correta. que significa que a condição deve ser quando a suposição é diferente da verdadeira H. O problema aqui é que ainda não temos uma suposição. E é claro que isso é natural porque, como dissemos, sempre que estivermos trabalhando com um laço de arame, precisamos inicializar a suposição e, aqui, a suposição será nenhuma E vou compactá-los um pouco porque estão em todo lugar. Lá vamos nós. Embora a suposição seja diferente do H real, essa é a primeira coisa em que você deve pensar a seguir aqui. Mantenha a declaração dentro do laço de arame, ok? Teste se o jogador deve subir ou descer, ok? A próxima coisa natural a fazer é realmente obter a suposição. Então, vamos dizer que adivinhar é igual à entrada. É isso mesmo. Teremos a entrada e apenas um pequeno indicador aqui. Mas o problema com isso é que o H real é um número inteiro aleatório E quando fazemos essa entrada, é uma string, precisamos convertê-la em um número inteiro antes de podermos compará-la com o H. Agora que temos isso, vamos dizer que se a estimativa for igual ao H real, devemos imprimir, você adivinhou corretamente, dez pontos para a porta griffin Lá vamos nós. Caso contrário, vamos verificar se a suposição é menor que a real. Ele dirá, por favor, adivinhe L maior , ou então , neste caso, podemos simplesmente usar um L. Oh, desculpe, imprimir. Por favor, adivinhe abaixo, está correto? Sim, está correto. Lá vamos nós. Agora, se eu escrever, clicar e executar o que é Flamel, 12 anos, adivinhe mais alto, 13141615 Lá vamos nós. Você adivinhou corretamente, dez pontos para Griffin Door E, como você pode ver agora, temos uma quantidade infinita de tentativas, ao contrário de antes, onde tínhamos duas ou talvez três, não tenho certeza absoluta. Mas agora nosso código funciona 100% e, na verdade, é um bom jogo. Na verdade, é um jogo que você pode dar a alguém para jogar. Não é como se eles tivessem apenas uma ou duas suposições, eles têm palpites infinitos até finalmente conseguirem Agora, se você ainda não fez o desafio, porque foi um desafio difícil, admito que quero que você faça o mini desafio que vou lhe contar agora. Quero que o jogador possa sair do jogo se pressionar o número zero. Como pararíamos o jogo se alguém pressionasse zero? Vídeo positivo no momento. Bem, você não precisa, mas eu recomendo que você faça isso aqui, simplesmente em qualquer lugar que você quiser. Você pode dizer que se G é igual a zero, o que fazemos fora? Má sorte, pare agora. Clique com o botão direito e execute. 101126 00:00 P.M. Bloqueio rígido, e Muito obrigado por assistir. No próximo vídeo, vamos começar um novo grande projeto, que será o High Low. Vamos aprender um algoritmo especial apenas para esse projeto de altíssimo nível. No próximo vídeo, vamos apenas configurar as coisas. Em seguida, aprenderemos o algoritmo de pesquisa de vínculo e criaremos um jogo muito bom, no qual criaremos uma espécie de IA Não é uma IA completa, mas será um programa que adivinhará o número em que você está pensando em menos de dez tentativas. Quão legal é isso? Então, muito obrigado por assistir e nos vemos no próximo vídeo. Tchau tchau por enquanto. 45. 13. Alto-baixo: Bem-vindo de volta aos meus programadores de Python favoritos. Neste vídeo, vamos configurar nosso projeto High Low. Vamos continuar e criar um novo arquivo Python. Novo arquivo Python. E vou chamar isso de livro High underscore low. Vou encerrar isso por enquanto. E eu vou digitar o seguinte. Em primeiro lugar, a baixa é igual a um, a alta será igual a 1.000. Vamos imprimir primeiro, o seguinte. Vamos dizer que escolha um número entre baixo e esperanças altas. Em seguida, teremos a entrada, que será apenas pressionar qualquer tecla para iniciar o jogo. Pressione qualquer tecla para iniciar o jogo. Na verdade, digamos que pense em um número. Pense em um número de 1 a 1 mil. Agora, o jogador do nosso jogo vai pensar em um número de 1 a 1 mil O PC ou o computador tentarão adivinhar esse número. Com um pouco de ajuda. Vamos dizer que, embora seja verdade, vou dizer que o sublinhado por sublinhado para PC e o que é isso? A estimativa por PC é igual a baixa mais alta menos baixa dividida por dois Agora você pode estar pensando, espere, Michael sub sub sub, que diabos é isso, não se preocupem, meus colegas programadores Vou explicar tudo no devido tempo, mas, por enquanto, obteremos a entrada de sublinhado alto e baixo e ela será igual à entrada Esse é o computador falando conosco. Eu adivinhei o campo de substituição. Então, aqui, eu também direi que pressione L para adivinhar a região lombar. Aqui, também adicionaremos uma barra invertida N porque queremos ir para a próxima linha e depois H para adivinhar mais para trás, ver se a suposição estava correta E, claro, aqui vamos substituir a adivinhação pelo PC. E essa é a entrada que está chegando. Vou usar maiúsculas e minúsculas, caso o usuário tente pressionar maiúsculas, maiúsculas ou maiúsculas Sempre temos essas opções. Em primeiro lugar, o jogador, que sou eu e você, ou quem está jogando esse jogo, pensará em um número entre o baixo e o alto, que é 1,1 mil Em seguida, eles pressionarão uma tecla para iniciar o jogo. Então, eles pressionam qualquer tecla e iniciam o jogo. Assim, eles podem começar com o laço de arame. Temos essa equação que vou explicar no próximo vídeo. E então temos a entrada alta-baixa. Acho que essa é a suposição do PC depois de fazerem essa equação. Meu palpite é esse palpite. Então, digamos que você esteja pensando em um número, 800. O PC adivinha 500, você precisa dizer L para adivinhar mais baixo, H para adivinhar mais alto e ver se eles acertaram o número Em nosso exemplo. Se, por exemplo, o jogador estava pensando em 800 e o PC adivinhou 500, então o jogador deveria dizer H. Para que o PC possa adivinhar mais. Se o PC adivinhar 800, o jogador diz C, ele adivinhou corretamente Se o PC pensar ou adivinhar 900 , o jogador diz que L adivinhe menos Agora, o que resta a fazer é realmente criar essas condições. E quando digo que é hora de criar essas condições, isso significa que você deve definir as condições Lph Primeiro, crie um F e um Lip para cada uma das entradas. E as entradas das quais estou falando, é claro, são LH e C. Você não precisa escrever nada dentro, apenas certifique-se de verificar as entradas no Mantenha-os vazios. Vamos adicionar o código mais tarde. Se quiser, você pode adicionar algo chamado passe no interior. Basta digitar BSS e ele o ajudará, especialmente se você tiver erros, mas não se preocupe com isso As três opções são L para adivinhar mais baixo e H para adivinhar mais alto e ver se a suposição está correta. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Esse deve ser um desafio bem simples. Digitamos F, a entrada alta/baixa é igual a h. Então, aqui vamos passar. O que o passe nos permite fazer é escrever essa declaração if porque uma declaração if, deixe-me remover isso, você verá. E passamos o mouse sobre o erro no esperado ou ele apenas diz que está esperando algum código Você não pode simplesmente deixar suas declarações if e seus loops vazios Você pode adicionar um passe apenas como um espaço reservado temporário. Se a entrada alta-baixa for H, L alta-baixa, a entrada alta-baixa é igual a L pass. E finalmente, live high low é igual a C. Mas, finalmente, peço desculpas, talvez também precisemos de outra coisa aqui, caso eles escrevam algo completamente diferente Mas, por enquanto, vou mantê-lo como está. O que? Vamos adicionar o resto agora. E eu vou imprimir Escolha um dos seguintes LH ou C com alguns pontos de exclamação Lá vamos nós. Se eu escrever, clicar e correr, pense em um número, 1-1 mil, pressione qualquer tecla para começar Basta pressionar Enter. Achei que 500 Se eu bater em L, nada acontece. Se eu bater em H, nada acontece. Se eu pressionar, nada acontece, simplesmente passamos pelo circuito selvagem novamente. E, finalmente, se eu acertar três, por exemplo, ele nos diz: por favor, escolha um dos seguintes LHC Mais uma coisa aqui é que eu gostaria de adicionar um espaço para que não fique abarrotado com o correto próximo a Ok, então também aqui se adicionarmos, então vamos ver como isso ficaria. Eu só quero ter certeza de que a saída parece boa. Então, pressione qualquer tecla na borda. Ok, 12 talvez. Ok, então eu acho que isso ficaria muito bom. Ok, vamos lá. Agora , pelo menos, sabemos onde está o aviso para pressionarmos a tecla. Senhoras e senhores, acabamos de configurar as coisas. Essa parte do código deve ser muito simples para você entender. Essa parte do código também deve ser muito simples de entender. A única coisa estranha está aqui. E isso fará parte do algoritmo de busca binária que vamos aprender. No próximo vídeo, nos vemos então. Tchau, adeus a partir de agora. 46. 14. Algoritmo de busca binária: boas-vindas de volta aos meus programadores de python favoritos a um vídeo totalmente novo e meio difícil, no qual precisarei de sua total concentração Talvez você precise assistir a este vídeo várias vezes antes de compreender totalmente o algoritmo de busca binária, mas esse é o nome do jogo Você sempre tem que me mostrar total concentração, porque eu sempre preciso que você esteja certo. O que é algoritmo de busca binária? Vamos imaginar que temos uma aula agora. Temos oito estudantes, acho que sim, oito estudantes. Mas vamos imaginar que temos 50 ou 100, ou 1.000 ou 1 milhão. Então, temos essa adorável professora que quer distribuir boletins, então ela tem todos os boletins em ordem. Temos Abby Ben Sell, Pat, R, S, V, Z, então todas estão ordenadas em ordem alfabética Então, o que queremos fazer é começar a distribuir esses boletins. Então, digamos que queremos dar van ou Sam ou quem quer que seja. Digamos que alguém desses três aqui, talvez. Digamos que van. Queremos dar a Van o boletim escolar. Como o professor faria para encontrar a van? Bem, o professor sabe que todos eles estão ordenados em ordem alfabética O que a professora pode fazer é começar a matar Abby, depois Ben, depois vender, depois Pat, e começar a usar começar a matar Abby, depois Ben, depois vender, depois Pat, um nome vez até que ela finalmente chegue a Van Agora, isso não é um grande problema porque temos apenas oito alunos. Mas, novamente, imagine se tivéssemos 1 milhão e Van estivesse na posição 600.000 ou algo assim 600.008 Então imagine que o professor tenha que passar por cada 1.600.000,7 vezes Não é muito prático. E é claro que estou levando as coisas ao extremo, mas existem situações como essa. Como, por exemplo, tentar adivinhar um número de 1 a 1 mil. Então, o que o instrutor faz em vez disso é algo chamado algoritmo de busca binária E o algoritmo de busca binária é algo que fazemos diariamente mesmo sem saber que estamos fazendo isso. Em vez disso, o que o instrutor faz é cortar os boletins pela Então ela pega Abby Bansal e Pat para um lado e lê Sam Van Zac Agora ela não seleciona os números, ela apenas os separa em duas pilhas E então ela olha o sobrenome na primeira pilha. Então ela vê Pat, então ela pensa, ok, então P é a última O que significa que não tem como aquela van estar na primeira pilha Então ela descarta a primeira pilha. Ela é tipo, ok, ótima. Isso é incrível. Agora vamos procurar Van. Ela faz a mesma coisa novamente com esses boletins. Então ela descarta Stan Sam. Opa. E então ela vê Van e Z. E ela fica tipo, oh, lá vamos nós. Nós temos uma van. Então, em vez de ter que passar por Abby One Bend para vender três apartamentos 45 Sam, seis Em vez de ter que ler seis boletins, tudo o que o professor precisava fazer era descartar a primeira metade da pilha e depois a segunda metade da Então, ela precisou de apenas duas tentativas para finalmente encontrar a van. E a mesma lógica se aplica se tivermos milhares de estudantes, assim como temos em nosso exemplo da alta baixa de 1 a 1 mil Em vez de o computador ter que adivinhar, digamos que você estivesse pensando no número 800. O computador começará com uma estimativa de 500, então ele se dividirá ao meio. O que você pode fazer é criar um programa que apenas adiciona um a cada vez. Então 501, 5025035004567. E imagine se o jogador estivesse pensando em um número, digamos 825 O computador precisaria adivinhar e o jogador precisaria pressionar 800 ou não, na verdade, 328 vezes 500501502503 Imagine que isso levaria muito tempo. E isso não é prático. E não é um jogo divertido, não há como pensar nele. Mas se usarmos o algoritmo de busca binária, podemos tornar nossa vida muito, muito mais fácil. E é daí que vem a equação, porque ela sempre corta no meio. Se eu te mostrar, você verá que essa equação sempre tem qualquer suposição que temos, olha, temos 1,1 mil, então adivinhamos 500. E você verá isso melhor quando começarmos a realmente implementá-lo. Mas agora eu criei um exemplo em pequena escala para compreender totalmente o algoritmo de busca binária Agora, novamente, agora eu preciso de sua concentração total. Largue o telefone, largue tudo. Eu quero você aqui, agora, comigo. Então, vamos começar. Em primeiro lugar, temos duas regras que precisamos seguir. Vamos adicionar uma até o meio e torná-la a nova baixa quando deveríamos adivinhar mais alta. Ok, adicionamos um mais um ao meio e o tornamos o novo mínimo. Quando devemos adivinhar mais alto, colocamos menos um no meio e o tornamos o novo máximo quando deveríamos adivinhar Essas são as duas regras que precisamos seguir. Estamos procurando o número sete. Essa é a fórmula que usaremos. Isso sempre garantirá que cortemos no meio. Começamos com, no início, temos o mínimo é um, o máximo é dez. Começamos do começo. A baixa é 1110, sendo alta. A máxima é dez menos abaixo, menos um dividido, dividido por dois O que está dividido? Dividido? Por que não estamos usando uma única divisão? Bem, para os estudantes astutos que ainda se lembram da primeira seção, quando usamos dividido, isso significa que estamos ignorando tudo depois do ponto flutuante Estamos simplesmente obtendo números inteiros. Quando usamos a divisão dividida, não queremos pontos flutuantes, queremos números concretos aqui. Temos o alto é dez, baixo é um e o baixo é um. Temos um mais dez menos um dividido por 210 menos um é 9/2 É 4,5 Porque é dividido, dividido, desconsideramos o ponto flutuante e, em vez de 4,5, obtemos quatro mais Ok, agora precisamos ver as regras. Qual é a regra? Temos cinco mais um, a média, e fazemos dela a nova baixa. Quando deveríamos adivinhar mais alto, estamos procurando o número sete Deveríamos estar adivinhando mais alto? Sim, vendemos porque estamos procurando o número sete. Temos cinco mais um, o médio e o transformamos no novo mínimo. Qual é a média? São cinco. Se adicionarmos um a ele, ele se torna seis. Nós fazemos disso a nova baixa. Seis se tornarão a nova baixa. Isso é exatamente o que fazemos. Novamente, vou explicar isso novamente porque é um conceito difícil para as pessoas entenderem, mas não vou explicá-lo novamente, terei que seguir em frente Temos o baixo , o dez alto. Nós os aplicamos ou substituímos nas variáveis e obtemos 510 menos um é 9/2, é 4,5 porque estamos usando dividido, dividido, obtemos quatro mais um É 5,7 maior que cinco, o que significa que devemos supor que seja Se observarmos as regras, adicionamos um ao meio e o tornamos o novo mínimo, quando deveríamos adivinhar o mais alto, mais um até o O meio é cinco depois de fazermos a equação. E, a propósito, a média também é a suposição do PC. Vou adicionar um comentário aqui. Essa também é a média, nós mais uma à média, ela se torna seis e a tornamos a nova mínima. Agora reaplicamos a equação, temos baixo sendo seis, alto sendo dez Fazemos dez menos seis dividido por dois. O que nos dá o quê? Dez menos seis é 4/2 É dois mais seis, é oito Agora, deveríamos estar adivinhando mais baixo ou deveríamos estar adivinhando Obviamente, devemos adivinhar que menor porque sete é menor que Quando deveríamos adivinhar mais abaixo, o que fazemos? Menos um no meio. Esse é o meio. Nós fazemos menos um Quanto é menos um? São sete e fazemos com que seja o novo recorde. Lá vamos nós. Agora temos seis como a baixa e sete como a alta. Mas agora, novamente, aplicamos a equação. Sete foi a alta, seis foi a baixa. Sete menos seis, é um, sim, dividido por dois em 0,5, o que significa que 00 mais seis é igual a seis O que deveríamos estar fazendo? Chegamos no meio. 66 é menor que sete, devemos estar supondo Mais um no meio, e fazemos com que seja o novo mínimo. E agora temos o sete sendo o alto e o baixo. Agora finalmente calculamos sete mais sete -7/2 É igual a A resposta correta é 7,7. É o alto, o baixo. Alguns de vocês estão perplexos agora. Você está olhando para o computador, está olhando para a tela e fica tipo, que eu me meti? Eu recomendo que você assista este vídeo lentamente. Você pensa em cada etapa e, se tiver alguma dúvida, sempre consulte um dos instrutores ou a mim Muito obrigado por assistir. Espero que você goste. E nos vemos no próximo vídeo, onde concluiremos nosso jogo usando a teoria que fizemos agora. Tchau tchau. Por enquanto, certifique-se de entender isso, pois você terá um desafio. Tenha isso em mente. Você não tem um desafio agora, mas terá um desafio. Próximo vídeo. Tchau tchau por enquanto. 47. 15. Concluindo nosso jogo: Ok, agora é hora de substituir nossa senha por um código real. Primeiro de tudo, precisamos alterar esse passe ou precisamos preencher as informações aqui. Precisamos entender o que estamos fazendo. Assim como vimos no vídeo anterior. Deixe-me levá-lo de volta às regras. Acrescentamos um ao meio para torná-la a nova baixa, quando deveríamos estar supondo que seja E nós menos um no meio e a tornamos a nova máxima, quando deveríamos estar supondo que seja Nosso principal objetivo é traduzir essa ou essas duas regras em código. Como fazemos isso? Eu quero que você pare um momento e tente fazer isso sozinho. Você deveria ser, você deveria ser capaz, eu ficarei muito orgulhosa de você. Se você puder fazer isso de volta em nosso código, espero que tenha me deixado orgulhoso de voltar ao nosso código. Aqui, antes de tudo, precisamos lidar com o que acontece quando deveríamos adivinhar melhor Lembre-se aqui, mais um para o M, mais um para lembrar. E faça dela a nova lei quando for isso, quando deveríamos estar supondo OK. Aqui, em primeiro lugar, pegamos o meio. E, novamente, eu disse que o meio é o gás do PC mais um. Nós atingimos a nova baixa. Agora, a baixa é igual à estimativa por PC mais um, quando deveríamos adivinhar a menor menos um a média, e torná-la a nova máxima Deixe-me verificar novamente. Devemos adivinhar. Nós fazemos disso a nova baixa. Sim, e fazemos disso o novo recorde. OK. Aqui, adivinhamos pelo PC. Fazemos menos um e fazemos com que seja o novo recorde. Então, em C ou LF, digitamos e simplesmente imprimimos, eu adivinhei, com uma marca de explicação Além disso, devemos parar porque não queremos mais suposições É basicamente isso. Espero que você tenha conseguido fazer isso. Se não, está tudo bem. Desde que você entenda claramente o que está acontecendo, vamos testar esse bebê. Se eu ler, clique em Executar, Pense em um número. Vamos pensar em 720. O 3.700,23, vamos começar o jogo. 723. Você deveria adivinhar mais alto, hein? 750. Então você deve adivinhar mais baixo, 625 palpites mais altos, palpite mais alto, palpite mais alto, palpite mais baixo, mais baixo uh huh, adivinhar mais baixo, 723 acessos. Agradável. Achei que foi muito bom Então, quantas vezes foi preciso para adivinhar? Então esse é o primeiro palpite. Então, 1-234-567-8910 1-234-567-8910 E lá vamos nós. Então, nosso PC precisou de dez tentativas para finalmente entendê-lo. Imagine se estivéssemos simplesmente aumentando isso em um, precisaríamos de 723 a 500, ou seja, 223 suposições Em vez disso, bastaram dez e você quer saber uma coisa maluca A quantidade máxima de vezes que o PC precisa adivinhar, o número será dez. Para provar isso, vou te lançar um desafio. E seu desafio será criar um contador do número de vezes que o PC tenta adivinhar, criar uma variável fora do fio, inicializá-la e aumentá-la toda vez que o PC não adivinhar corretamente e imprimir o número de suposições Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Em primeiro lugar, precisamos criar o número de suposições e fazer isso fora do circuito Aqui, vamos dizer sublinhado numérico, sublinhado sublinhado e é igual a zero Então, precisamos aumentar esse número em um a cada vez. E onde você acha que devemos fazer isso? Tente adivinhar. Bem, devemos fazer isso em qualquer lugar. Alguns de vocês podem pensar, bem, devemos fazer isso aqui e aqui. Mas isso não importa, desde que adivinhemos. Deve estar aqui no número de suposições mais igual Então, vamos testar o 723 novamente. Onde imprimimos, onde imprimimos? Eu adivinhei no campo de substituição o número de suposições. Claro, devemos fazer isso aqui quando realmente obtivermos a resposta correta. Clique com o botão direito e execute 723. Vamos mais alto, mais baixo, mais alto, mais alto, mais baixo, 23, mais baixo, mais baixo. Boom, lá vamos nós. Eu adivinhei em dez, escolha qualquer outro número, vamos tentar algo baixo Vamos tentar 300 ou 250. 250 é muito simples, porque 500 divididos, por exemplo, digamos 250. Boom, lá vamos nós. Acabei de levá-lo para. Vamos tentar algo um pouco mais complexo. Vermelho e vermelho e 68, eu acho. Inferior, 168, superior, inferior, superior, inferior, superior, 68, superior, inferior, boom Dez suposições. Quão legal é isso, senhoras e senhores Muito obrigado por assistir, mas há algo extra aqui que ainda não terminamos. Eu vou te contar na próxima vez porque temos mais uma lição a fazer, que é a declaração L em loops E então usaremos essa declaração L uma forma muito poderosa. Isso vai te surpreender, pelo menos me surpreendeu quando fiz isso pela primeira vez. Muito obrigado por assistir. Nos vemos no próximo vídeo, onde aprenderemos sobre as declarações L em loops. Tchau tchau por enquanto. 48. 16. Declarações de Else em Loops: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste vamos falar sobre as declarações e loops L. Vamos continuar e criar um arquivo Python. Um novo arquivo Python, e vamos chamá-lo de lo aqui, vou criar uma lista E essa lista de carros será a seguinte. Eu vou ter um carro BMW. Vá lá, eu vou ter uma Ferrari. Vou para quatro carros, vou ter um carro e o carro Tesla. Agradável. Lá vamos nós. Isso não tem forma nem forma. Não somos patrocinados pela Tesla, não somos patrocinados Mas se eles assistirem a esse vídeo, estou sempre aberto a sugestões. Vou mudar todos os meus exemplos para acomodar seu carro sem mais delongas . Vamos criar um loop for que examinará toda essa lista. Lista de carros, vou dizer carro. Observe com cuidado. Se o carro de corda não estiver no carro, imprimirei que esta lista é aceitável. Se não tivermos carro em todos os carros da nossa lista de carros , essa lista é inaceitável e vamos sair Qual você acha que será a saída assim que eu executar isso? Se eu escrevo, Click and I run it, me diz, desculpe, isso é inaceitável E, a propósito, quando eu lhe digo, qual você acha que será a resposta, por favor, reserve um tempo e na verdade, não corra e veja a resposta, pense no que ela será. Então, como você pode ver, se corrermos , não está funcionando e estamos fugindo. Por que isso? Porque a Ferrari aqui não tem carro. Mas se adicionarmos esse carro e escrevermos Clique e corremos, excelente, não vemos nada. E isso não é bom porque não há nada sendo produzido, nem sabemos se esse carro está, essa lista é aceitável. Você pode estar pensando, bem, você sabe o que, Michael, posso simplesmente acrescentar que imprimir esta lista é aceitável aqui. O problema com isso é que se eu não tivesse o carro na Ferrari, eu teria, isso é inaceitável, isso é inaceitável e essa lista é aceitável Há uma dissonância cognitiva aqui. O que temos é algo chamado em L para nossos quatro loops. Então, se não sairmos em nenhum momento, então temos isso impresso. Ou se terminarmos normalmente nossa lista, entramos no Ls e imprimimos ou executamos qualquer código que esteja dentro. Por exemplo, agora, se eu correr, você verá que só obtemos, desculpe, isso é inaceitável Por que não executamos os Ls Porque saímos dessa lista. Se tivermos um carro aqui em vez disso, na Ferrari, você verá que isso nos diz que essa lista é realmente aceitável. Por que isso? Porque examinamos a lista inteira. Nós não saímos disso, então entramos no e é basicamente isso. Não há nada demais aqui. Lembre-se de que, se o loop terminar corretamente, tudo funcionará bem Obrigado por assistir. Agora, como um pequeno desafio aqui, quero que você volte para onde está nossa cobertura de pizza, a cobertura de pizza Quero que você adicione uma instrução L a esse loop while aqui para que não imprimemos. Espero que você goste de parar de comer sua pizza. Como resolveríamos isso? Espero que você tenha dado o seu melhor aqui. Vou adicionar um L. Vou adicionar o recuo. O que acontece aqui se eu clicar com o botão direito do mouse e correr, escolher uma cobertura para sua pizza Digamos que queremos couve, não ajuda. Tomate. Uh hein. Lá vamos nós. Ainda não funciona. Queijo. Estrondo. Espero que você goste de queijo na pizza, porque ainda não saímos do nosso ciclo de tempo. Nós simplesmente entramos no caso contrário, o óleo fez seu trabalho. Se eu tentar agora, por exemplo, batata com tomate. Você sabe o que? Eu só quero sair daqui. Só diz adeus. E não esperamos que você goste de parar de comer pizza, o que parece estranho Ninguém gosta de parar de comer pizza. Então, muito obrigado por assistir. Espero que você tenha entendido. No próximo vídeo, usaremos nosso máximo ou o L em nosso máximo mínimo. E acho que será o último vídeo desta seção. Parabéns por ter chegado até aqui. Por favor, deixe-me um comentário sempre que puder, e nos vemos no próximo vídeo. Tchau tchau. 49. 17. Else em High-Low: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste caso, implementaremos o L em nossa máxima baixa. Deixe-me levá-lo de volta no tempo quando estávamos explicando a alta baixa. Aqui, você notará que começamos com uma baixa e uma alta. Encontramos a hortelã, aumentamos em um, obtemos uma nova baixa ou uma nova máxima. Pegamos a hortelã, obtemos a média, etc., etc. E então, no final, às vezes temos o recurso escolar, se não adivinharmos o número de antemão, se precisarmos de dez palpites, na verdade temos o alto igual E isso é chamado de high low. E quando temos uma máxima baixa, temos a resposta, então não precisamos adivinhar mais do que isso. O que podemos fazer é criar uma instrução L de alguma forma ou modificar nosso código para ter uma IA que esteja sempre verificando se a alta é igual à baixa. Se for, se tivermos o alto igual ao baixo, isso significa que a resposta é a resposta correta e é igual à alta ou à Eu quero que você use essa informação para fazer o seguinte desafio, um tempo. Altere a condição no loop while para parar quando a alta for igual à baixa. Isso é algo muito importante. Você terá que descobrir a condição. Você deve parar quando a alta é igual à baixa. Adicione uma instrução L para quando o loop terminar. Vou te dar uma pequena dica. Se você não quer a dica e quer conquistá-la sozinho, pause o vídeo agora mesmo e vá para o A condição geral deve ser alta, diferente de baixa. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, primeiro de tudo, vamos voltar ao nosso máximo. A condição aqui não será simplesmente verdadeira. Vai dizer que, embora a alta seja diferente da baixa, faremos tudo isso. Então, no final, vou manter a pausa aqui porque ainda é necessária. Talvez o computador adivinhe seu número sem chegar aos dez aqui. Vou adicionar um L. Eu direi que imprima que você estava pensando em substituir o campo alto porque isso não importa. Podemos usar o alto ou o baixo aqui , não importa nada. Também imprimiremos o campo “ precisei de substituição”, número de suposições Se eu escrever clique e entrar aqui, vou dizer 500. Vamos pensar novamente em 723 porque precisámos de dez palpites. Alto, baixo, alto, alto, alto, baixo, 23, baixo, alto, baixo. Olha isso. Eu não pressionei C, e ele me disse que você estava pensando em 723 Como você pode ver, isso é mágico. Mas o único problema aqui é que diz que foram necessárias nove tentativas. Se os contarmos e lembrarmos que sim, vamos verificar novamente. 1236789. Lá vamos nós. 123-45-6789 O último não é uma suposição Lembre-se de que o último não é uma suposição. Acabou de nos dizer que você estava pensando em 723. Isso não está incorreto. Só que, não adivinhou, sabia que você estava pensando em 723 Vamos tentar um número diferente. Vamos tentar 628 altos, baixos, altos, baixos, baixos, baixos . Lá vamos nós. Agora, ele adivinhou 728 antes de adivinhar sozinho, porque eram menos Eu adivinhei em oito. Vamos voltar e contar 1235678. E lá vamos nós. Então, senhoras e senhores, espero que tenham gostado. Este é um jogo muito divertido que criamos É muito complicado, não é complicado. É um programa ou projeto bastante complicado que fizemos. Muito obrigado por assistir. Obrigado por ficar comigo até o final da seção Posteriormente, anexaremos a seção com mais exemplos, com mais projetos no futuro Eu sempre manterei este curso e a master class atualizados. Nos vemos na próxima seção, onde acho que veremos listas e casais. As coisas que nós meio vimos quando estávamos trabalhando aqui. Mas com muito mais profundidade. Você verá que essa é uma ferramenta muito poderosa. Obrigado por assistir e nos vemos no próximo vídeo. Tchau tchau por enquanto. 50. Seção 5 - Listas e tuplas: 1. Introdução aos tipos de sequência: Ok, então vamos começar a criar nosso projeto. A primeira coisa que faremos é, nesta janela, clicar em Novo Projeto, aqui no topo. Eu vou para a próxima. Vou chamar isso de Lista de Projetos e Casais. Eu vou salvá-lo. Dentro do código, escreverei, clique em Criar uma nova pasta e chamarei isso de Listas e Casais, OK? E guarde-o lá. Depois de clicarmos em Concluir, veremos a seguinte janela. Antes de começar, vamos entender o que são sequências Dissemos que esta é uma introdução aos tipos e listas de sequências. Vamos começar entendendo o que são sequências. O que são sequências? Uma sequência é uma coleção de itens. Já vimos algo relacionado a isso quando falamos sobre cordas. Essas também são coleções de itens. No caso de uma string, os itens são apenas caracteres. No caso das listas, pode ser qualquer coisa. Os itens podem ser cadeias de caracteres, os itens podem ser números inteiros Os itens podem até ser listas. Então, pode ser uma lista de listas, e veremos isso mais tarde, que se chama Nest blists Em seguida, sabemos que cada item tem uma posição e os itens estão em um pedido. Assim como quando falamos sobre strings em que tínhamos o primeiro elemento indexado número zero ou o índice era igual a zero, o segundo elemento era o índice um, etc., etc As mesmas coisas são verdadeiras quando falamos sobre listas. Cada item tem uma posição e eles estão em uma ordem. Você pode se referir a qualquer item na sequência usando o número do índice, ou seja, digamos que temos uma sequência chamada S. Podemos acessar o item no índice zero usando esses dois colchetes Podemos acessar o segundo item que está no índice número um. Da mesma forma aqui. Isso não é algo completamente novo para você. Você já viu como podemos acessar os itens individuais usando uma string, usando os colchetes. Vou continuar e também vamos entender que, em Python, a sequência também começa no índice zero, não no índice um Isso é muito importante para lembrá-lo de que os tipos de sequência podem ser listas, matrizes de bytes, cadeias de caracteres, tombos, intervalos e Agora veremos casais mais tarde. Já vimos cordas, já vimos intervalos Mas talvez você não soubesse que era uma sequência. Mas é. Veremos compartimentos e bytes nas seções posteriores Finalmente, o Python classifica os tipos de sequência como mutáveis e imutáveis, e aprenderemos o que são essas duas coisas Vamos começar a entender adequadamente como as listas funcionam. Vou voltar à minha codificação aqui e vou criar um novo arquivo Python que vou chamar de lists Underscore Intro A primeira coisa que vou fazer é fechar esse projeto para ter mais espaço. E vou criar partes de sublinhado coloridas iguais a, vou começar com rodas só para não ter uma corda muito longa aqui Vou apenas adicionar enter e depois enter. E vou tentar começar a escrever as coisas. Vou duplicar o controle D. Vou ter controle de pneus D. Controle de assentos D. Controle de portas D e ambos estéreo Lá vamos nós. E, ao contrário outras linguagens em que, se você estiver no final da lista, não poderá adicionar uma vírgula em Python Porque, como eu disse, essa é uma linguagem de programação muito versátil. Na verdade, você pode simplesmente deixar a vírgula lá caso queira adicionar outro item ou, se quiser, removê-lo Pessoalmente, gosto de mantê-lo porque, na minha experiência, desde que eu era criança e programava, sempre foi uma questão de liberdade para mim. Tipo, por que não consigo deixar uma vírgula agora? Eu posso, então eu vou, então vou criar quatro loops para iterar sobre essa lista Então, vou criar quatro. Parte no carro sublinha as peças e eu vou imprimir a peça Se eu clicar com o botão direito do mouse e executar, essa é a saída que obterei. Vou encaixá-lo aqui no lado direito. Como você pode ver, o loop frontal usando a variável part percorre cada item que temos em nossa lista de peças automotivas e depois o imprime Como você pode ver, rodas, pneus, assentos, portas e aparelho de som Não há nada demais aqui. Nós já vimos isso. Não estávamos usando listas, mas estávamos usando strings. É o mesmo conceito, se você quiser Eu o encorajo a fazer isso usando o debug Em seguida, vou adicionar uma pequena letra aqui, apenas uma linha vazia. E vou imprimir as peças do carro na posição número dois. Agora, antes de correr, quero que você pare um momento e tente adivinhar qual será a saída. Vou escrever, clique e vou correr. E lá vamos nós, eu pego assentos. Porque se eu olhar as peças do carro, posso ver que temos rodas com zero pneus em um e assentos na posição número dois ou no índice número dois. Para ser mais preciso. Meus avisos, como você pode ver, essa é a saída que obtemos Nós pegamos os assentos. Tudo bem, então espero que você tenha entendido o que está acontecendo aqui. Se você tiver alguma dúvida, pode sempre deixá-la em qualquer seção disponível. Vou te dar um pequeno desafio para você fazer sozinho. Portanto, você precisará imprimir uma fatia porque, lembre-se de que, assim como podemos imprimir coisas usando seu índice, como vimos agora, ou imprimir itens usando seu índice, também podemos cortá-las exatamente como fizemos com nossas Então, isso deve ser simples para você. Use fatias para imprimir as três primeiras peças do carro que temos. Imprima a última peça do carro usando dois índices diferentes. E é isso. Esse é o seu desafio. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, então como você conseguiu fazer isso? Primeira coisa que vou fazer. Ok, desculpe por isso. A primeira coisa que farei adicionar um espaço vazio e imprimir a garagem em posições que vão de zero a três pontos. Então, se eu escrever Click e correr, aí está. Como você pode ver, imprimi os três primeiros itens. Agora, alguns de vocês podem ter feito o seguinte. Você não especificou qual é a posição inicial, então, naturalmente, ela começará no índice número zero. Se você fez isso, eu parabenizo você. Você tem prestado atenção na pontuação até agora. Em seguida, vou imprimir a peça do carro. Como dissemos no desafio, queríamos imprimir a última peça do carro usando dois índices diferentes O primeiro índice seria bastante óbvio. Portanto, temos 0,123,4 no índice número quatro. Eu deveria ver estéreo. Pronto, funciona. Agora, e o outro método? Alguns de vocês podem ter usado o outro método antes desse primeiro método. Alguns de vocês são adaptáveis dessa forma, mas ao contrário, se ainda não descobriram, recomendo que tentem voltar ao projeto anterior, onde estávamos acessando itens ou sendo personagens mais específicos em uma string, porque esse é um desafio muito divertido Então, podemos usar o menos um. Se eu fizer menos um e correr, veja isso, também recebo a palavra estéreo E vou duplicar isso apenas para que saibamos que é realmente o mesmo Olha isso. Estéreo e estéreo Assim como com cadeias de caracteres, podemos acessar itens usando índices negativos em uma lista É basicamente a mesma coisa. Na verdade, as strings também são sequências, mas a diferença é que as strings E vamos ver o que isso significa no próximo vídeo. Espero que você tenha gostado de uma pequena lição Eu recomendo que você faça isso por um loop usando o AD Bug E nos vemos em alguns segundos, espero que gostem. 51. 2. Objetos imutáveis: Ok, então, como prometido, eu te disse isso. Vou lhe dizer ou explicar o que são objetos imutáveis Vamos ver nossos slides e falar sobre objetos imutáveis Imutável é quando nenhuma mudança é possível ao longo do tempo. Esse é o significado real da palavra Python. Se o valor de um objeto não puder ser alterado ao longo do tempo , ele será conhecido como objeto imutável Uma vez criados, o valor desses objetos é permanente. Eles permanecerão com o mesmo valor para sempre. Deixe-me dar um exemplo de seria a aparência de um objeto imutável Tenho certeza de que você ficará muito surpreso. Em primeiro lugar, um objeto imutável são os números. Como números inteiros, flutuadores ou barras. Não podemos alterar um objeto inteiro depois de criado. Quando digo objeto, também me refiro a uma variável. Outra coisa que é imutável são as cordas. Uma vez criadas, as cadeias de caracteres não podem ser alteradas. Agora, eu acho que alguns de vocês agora estão pensando, oh meu Deus, espere, espere, espere, espere. Você está me dizendo que estamos trocando as cordas o tempo todo No passado, não sei, umas quatro ou 5 horas trocamos as cordas e agora Michael, você está me dizendo que eu não posso trocar as cordas Você está me dizendo que as cordas são imutáveis. Isso tem que ser uma bobagem. Vou mostrar como as cordas não podem ser alteradas em pouco tempo, mas antes de fazermos isso, também precisamos saber que os casais também são imutáveis E aprenderemos mais sobre as quedas mais tarde. Vamos entrar em nosso código e começar a criar objetos imutáveis Vou voltar ao meu código aqui e vou criar um novo arquivo Python que vou chamar de imutáveis Agora, antes de começar a falar sobre imutáveis, preciso mostrar algo muito importante Deixe-me pesquisar o que é ID em Python ou o que é a função ID em Python Aqui você verá que a função Python ID retorna a identidade de um objeto A identidade de um objeto é um número inteiro que é garantido como único e constante para esse objeto durante sua vida útil Duas palavras-chave muito importantes aqui, únicas e constantes. Único e constante, o que significa que dois objetos nunca podem ter o mesmo ID. E que o objeto, uma vez que tenha um ID, permanecerá constante durante sua vida útil. Isso não mudará, o que significa que isso identificará que estamos realmente falando sobre esse objeto específico. É muito importante que você se lembre de algo único e constante. Vamos voltar ao nosso código. Em nosso código, vou digitar o seguinte. Eu vou dizer que temos um valor que é igual a seis. Eu vou dizer que temos outro valor que é igual ao valor. Aqui, eu vou fazer o seguinte. Vou imprimir a ideia de valor. Eu direi o valor do ID. Duplique essa linha e a ideia de outro valor e depois outro valor Vamos ver como será a saída. Se eu escrevo Click e corro, veja isso, eu obtenho o seguinte. E, na verdade, vou remover os espaços aqui porque quando fornecemos vários argumentos, vários argumentos, porque temos uma vírgula aqui, ela adiciona um espaço sozinha Então, quando escrevo Click, parece um pouco mais limpo com apenas um espaço. Então, como você pode ver, temos esse número de identificação que é exclusivo para essas duas variáveis. Bem, você pode estar dizendo, espere, espere. Não dissemos que os IDs são exclusivos? Bem, sim, eles são exclusivos para cada objeto. que significa que essas duas coisas aqui, ou essas duas variáveis, ou objetos, para ser mais específico, são de fato os mesmos. Agora, esses são IDs aleatórios. Você pode estar recebendo identidades diferentes das que eu estou recebendo. Como você pode ver, toda vez que escrevo, clico e corro, recebo um ID diferente. Agora você também pode estar se perguntando: onde vem esse ID ? Não vou me aprofundar muito no que todos esses IDs significam, mas o que você deve saber é uma combinação de um número aleatório e o espaço que cada variável ocupa da sua RAM Os Rams têm cerca de 2 gigabytes, 4 gigabytes, 16 gigabytes, qualquer coisa Toda vez que você cria uma variável, você obtém uma pequena fatia dessa RAM Essa fatia tem uma identificação própria. Ele é combinado com um número aleatório e você gera o seguinte. Na sua rampa, há um local específico para números inteiros, local específico para uma string, lugares específicos para listas e matrizes e assim por diante Mas isso está fora do escopo do que estamos aprendendo hoje. Tudo o que você precisa saber é que os dois têm a mesma ideia. O que significa que eles são o mesmo objeto. Mas agora vou tentar mudar isso. E lembre-se de que eu disse que os números inteiros são imutáveis, eles Vou imprimir apenas uma linha vazia aqui e vou dizer que o valor é igual a quatro. E eu vou imprimir o seguinte. Vou duplicar essa linha de código e movê-la para baixo. Eu o movi para baixo, mantendo pressionado o controle e a tecla Shift. Agora veja o que vai acontecer. Vou escrever um clique e vou correr e dar uma olhada. Como você pode ver, esse ID é diferente daquele com o qual começamos. Veja os dois últimos números aqui. Temos 88 e aqui temos 24. Meu Deus, o que aconteceu? Bem, tentamos alterar o valor e, quando mudamos o valor, o ID mudou. E o que isso significa? Isso significa que o valor agora é um objeto completamente diferente, porque os números inteiros são imutáveis, que significa que não podem ser alterados Quando realmente tentamos mudá-los, funciona. Mas, como você pode ver, obtemos um ID totalmente diferente, o que significa que obtemos uma variável totalmente diferente, uma nova variável, o valor foi criado. Aí está. Se eu tentar imprimir outro valor, demore alguns segundos e pause o vídeo Ou, se quiser, pense em como será a saída. Não, não o execute. Pense nisso. Se eu clicar com o botão direito e correr, aí está. Você pode ver que a ideia de outro valor permanece a mesma que valor e outro valor. Porque lembre-se de que agora o valor é um objeto completamente diferente, então deve fazer sentido. Ok, vamos continuar e vamos testá-lo em uma string. Porque você pode estar dizendo, bem, sim, na verdade você disse que o valor é igual a quatro. Mas, digamos, quando acrescentamos algo que não deve afetar as sequências de caracteres, eu vou imprimir apenas uma Eu vou dizer que mensagem é igual a correta. Como você está correto, vou dizer que a mensagem sublinhada é igual à mensagem Em seguida, vou imprimir ou, na verdade, vou apenas duplicar essas linhas Vou mover isso para baixo e vou dizer a ideia de duplicar essa mensagem, outra mensagem Agora, quando escrevo Click e executo, como você pode ver, temos IDs diferentes para a mensagem e outra mensagem. Obviamente, eles começam, podem parecer semelhantes nos primeiros números, mas obviamente mudam mais tarde. Então você pode ver aqui, 880, aqui, você pode ver 368 e assim por diante Não há nada para acabar aqui. A ideia da mensagem é igual à ideia de outra mensagem. E isso era esperado, mas agora vamos quebrar isso. Por nós, quero dizer você, porque você precisará adicionar ao nosso valor, acrescentar o valor da nossa string Faça isso antes de imprimir a ideia novamente. E então corra e veja o resultado que obtemos. O que isso significa? Você já deveria saber. Vou te dar uma pequena dica. Se você não quer a dica e sabe como acrescentar a sequência sozinho, ou se quiser pesquisá-la, vá em frente e faça Se não, vou te dar uma dica, 321. Estrondo. Para acrescentar, você pode usar o sinal de mais é igual, pausar o vídeo agora mesmo e Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Como você pode ver aqui, temos uma mensagem igual à correta. Imprimimos as identidades. Agora, vou tentar um apêndice. Vou imprimir anexando a mensagem agora com três pontos Então, na saída, podemos ver como, uau, o que está acontecendo? Mas agora nada está realmente acontecendo. Só teremos uma impressão digital aqui. Vou imprimir, desculpe. Quero dizer, digamos que essa mensagem mais é igual a ish. Então você está correto. Vou imprimir a mensagem, então o que ela se tornou. E também vou imprimir a ideia da mensagem. Vamos imprimir a ideia de outra mensagem. Por que diabos quando eu escrevo, clique e corro, eu tenho o ID aqui onde é 2398064 Então eu disse anexando a mensagem. Agora está correto, agora o ID termina com 61128064. Como você pode ver, o ID mudou quando a variável mudou. E o que isso significa? Vamos dizer isso completamente. Sim, exatamente. Um novo objeto foi criado quando tentamos alterar nossas strings, porque as strings são imutáveis Quando alteramos o resultado ou o valor, o Python realmente criou uma nova string para acomodar esse novo quando tentamos alterar nossas strings, porque as strings são imutáveis. Quando alteramos o resultado ou o valor, o Python realmente criou uma nova string para acomodar esse novo valor. Espero que você tenha entendido do que se trata. Sei que pode parecer magia negra esquisita. Isso é que o Python funciona, e você verá que isso traz muitos benefícios, especialmente quando começamos a trabalhar com objetos mutáveis No próximo vídeo, espero ver você lá. Espero que você goste e nos vemos em alguns segundos. 52. 3. Objetos mutáveis: Ok, agora é hora de começar a falar sobre objetos mutáveis O que são objetos mutáveis? Mutável é quando algo é mutável ou tem a capacidade de realmente mudar Em Python, mutável é a capacidade dos objetos de mudar seu valor durante a O que, mas isso significa? O que significa que a identidade deles deve permanecer a mesma. Geralmente, esses são os objetos que armazenam uma coleção de dados. Assim como as listas que armazenam uma coleção de dados. Exemplos de objetos mutáveis seriam listas, conjuntos e dicionários E aprenderemos sobre conjuntos e dicionários em seções posteriores Mas, por enquanto, vamos focar nossa atenção nas listas e ver como elas são realmente mutáveis Se você voltar ao nosso código, vou criar um novo arquivo Python E às vezes, se você não vê o arquivo, pode clicar no código real aqui, ir até o arquivo e criar um novo arquivo Python que vou chamar Os mutáveis, vou criar uma lista de compras. Uma lista de compras é um ótimo exemplo de um objeto que gostaríamos de alterar. Porque eu não sei se você vai às compras sozinho ou se acabou de pedir. Mas a mesma coisa acontece quando você está comprando itens da Amazon ou do supermercado ou qualquer outra coisa Você começa a adicionar itens, mas talvez também queira remover esses itens. Portanto, haverá muitas mudanças. Uma lista de compras é um exemplo perfeito de um objeto que gostaríamos que fosse mutável Eu vou tomar leite. Também vou configurá-lo em uma nova linha, e essa nova linha não parece boa. Mude até o final. Duplique isso Agora, com o leite, vou pegar macarrão e alguns ovos, talvez. Talvez eu receba pão de spam. A propósito, eu odeio spam. E arroz. Lá vamos nós. Esta é a nossa lista de compras. Eu vou dizer que temos outra lista de sublinhados de compras sublinhados que será igual à nossa lista de compras Vou imprimir o ID da lista de compras. lista de compras do two.com ID. Duplique isso Outro ID da lista de compras, outra lista de compras. Se você clicar com o botão direito do mouse, executaremos a mesma saída que esperávamos. O mesmo ID existe tanto para a lista de compras quanto para a lista de compras, porque elas são iguais. Nós os definimos para serem realmente os mesmos. Então, eu vou te dar um desafio. Seu desafio será acrescentar nossa lista. Portanto, você precisará acrescentar o valor da nossa lista. Imprima o ID. Novamente, corra e veja os resultados que obtemos ou o resultado que obtemos e o que isso significa. Mas antes de começar seu desafio, eu deveria te dar uma dica. Se você quiser entender como adicionar ou anexar uma lista sozinho, recomendo que experimente por conta própria Você descobrirá que pode haver algumas coisas estranhas acontecendo lá, mas minha dica é 321 para acrescentar use mais iguais e não apenas as aspas duplas normais, mas com os colchetes mas minha dica é 321 para acrescentar use mais iguais e não apenas as aspas duplas ao algumas coisas estranhas acontecendo lá, mas minha dica é 321 para acrescentar use mais iguais e não apenas as aspas duplas normais, mas com os colchetes ao redor delas. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta aqui. O que vou fazer é acrescentar minha lista de compras Vou apenas imprimir e depois imprimir adicionando cookies. É assim que você escreve cookies? Espero que sim. Adicionando cookies com três pontos. E eu vou pegar minha lista de compras e dizer mais iguais Agora, é aqui que a maioria de vocês pode ter errado. Alguns de vocês, se não olharam a dica e experimentaram por si mesmos, podem ter um biscoito como esse aqui Vou imprimir a lista de compras novamente. Então imprima a lista de compras e eu duplicarei isso e levarei até o final, a ideia da lista de compras Então, na verdade, vou cortar isso e colocá-lo na parte inferior. Se eu escrevo, clico e corro, olha o que eu recebo. Então eu pego leite, macarrão, ovo, spam, pão, arroz. E eu também recebo C, 00 K, E. E o que diabos está acontecendo? Bem, o que está acontecendo é que os cookies, como dissemos, são uma corda. E, como mencionamos anteriormente, cadeias de caracteres também são sequências. O que isso significa é que C é um item, O é um item, é um item, k é um item, é um item, etc Quando a lista de compras, que é uma lista, é mais igual a essa outra sequência, ela pensa que deve pegar cada personagem individual e considerá-lo um item e adicioná-lo à sua lista. Em vez disso, o que devemos fazer é dizer a ele que os cookies são um item por si só. Agora, se escrevermos, clicarmos e executarmos, você verá que, na verdade, temos cookies sendo adicionados. Espero que você tenha entendido por que esse é o caso, como isso mudou. Mas a coisa mais importante aqui é a identificação. O que aconteceu com a identidade? O ID começou como 24588, seja o que for, e depois 792, e depois ficou Oh meu Deus. O que isso prova? Isso prova que realmente conseguimos alterar, suspender ou qualquer outra coisa, alteramos o valor da nossa lista de compras. Se nossa lista, o ID permaneceu o mesmo, o que significa que nenhum novo objeto foi criado que significa que uma lista é um objeto mutável, enquanto cadeias de caracteres, números, barras, etc., são todos etc Se você tentar alterá-los, o valor do ID mudará, que significa que um novo objeto foi criado. Então, espero que você tenha entendido a diferença entre um objeto imutável e um imutável Espero que você tenha entendido os benefícios de ter objetos mutáveis e os benefícios também de ter objetos imutáveis Vou te contar os benefícios de ter objetos imutáveis. E só um pouquinho, eu realmente tenho uma mesa aqui que eu quase esqueci Objetos imutáveis são mais rápidos de acessar porque você sabe que esse objeto nunca mudará, ele sempre terá a mesma posição em seus dados com base na Não vou entrar em detalhes, mas como isso não muda, é mais fácil de acessar Objetos mutáveis são recomendados quando é necessário alterar o tamanho do nosso conteúdo atual de objetos Ou seja, se tivermos uma lista de compras, com certeza mudaremos mais tarde Estender, encurtar e, em seguida, um objeto mutável é o caminho a percorrer. caro trocar objetos imutáveis É caro trocar objetos imutáveis. Por que você acha isso? Pare um momento para pensar sobre isso, porque se você tentar alterar um objeto imutável, na verdade precisará criar outro objeto imutável que pese no sistema Você pode pensar, sim, do que você está falando? Como se eu tivesse acabado de mudar a lista ou mudar a string e isso acontecesse instantaneamente. Mas quando você tem um programa com milhares de linhas de código, quando você tem, sei lá, milhões de objetos sendo criados, ele será roubado Portanto, saber qual objeto usar é muito importante. Objetos mutáveis são fáceis de mudar, ao contrário dos objetos imutáveis, que E, finalmente, quando falamos sobre objeto imutável, uma mudança envolve a criação de uma nova cópia, Quando falamos sobre objetos imutáveis, mudança pode ser feita durante o tempo de execução Esse é o benefício principalmente de usar objetos imutáveis. Eles são mais rápidos de acessar. Se você tem um objeto que não deve mudar seu valor ao longo do tempo, usar um objeto imutável é a melhor opção Então, espero que tenham gostado, espero que tenham entendido do que se trata. Eu recomendo que você investigue essas coisas por si mesmo. Eu poderia até anexar alguns deveres de casa, alguns questionários a esses vídeos. Vamos ver o que acontece. Então, eu vou te ver em apenas alguns segundos. Quando falamos em vincular vários nomes a uma lista, o que é isso mesmo? Então, eu vou te ver daqui a pouco. 53. 4. Associando vários nomes a uma lista: Ok, então vamos ver como vincular vários nomes a uma lista. Agora, isso não é um papel no Python. Este é apenas um experimento para mostrar o que acontece quando você tem objetos mutáveis Apenas como uma pequena introdução, o que eu quero fazer aqui depois de imprimir a ideia de lista de compras é que eu quero realmente publicar outra lista. Vou imprimir aqui. E eu vou dizer que essa é outra lista. Não estou imprimindo a ideia de outra lista. Na verdade, estou imprimindo toda a outra lista, outra lista. Vamos chamá-la de outra lista de compras. Acho que você vai ficar um pouco chocado com o que verá Também copiarei isso colado aqui e direi que essa é a lista de compras e outra lista de compras Ok, vamos lá. Deixe-me aumentar um pouco e vou imprimir para que o ID seja separado de. Ah, e também, por que não imprimir o outro ID da lista de compras, já que estamos aqui. Se eu escrever Click e correr, veja o que obtemos. Então, estamos adicionando cookies e lembre-se de que adicionamos cookies à nossa lista de compras. Não alteramos outra lista de compras. E observe o que obtemos na saída. Essa é outra lista de compras, e o que temos no final? Nós temos biscoitos. Oh meu Deus, o que é isso tudo? Bem, lembre-se, outra lista de compras está apontando para a lista de compras, o que significa que elas são o mesmo objeto. Já estabelecemos isso quando mudamos ou verificamos o ID. Mas agora, como você pode ver, quando alteramos a lista de compras, porque outra lista está apontando para a lista de compras, elas têm o mesmo ID, são o mesmo objeto. E dissemos que a lista de compras é uma lista, o que significa que é mutável, o que significa que quando ela muda, outra lista muda com ela Como você pode ver, o ID permaneceu o mesmo para a lista de compras. Para a outra lista de compras. Toda vez que você fizer alterações na lista de compras ou em outra lista de compras, a alteração estará nas duas listas. Meio louco, eu sei, mas é assim que o Python Então, só para aprimorar a ideia, vou apresentar a vocês um pequeno desafio Seu desafio será adicionar bananas. Portanto, você precisa primeiro criar outras quatro listas e defini-las como outra lista. Portanto, muitos estudantes cometem o erro de criar a lista a e depois a lista B, e então não, você deve dizer que a é igual a b é igual a D é igual a F. Não importa quantas listas você queira, igual a outra lista, imprima e, vejamos, acrescente outro item a uma das quatro listas recém-criadas criar a lista a e depois a lista B, e então não, você deve dizer que a é igual a b é igual a D é igual a F. Não importa quantas listas você queira, igual a outra lista, imprima e, vejamos, acrescente outro item a uma das quatro listas recém-criadas. Use a caneta com algo dentro. Essa é uma forma diferente de acrescentar. Se você não quiser usar os mais iguais, imprima todos eles e o que você vê? Você já deve estar familiarizado com qual deve ser a saída, mas teste você mesmo. Pause o vídeo agora mesmo e vá fazer cada desafio. Ok, aqui eu vou continuar e criar mais algumas listas. Estou apenas imprimindo uma linha vazia. Vou dizer que a é igual a b é igual a f. Vou dizer que todas elas são iguais a outra lista de compras. que Então eu vou imprimir a lista só pra caramba. Em seguida, direi que quero adicionar bananas. Na verdade, vou adicionar bananas. Primeiro de tudo, é assim que você escreve bananas? Se eu escrever, clique em Mostrar Bananas de Contexto, ele só precisa de um em cada lado. Bananas adicionando bananas a uma lista B. Só para esclarecer isso, vou dizer B end. Vou adicionar bananas com uma de cada lado e imprimir, imprimir, imprimir outra lista. Imprima a lista de compras original. Imprima o que você quiser. Porque quando eu escrevo click e corro, como você pode ver, bananas depois de adicioná-las apenas ao B, todas elas se tornam iguais. Por serem mutáveis, eles estão vinculados à mesma lista O que significa que quando adicionamos banana a um, adicionamos banana a todos. Então, como você pode ver, quando uma lista muda, todas elas mudam. Então, espero que tenham gostado, espero que tenham entendido. E no próximo vídeo, veremos algumas operações comuns que podemos usar em nossas sequências Nos vemos em alguns segundos. 54. 5. Operações de sequência comuns: Ok, vamos continuar e vamos ver agora as operações de sequência comuns. Vou abrir um link aqui que vou fornecer a você . Aqui vai. Esta é a documentação, biblioteca Python.org, o tipo STD, acho que significa biblioteca padrão Don e os Depois de acessar o link, farei um controle para encontrar e procurarei operações de sequência comuns. Lá vamos nós. Agora, algumas dessas operações você já deve ter visto. Se você olhar aqui, você pode ver que x em retorna verdadeiro. Se um item de for igual a x l, retornaremos false. Já vimos isso ser usado muitas vezes em declarações if ao comparar duas strings. Também temos o X zero em que retorna false se um item de for igual a x. Também temos concatenação, assim como conseguimos adicionar duas strings para duas strings Também podemos adicionar duas listas com o seno positivo. Temos a multiplicação que cria ou multiplica a sequência, que em nossos exemplos eram sempre sequências multiplicadas por um inteiro, apenas duplicaria essa sequência várias vezes, como Também podemos acessar um item com o suporte. Podemos fatiar, fatiar nossa sequência usando os colchetes Podemos dividir a sequência usando uma etapa usando os colchetes Temos o comprimento, acredito que já vimos esse. Ele apenas retorna o comprimento do S ou o número de itens que temos. Lembre-se de que isso não considera o índice começando em zero. Não os contamos como 012. Se tivermos, por exemplo, uma sequência que vai de 0 a 7, isso significa que temos oito itens Em seguida, temos o mínimo que retorna o menor item, o máximo que retorna o S. E essa coisa de índice muito complicada, que se você simplesmente tirar tudo do lado e deixar o índice x, você fornece o item x. E então esse método, ou essa função, ou essa operação para ser mais preciso, retorna o índice da primeira ocorrência de x em Finalmente, temos a operação de contagem de pontos S, que retorna o número total de ocorrências de x in Quantas vezes, digamos que estamos procurando banana, quantas bananas existem nessa lista de compras? Você usaria o médico. Ok, então é bem simples. Não há muita coisa aqui. Eu recomendo que você os examine. Você entende cada um deles. Já os vimos antes e agora vamos ver alguns deles em nosso programa. Vou abrir com listas e casais. Vou entrar novamente, o Python está lá, o Python está lá, então clico no novo arquivo de código Python e chamo isso de listas de sublinhados e chamo isso de listas de sublinhados Deixe-me fechar essa. Vou criar números de sublinhado aleatórios, que serão iguais a 162-51-2068. Vou duplicar isso e mudar E os números que eu terei aqui são 695-41-2365 7.584, e a propósito, esses são apenas números aleatórios Só recomendo que você encontre números aleatórios altos, ou números aleatórios grandes e números aleatórios pequenos. Em seguida, vou imprimir o mínimo dos números pequenos. Vou duplicar isso e alterá-lo para o máximo. Em seguida, selecionarei essas três linhas incluindo o espaço vazio, e as duplicarei também E então vamos usá-los para os grandes números aleatórios. Tudo bem, então, com isso resolvido, deixe-me escrever, clique e execute, e não deve haver nenhuma surpresa aqui O menor número nos números pequenos aleatórios é um. O maior deles é 68. O menor dos números grandes aleatórios é 365. E o maior ou o número máximo é 7.584 Nada muito importante aqui Simplesmente usamos uma operação muito comum que fornece o mínimo e o máximo. Foi só uma demonstração. Agora, com esse conhecimento em mãos, é hora de enfrentar um pequeno desafio para você. Você precisa testar outros métodos ou operações que eu usei. A palavra operações pode ser imprima a saída do comprimento do método em nossas duas sequências Imprima a saída do método. Conte com a sequência com as mesmas letras aparecendo várias vezes. O que eu quero dizer com isso? Ferrari A Ferrari tem a letra R aparecendo várias vezes nela. Você precisa usar esta Ferrari porque lembre-se uma corda também é uma sequência Você usará a contagem da Ferrari e contará quantas vezes aparecemos lá Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, como você conseguiu fazer isso? A primeira parte do nosso desafio foi imprimir o comprimento. Então, vou imprimir o tamanho dos números pequenos, imprimir o tamanho dos números grandes aleatórios, clicar com o botão direito do mouse, executar e pronto. Temos cinco por cinco. Observe que 16 estaria no índice número zero, correto. Então 123,4 Mas neste caso, mesmo que o índice pare em quatro, temos 12345 12345 elementos. Só para testar isso, vou criar um elemento extra. Portanto, devemos ver que o comprimento de grandes números aleatórios deve se tornar seis. Vamos lá, pegamos um seis. Para a outra parte do desafio, vou adicionar uma impressão vazia e vou imprimir uma Ferrari Faça e eu contarei o número de Rs que eu tenho. Se eu escrever, clicar e correr, verei que temos três R's na minha Ferrari Talvez alguns de vocês tenham criado algo como essa mensagem igual E então você envia uma mensagem aqui em ponto, é exatamente a mesma coisa, mas eu decidi usá-la explicitamente Significa explicitamente que eu não a armazeno em uma variável, eu imediatamente conto com ela de forma explícita Tudo bem, então um pequeno truque antes de partirmos. Acho que é uma lição muito simples aqui. Então, vou te dar um pequeno desafio extra para mexer com sua cabeça se eu tentar fazer o seguinte Se eu quiser imprimir Missy P dot count e eu uma conta SSI Observe que temos MISSI aqui e também temos SSI neste lado Quantos serão contados? Vai contar dois ou vai contar um? Se eu escrevo, clique e corro, veja isso, só conta um deles. Porque se você observar de perto o que isso diz, o número total de ocorrências de S, mesmo que não explique muito bem, uma vez que encontra uma delas, não considera a segunda parte dela também O que significa que conta este e o outro seria apenas um S I. Se você quisesse, você poderia ter feito o seguinte. Agora, isso deve contar ou retornar pelo menos dois. Lá vamos nós. Então, apenas algo para ter em mente. Espero que tenham gostado. Essa foi, creio eu, uma aula muito simples, espero que tenham gostado. As operações virão e serão úteis no futuro. Na próxima lição, aprenderemos sobre operações em sequências mutáveis E estão pendentes nossas listas onde realmente começaremos a criar um projeto muito elaborado e agradável Te vejo então. Obrigado por assistir. 55. 6. Operações em sequências mutáveis e anexar a uma lista: Ok, é hora de começar a fazer operações em sequências mutáveis e também aprender a acrescentar listas, mesmo que já tenhamos anexado listas, mas Este também será o início de um projeto que faremos com talvez quatro ou cinco vídeos. Então, vamos seguir em frente e começar a jornada. Primeiro de tudo, vou entrar no arquivo e criar um novo arquivo Python chamado Creating car, ou building underscore car ou building underscore Lá vamos nós. Em primeiro lugar, vou criar a opção de sublinhado atual Eu vou dizer que a escolha atual é igual a a. Então eu vou dizer que as partes sublinhadas do carro são iguais a uma lista vazia Isso será apenas para criar uma lista vazia que preencheremos mais tarde. Por que isso está me incomodando? Acho que só precisa de uma linha extra. Sim, lá vamos nós. Python não gosta que você termine no final. Ele sempre gosta de ter uma linha extra vazia de espaço. Não me pergunte por quê. Em seguida, vamos criar um loop temporal aqui. E vamos fazer o loop enquanto a escolha atual for diferente de zero. A propósito, é por isso que definimos a opção atual como a. Porque se a definirmos como não, isso causará um erro porque você não pode comparar algo diferente de zero, você precisa ter algum tipo de valor novamente, verificaremos se a escolha atual é diferente de zero e, em seguida, verificaremos se a opção atual está em 12345 Se a escolha atual estiver nessa string que temos aqui, faremos o seguinte. Vamos imprimir adicionando o formato de campo de substituição e a opção atual. Então aqui eu vou dizer outra coisa: imprima, por favor, adicione uma opção ou adicione uma opção. Adicione uma opção da lista abaixo. E eu vou imprimir o seguinte. Vou imprimir 12 pontos ou rodas de colunas, Boom. Para as luzes duplicarem, as asas dianteiras duplicam. Ah, não, assentos, janelas duplicadas acabam E então teremos 345 e o Todo-Poderoso zero. Então eu vou dizer que a escolha atual é igual à entrada. Sua escolha aqui. Tudo bem. Portanto, depois de concluir esse código, recomendo que você o examine com muito cuidado para entender adequadamente o que está acontecendo. Percorra linha por linha para que você possa ver claramente o que está acontecendo. Porque eu vou explicar isso para você. Primeiro de tudo, quero que você se importe com a indentação. Portanto, na escolha atual, estamos sempre recebendo uma entrada dentro dela enquanto entramos aqui. Depois de obtermos essa entrada, verificamos se a escolha atual está em 1234 ou cinco Se for, digamos que a pessoa escolhe 11 estará dentro ou nesta string atual que temos aqui Se for, vamos imprimir adicionando um ou adicionando dois ou adicionando qualquer coisa. Mas se o usuário pressionar um número como oito, digamos, ou 510, por exemplo, entraremos no outro e indicaremos ao usuário do nosso programa que não, escolha entre as opções que fornecemos a você Não enlouqueça aqui. E então, independentemente do que ele escolha, a menos que ele escolha zero, é claro Porque lembre-se de que, embora a escolha atual seja diferente de zero, continuamos percorrendo esse ciclo. Se a pessoa escolher cinco, ou quatro, ou dez, ou 11, ou um, ou 19, ou 500.000, vamos pedir uma escolha atual novamente Se você ainda não tem certeza de como isso funciona. Novamente, recomendo ir linha por linha, entendendo adequadamente o que está acontecendo. Vou clicar com o botão direito do mouse e vou correr, e vou mover isso para o lado. O que aconteceu aqui? Em primeiro lugar, temos a escolha atual como um traço. Verificamos a condição aqui. Acabou sendo verdade, que significa que entramos aqui, verificamos se a escolha atual está em 12345 Não, não foi. Então entramos no Ls e imprimimos tudo aqui. Boom, lá vamos nós. Quando terminamos a impressão, saímos do Ls e tivemos a escolha atual Porque lembre-se, a escolha atual não faz parte do bloco de código do nosso Ls. Estamos aqui na escolha atual. Digamos que eu escolha oito. Qual você acha que será a saída? Pense nisso antes de realmente pressionar Enter. Vamos lá, porque oito não está em 12345. Imprimimos os Ls aqui e temos todas essas opções. Agora vou escolher uma dessas opções. Eu vou bater em um. Estrondo. Lá vamos nós. Diz adicionar um, porque um faz parte do 12345, depois 2345 Se eu chegar a zero, aí está. Você pode ver que o programa foi encerrado. Novamente, eu recomendo que você teste, brinque entenda exatamente como isso funciona. Agora, queremos começar a adicionar esses números às peças do nosso carro. Depois de dizermos que estamos adicionando algo, faremos o seguinte. Vamos verificar se a escolha atual é igual a um. Vamos abrir a caixa de peças do carro e adicionar rodas. Que tal isso? Mas se não for um, vamos verificar LF, a escolha atual é igual a dois, então peças de carro, uma caneta serão luzes Vou pressionar Enter e vou duplicar isso, 345. Vou ter 34,5. Vou adicionar asas dianteiras, assentos e janelas O que está acontecendo aqui? Obviamente, se você ainda não terminou o código, pause o vídeo, termine o código e volte para que você possa entender claramente o que está acontecendo aqui O que temos é verificar se a escolha atual é igual a um e, em seguida, vamos adicionar rodas. Se a escolha atual for igual a dois, adicionaremos luzes. Se a escolha atual for igual a três, adicionaremos a asa dianteira às peças do carro. Estamos anexando as peças do carro da mesma forma que anexamos a lista de onde estão Aqui, como se estivéssemos anexando a lista B com bananas ou como se estivéssemos anexando a lista de compras com os biscoitos Agora, obviamente, poderíamos ter usado o sinal de mais igual também, mas usar o acréscimo de pontos é mais sofisticado. usado o sinal de mais igual também, mas usar o acréscimo de pontos é mais sofisticado. Vamos chamá-lo assim? Estamos fazendo exatamente a mesma coisa aqui. Vou remover as linhas vazias que temos ao redor. Agora que você entendeu tudo, adicionarei um espaço extra. E assim que sairmos do nosso loop Y, vou imprimir as peças do carro que temos. Na verdade, vamos adicionar um espaço aqui. Se eu escrever, clicar e correr, quero adicionar Rodas. Ele me diz adicionando 123.335,0 Antes de pressionar zero e antes de você fazer isso do seu lado, pense em qual será a saída Sempre faça isso, nunca aperte Enter e tente analisar. Pense antes de realmente pressionar Enter, pense em como deve ser a saída e pronto. Vamos dar uma olhada cuidadosa aqui. Como você pode ver, pressionamos uma, que era rodas. Apertamos dois, que eram luzes. Pressionamos 33 vezes, então temos três asas dianteiras, você nunca pode ter asas dianteiras suficientes. E então, finalmente, pressionamos cinco, então temos janelas no final. Como você pode ver, estamos construindo nosso carro adicionando um componente por vez. Por isso, recomendo que você teste todo esse código, certifique-se de que tudo funcione como você espera, adicione todas as peças do carro e outros enfeites e certifique-se de entender como é a sequência de eventos e as saídas Porque uma vez que você tenha tudo isso, eu vou te lançar um desafio. Seu desafio será adicionar um item, então adicione o aparelho de som como uma opção ou como um dos itens que podemos comprar com nosso carro E certifique-se de procurar todos os lugares onde precisamos fazer as modificações. Teste isso. Certifique-se de que você também pode adicionar esse item. muito importante testá-lo além do vídeo agora mesmo e aceitar o desafio. Ok, vamos começar com o desafio. Você pode ter feito isso e pode ter descoberto por que isso é tão complicado A primeira coisa que precisamos fazer é adicioná-lo como uma opção. Vou adicionar um seis, vou adicionar um estéreo. Em seguida, precisamos realmente ser capazes de anexá-lo à nossa lista Vou adicionar uma linha extra e duplicá-la. Pronto, porque sou preguiçoso, vou fazer esses seis Isso será um aparelho de som. Lá vamos nós. Agora, se eu escrever, clique e eu corro, veja isso. Eu tenho a opção de adicionar um aparelho de som. Mas se eu apertar seis e apertar Enter, Interessante, isso não me diz que estamos adicionando um seis, mesmo que eu o tenha aqui. Se eu tentar terminar, ainda tenho uma lista vazia. O que dá? Bem, há mais um lugar em que preciso adicionar um seis, que está aqui, para que essa condição possa realmente ser acionada. Agora eu clico com o botão direito e corro e tento acertar seis e outros seis, e talvez outra asa dianteira. Por que não atingir zero? E lá vamos nós. Você pode ver que eu tenho um aparelho de som. Você pode estar pensando, bem, isso não foi tão ruim. Quer dizer, acabamos de adicionar algumas linhas de código, algumas palavras aqui e ali, sem problemas. Bem, e se alguém aparecer e te disser, você sabe o que, este carro precisa? Mais algumas peças. Então, eles entregam 500 peças que você precisa adicionar. Imagine isso por um segundo. Imagine ter que adicionar mais 500 peças. Em primeiro lugar, exibi-las aqui , são mais 500 impressões que você precisa adicionar, mais 500 L ifs que você precisa adicionar E isso nem é possível. Você precisa ir até 500 números, então você deve contabilizar 678-60-7080, 125, 350, 125 Então, um grande erro aqui. Esse é um problema que resolveremos a seguir, próxima vez em alguns segundos, quando você assistir ao vídeo , chamado de iteração sobre listas Então, eu vou te ver então. 56. 7. Iterando sobre uma lista: Ok, agora é hora de começar a otimizar nosso código usando listas A primeira coisa que precisamos fazer é digitar o código a seguir na parte superior. Aqui, vou adicionar dois espaços e criar uma lista das peças disponíveis. Será igual ao seguinte. Vamos fazer com que as rodas controlem D, para duplicar o controle das luzes D. Controle das asas dianteiras D. Controle dos assentos D. Controle janelas D. Pronto, lá vamos nós Agora temos a lista das peças disponíveis. A próxima coisa que precisamos fazer é usar essa lista para imprimir as seguintes linhas. Na verdade, vou comentá-los porque você terá o desafio de fazer isso sozinho. Imprima nossas peças disponíveis. Crie um loop de quatro sobre as peças disponíveis que temos. Use-o embaixo do outro. Imprima o índice da peça e o nome dessa peça ao lado dela. Você precisará usar o índice que aprendemos nas operações comuns. Não sei com que rapidez você está analisando as pontuações de alguns vídeos atrás. Deve parecer idêntico ao de quando codificamos na lição anterior O que significa que devem ter a mesma aparência de rodas de 12 pontos. Devemos ter a mesma saída que aqui. E, finalmente, vou te dar uma dica. Se você não quiser ver a dica, recomendo que você pause o vídeo agora mesmo e acesse o do Desafio 321 Oh, bem, sim. Às vezes, não me lembro exatamente quais são os desafios, mas aí Essa foi a sua dica, você já a tinha. Se você pausar o vídeo, fez o desafio e voltou e descobriu que a dica era algo que você já sabia, ficará muito Mas de qualquer forma, pause o vídeo agora mesmo e vá para o desafio Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Espero que você pelo menos tenha dado o seu melhor. A primeira coisa que queremos fazer é criar esse loop frontal que abrange todas as nossas peças disponíveis. Vou dizer quatro partes na parte disponível, dois pontos e pronto Agora, examinamos todas as nossas peças disponíveis, uma por uma. Em seguida, vou imprimir o seguinte. Vou abrir meu campo de substituição aqui, e essa é a nova maneira de usar o formato de pontos. Vou colocar aqui as peças disponíveis. Faça índices e anotações. Quando eu clico na guia, ela é preenchida automaticamente e adicionei esta pequena parte atrás dela Acredito que já falamos sobre isso. Mas como estou gravando, Sam cortou isso. Podemos ver que o F foi adicionado automaticamente. Nós já conversamos sobre isso. Estou usando o índice de pontos nas minhas peças disponíveis e estou procurando a peça. Então eu também preciso adicionar um mais um aqui. Mãe, hmm. Por que você acha que eu adicionei um mais um? Isso será um pequeno desafio para você descobrir antes de terminarmos quando eu clicar na peça aqui, porque quero imprimir a peça quando clico com o botão direito do mouse e dou uma olhada, recebo exatamente a mesma entrada. Então, vamos falar sobre por que temos um mais um aqui. Bem, se não tivermos isso mais um aqui e clicarmos com o botão direito do mouse e olharmos para a saída que obtemos, obtemos zero rodas, uma luz. O índice de pontos fornece o índice da primeira ocorrência do item que você está procurando ao digitar uma parte. Por exemplo, parte quando estamos na primeira parte, que são as rodas. Uh hein. Olha isso. Temos rodas, seu índice zero. Boas luzes. Seu índice é um, índice da asa dianteira é dois. Isso está correto. Mas como usuário, como eu, por exemplo, estou usando esse programa, vou entrar aqui e dizer, oh, boa olhada nisso. Quero adicionar algumas rodas, apertar zero, pressionar enter. E eu fico tipo, o que, o que é isso? Que tipo de feitiçaria é essa? Estou tentando adicionar rodas e você simplesmente me expulsa do meu próprio programa. Sim, não é uma boa maneira de impressionar seu chefe. Então, precisamos adicionar um mais um aqui para que ele adicione um ao índice, e agora o usuário pode realmente pressionar em um e ele diz que está adicionando um. Acerte zero. Pronto, pegamos as rodas. Esse foi o desafio. Agora podemos adicionar um item extra aqui de forma fácil e perfeita Digamos que eu quisesse ter um DVD player. Eu apenas digito ali na parte superior quando clico com o botão direito do mouse e executo. Olha isso. Agora temos um DVD player. Eu posso adicionar mais partes que eu quiser. Não vou adicioná-los agora porque esse código não está pronto. Agora, se eu pressionar sete, pressiono Enter. Sim, ainda não funciona. Preciso adicioná-lo aqui ao lado das opções atuais e também preciso acomodá-lo com uma declaração Lip. Mas começamos a otimizar nosso código. Na próxima vez, aprenderemos sobre a enumeração E veremos como isso vai nos ajudar a reduzir todo esse bloco de código aqui. E esse também. vemos no próximo vídeo, onde aprenderemos sobre enumerar em funções. Te vejo então. 57. 8. A função de enumerar: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, aprenderemos sobre a enumeração E também usaremos o enumerate para atualizar Então, vamos começar. Antes de tudo, precisamos entender do que se trata a enumeração Em primeiro lugar, a função enumerate em Python converte um objeto de coleta de dados em um objeto coleta de dados em um Vamos nos aprofundar um pouco mais. Alguns conceitos serão confusos no início, mas não se preocupe Teremos exemplos e isso nos permitirá entender tudo. Ele retorna um objeto que contém um contador como chave para cada valor dentro do objeto. Quando você enumera uma lista ou qualquer sequência , ou nessa situação, chamamos isso de O que significa que podemos iterar sobre ele, como quando fazemos com o loop quatro Iteramos sobre uma string ou iteramos sobre uma lista Quando você coloca ble na enumeração, ela retorna Ele retorna a chave e retorna um valor associado a essa chave. O que todas essas coisas significam? Isso também facilita a manipulação nossas coleções de dados quando isso é possível Por exemplo, posso enumerar minhas peças disponíveis, o que retorna a peça e um número associado Esse número associado será o índice. Mas eu ainda o chamo de número associado ou chave associada. Porque se você enumerar algo que não seja uma lista típica, uma string ou um topple, você obterá algo diferente E veremos o que quero dizer com isso mais tarde, quando aprendermos sobre dicionários e conjuntos Em nossa situação atual, sempre teremos como chave o índice. Você pode até mesmo tomar isso como regra. Mas lembre-se de que a chave nem sempre será o índice. Sem mais delongas, vamos ver alguns exemplos para entender claramente o que é tudo isso. Em seguida, você pode voltar ao slide e ler novamente a parte teórica da enumeração Confie em mim, é um conceito muito fácil que não é tão complicado quanto você pode ver aqui. Se você voltar ao nosso código aqui, o que queremos fazer é enumerar nossas partes aqui Como você pode ver, quando criamos um loop for, examinamos nossas partes disponíveis, por isso é chamado de itterble Uma lista é um problema porque não podemos fazer com que ela repita sobre ela Vamos fazer o mesmo, mas desta vez usando o enumerate Em primeiro lugar, vou comentar essas linhas, agora vou excluir as impressões, mas recomendo que você as mantenha ou copie o código e o coloque abaixo ou em um novo arquivo Python Porque então você pode ver a progressão do nosso programa. No meu caso, vou excluí-los. Eu recomendo que você não diga que J crashed. Ok, estamos de volta depois de um pequeno acidente. Eu comentei essas linhas aqui. Vou criar o seguinte for loop. Vou dizer parte de quatro números para enumerar Observe que tenho dois itens aqui em vez de apenas um na peça. Estou dizendo número e peça para ser ainda mais preciso e, paralelamente à teoria que aprendemos, podemos até chamar isso de chave. Agora que tenho isso, vou imprimir o seguinte. Estou abrindo o campo de substituição aqui. Lá dentro, vou digitar o número da nossa chave porque a alterei para chave, digite a tecla e pressione Tab para que seja preenchida automaticamente Aqui mesmo, na tecla do lado esquerdo, dois pontos abrem o segundo campo de substituição e a peça Vamos ver qual será a aparência da saída quando eu escrever, clicar e executar. Olha isso. Como você pode ver, temos a chave, que são as chaves que são o índice. E, novamente, isso ocorre apenas nessa situação quando estamos usando listas. Agora, novamente, deixe-me reiterar isso. Cerca de 80% das vezes, a chave será o índice, mas em determinadas situações não será. É por isso que estou enfatizando isso o máximo possível. Temos a chave aqui, os números associados às peças. Agora você pode começar a entender o que é um contador A: você tem uma chave para cada valor dentro de um objeto. Onde está o objeto em um objeto enumerado. O objeto de enumeração tem duas partes nele. Ele tem a chave e a peça real que faz parte das peças disponíveis que temos, que é o emparelhamento de peças-chave Agora você notará que aqui, as rodas começam do zero. Obviamente, não queremos isso de forma muito simples. Podemos simplesmente adicionar um mais um. Corra essa bola. Lá vamos nós. Espero que você tenha entendido como isso funciona. Vou remover as duas linhas a seguir. Novamente, recomendo que você os guarde para que possamos ver a progressão do nosso programa Mas agora temos uma alça dianteira muito limpa que imprime todas as nossas peças disponíveis. Espero que você tenha entendido como a enumeração funciona porque você tem um desafio Seu desafio será enumerar o alfabeto. Você precisará criar um novo arquivo Python e chamá-lo de enumeração alfabética, ou, obviamente, o que você quiser dentro de enumerar sobre uma string, ou seja, o alfabeto, uma string, não uma lista e chamá-lo de enumeração alfabética, ou, obviamente, o que você quiser dentro de enumerar sobre uma string, ou seja, o alfabeto, uma string, não uma lista de strings. Você terá uma string que é o alfabeto ABCDEFG, qualquer que seja o E você precisa enumerar essa string e imprimir cada valor com o número associado Pause o vídeo agora mesmo e vá fazer o desafio. Ok, vamos lá. Aqui eu vou dizer quatro caracteres de índice em enumerar e vou enviar o alfabeto A, B, C, D, E, F, G, H I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y e Z. Sim, aí está, está correto. Dentro, está correto. Dentro, eu simplesmente vou imprimir o índice, o Observe que aqui eu chamei o índice chave. Vou me referir a ele como o índice daqui para frente. Mas, novamente, você precisa saber que nem sempre é o índice. Mas, em qualquer caso, se você quiser, pode começar a usá-lo como um índice a partir de agora, mas mais tarde você verá que isso nem sempre é verdade. Mas de qualquer forma, quando eu escrevo, clico e corro, aí Você pode ver que começamos às 0123, 43d, Nice. 56, et cetera, et cetera, até chegarmos a 25 Z. Espero que tenham gostado. Espero que você tenha entendido a importância de usar a enumeração E nos vemos no próximo vídeo, onde realmente usamos esse novo poder encontrado para melhorar ainda mais nosso código. Espero que tenham gostado. Nos vemos em alguns segundos. 58. 9. Melhorando nosso código: Bem-vindos de volta, meus colegas programadores de Python , a outro vídeo em que melhoraremos nosso código no carro E aqui, como você pode ver, já fizemos alguns ajustes em que , em vez de imprimir manualmente todas as peças disponíveis do carro, agora fazemos isso com muita facilidade usando um loop for. Isso teve muitos benefícios. O primeiro benefício foi que ele tornou nosso código mais curto. O segundo benefício foi torná-lo mais dinâmico. Isso significa que, ou quando adicionamos mais peças disponíveis, elas são exibidas automaticamente . Isso também tornou nosso código mais fácil depurar e encontrar problemas Agora precisamos melhorar isso ainda mais. Houve um problema com esse programa. Alguns de vocês podem tê-lo encontrado, mas alguns de vocês podem não. O problema está na seguinte linha número 15, onde verificamos se a escolha atual está em 123456 Qual é o problema? Está funcionando bem aqui. Se eu digitar três, pronto, vou adicionar três. Se eu digitar, por exemplo, oito, aí está. Você pode ver que não está lá. Agora, um dos problemas é obviamente que, se adicionarmos, por exemplo, um DVD player na chave número sete, não registrado, isso é apenas parte do problema. Esse é um pequeno problema que podemos resolver facilmente adicionando um sete aqui no topo. O outro problema, e o problema muito mais drástico aqui é que se você digitar 12 e pressionar Enter, na verdade aparece adicionando 12. Oh meu Deus. Se eu digitar 23, ele também diz que está adicionando 23. Agora, se eu digitar 20, vamos lá. Você pode ver que isso nos diz, adicione uma opção da lista abaixo. Então, qual é o problema? Reserve um pouco de tempo para entender. Então, por exemplo, se eu digitar 123, ele também está adicionando 123. Então, veja o código, veja a condição, qual é o problema aqui? Está bem? Então, se olharmos de perto, veremos que estamos verificando se a escolha atual está em 1234 Agora, essa é uma sequência inteira própria. Isso significa que verificamos se a escolha atual, por exemplo, 123 está em 123456 Então, por exemplo, se eu digitar 456, ele também me diz adicionando 456, se eu digitar 4536, pronto Porque os cinco do quê? 4536 não está em 123456. Então esse é um grande, grande problema. Essa é a primeira coisa com a qual precisamos lidar. Então, o que vamos fazer é, ou vamos criar uma lista de todas as opções válidas aqui , antes de realmente começarmos a percorrer o loop Wi e obter a escolha atual e outros enfeites Nós vamos fazer o seguinte. Vamos criar uma lista de nossas opções válidas. Vamos dizer isso para I no alcance, com o alcance sendo um no comprimento das peças disponíveis mais uma. Vamos obter opções válidas, acrescentar um STR e imprimir as opções válidas, código estranho e estranho O que é isso tudo? Antes de tudo, quero que você passe alguns segundos após o vídeo e tente entender o que esse código faz. Eu recomendo que você faça isso. E depois disso, eu recomendo que você adicione um ponto de interrupção para que você possa tentar ler esse código novamente para que você possa ver, tudo bem, o que está acontecendo depois de fazer isso, tente fazer outra previsão de como será. Por fim, executaremos o código. Leve alguns minutos. Ok, bem-vindo de volta. Para mim, nada mudou. Espero que você tenha experimentado este mini mini desafio. Quando eu executo este programa, você verá que essa é a saída que eu obtenho, 123.456,7 E você verá que cada um desses são itens individuais dentro de desses são itens individuais dentro uma lista de opções válidas Como você pode ver, não há uma única sequência completa de 1234, uma ao lado da outra Agora temos uma lista clara das opções disponíveis. Vamos ver o código e o que ele realmente faz. Primeiro de tudo, criei uma string vazia, uma lista vazia. Não há muita coisa aqui. Em seguida, criamos esse loop dianteiro. Agora temos o I sendo a variável que vai aumentar. Não há nada muito especial aqui. Então, o especial é o alcance que temos. O alcance vai de uma em toda a extensão das peças disponíveis mais uma. E então, em cada ponto desse intervalo, obteremos opções válidas e as anexaremos, mas elas serão convertidas em uma string Por que, em primeiro lugar, vamos pensar no comprimento que temos aqui ou, na verdade, em toda a faixa. Vamos considerar toda a gama e o que está acontecendo. Nosso objetivo é fazer com que todos os números a seguir correspondam às partes que temos aqui, como você pode ver. Nesse caso, eles vão de um a sete na minha faixa. O que estou tentando fazer é associar um com rodas e o último número, que é o DVD player, com sete, isso deve ser 123.456,7 É por isso que começo com um intervalo de um Faz sentido, certo? Porque eu quero começar com um. Não é um zero, mas um. Mas o que isso significa é que, se eu quiser ir até o final do DVD player, não só preciso percorrer o comprimento, porque lembre-se de que, se fizermos o comprimento, ele retornará sete. Se eu imprimir o comprimento das peças disponíveis, recebo sete. Agora você pode estar dizendo, ok, então por que não usar sete aqui? Bem, jovem gafanhoto, você não pode usar sete porque em intervalos sobe dois Mas deixe-me ouvir você dizer isso de novo. Subindo dois, mas sem incluir, é por isso que temos que adicionar um mais um aqui no final para acomodar o último elemento. Porque se eu remover isso mais um e escrever Clique e eu corro, veja só, eu só chego a seis porque chega a sete, mas não está incluído. Eu tenho que adicionar um mais um. Vou remover essa linha de código. Isso foi apenas para fins de depuração. Se quiser, você pode simplesmente comentar colocar em outro arquivo para entender claramente. Espero que tenha ficado claro. A última coisa que precisamos entender é por que estamos convertendo isso em uma string Aqui estamos convertendo isso porque remember in range é um número inteiro, queremos convertê-lo em uma string porque a escolha atual que obtemos aqui, obviamente, essas opções válidas serão usadas em obviamente, essas opções válidas serão usadas Vai ser um desafio para você, mas será usado em algum lugar aqui para verificar se a escolha atual, eu a dei. Mas tudo bem, está nas escolhas válidas. E lembre-se, quando estamos recebendo uma entrada para a escolha atual, é uma string, por isso que a convertemos em uma string. Espero que tenha sido entendido. Espero que não tenha havido ambigüidade. Se você tiver alguma dúvida, deixe-a sempre que possível. Fora isso, é hora de um pequeno desafio. Seu desafio será imprimir as opções no loop while. Verifique se a opção atual está nas opções válidas e, em seguida, imprima que realmente adicionamos essa opção. Use a entrada de escolha atual como um índice para obter a peça escolhida das peças disponíveis, anexe as peças do nosso carro e teste-a na última peça e veja se funciona Esse é um desafio difícil. Acho que é um dos desafios mais difíceis porque há muitas coisas para fazer aqui, muitas coisas em que pensar. Não é fácil, mas você precisará usar a escolha atual como um índice para obter a peça escolhida das peças disponíveis. Não há dicas aqui, não é uma coisa fácil, mas leia com atenção, leia devagar, disseque e entenda Porque a escolha atual será usada como um índice, o que significa que algo precisa acontecer com ela. Depois de ser usado como índice, você pode obter a peça escolhida entre as peças disponíveis. E quando isso acontecer, você pode anexar as peças do seu carro E o mais importante é que você precisa testá-lo na última parte porque há um pequeno truque aqui. Cole o vídeo agora mesmo e dê o melhor de si. OK. Então, como você conseguiu fazer isso? Por favor, se você conseguiu fazer o desafio, publique-o em algum lugar onde puder. Talvez na seção de perguntas ou onde você puder. Postado lá, postado nas redes sociais, marque-me, eu não me importo. É uma grande conquista se você conseguiu fazer esse desafio sozinho, eu o parabenizo Você está se tornando um ótimo programador de Python. Se não for um problema. Contanto que você tenha feito o seu melhor, isso é o mais importante , porque se você tentar , encontrará muitos problemas. E depois de encontrar todos esses problemas, você verá a solução com muito mais clareza. Porque a primeira coisa que precisamos fazer é remover essa parte e dizer que a escolha atual está nas opções válidas. Agora, se eu escrever Click e executar, se eu digitar 12, veja só, não funciona mais porque minhas opções válidas são de uma a 7123, etc., até sete e depois Isso não funciona. Um a três, não funciona mais. 45 não mais 56 não funciona mais. Só trabalhamos com as opções válidas que temos aqui, o que é incrível. Essa é a primeira parte. Essa foi a parte mais fácil do desafio. A outra parte é usar a entrada de escolha atual como um índice para obter as partes escolhidas das partes disponíveis Toda a premissa é comentar essas linhas e substituí-las por um código muito mais simples Agora, se você não tiver certeza em algum momento, se descobrir que essa era a chave que eu precisava para terminar esse desafio, pause o vídeo novamente. Não tem problema. Tente fazer o desafio novamente. Não há problemas lá dentro. Aqui, como você pode ver, estamos dizendo que estamos adicionando a opção atual ou qualquer outra coisa, adicionando essa opção. Agora precisamos usar o índice. Precisamos usar a escolha atual como um índice para a parte escolhida. Primeiro de tudo, precisamos ter o índice. O índice que você pode estar pensando deve ser igual à escolha atual. Mas o problema aqui é que a escolha atual é uma string, o índice deve ser um inteiro que convertemos em um inteiro Ótimo. Em seguida, obteremos a parte de sublinhado escolhida Eu vou dizer que a parte escolhida é igual às partes disponíveis no índice. Lá vamos nós. Bem simples. Recebemos a escolha atual, digamos que seja de quatro assentos, convertemos em um número inteiro, enviamos para as partes disponíveis e obtemos a parte escolhida Mas isso não é tudo, porque também temos que acrescentar as peças do nosso carro à peça escolhida, e esse foi o desafio Ainda não acabou. um pequeno problema aqui sobre o qual eu não falei, mas digamos que foi isso que fizemos , porque há um pequeno detalhe aqui que pode facilmente passar despercebido Observe que um dos últimos pontos do desafio foi testar a última parte. Teste na última parte. Vamos voltar aqui. Se eu escrever, clique e eu corro sua escolha. Digamos que dois para as luzes, três para as asas dianteiras. Vamos adicionar três asas dianteiras. Você nunca pode ter asas dianteiras suficientes. Vamos fazer sete. A última parte, o que é essa lista? Índice fora do intervalo. Hmm, isso é estranho. Deixe-me tentar isso de novo sem a última parte. Vamos testar luzes e três asas dianteiras e acertar zero para terminar. Por que eu não pedi uma luz e três asas dianteiras? Sim, mas o problema é que minha escolha atual era duas. Quando converto dois em um número inteiro , coloco como índice e uso nas partes disponíveis O que são dois nas partes disponíveis? Não são luzes porque começamos às 012. Em vez de ter luzes, eu fico com a asa dianteira. E em vez de três asas dianteiras, consegui três assentos. E é por isso que é muito importante sempre testar seu código. Mesmo que você ache que fez tudo corretamente. Mesmo que você não tenha erros imediatos. É importante testar todos os limites do seu código. Então, como resolvemos esse problema? Reserve alguns segundos para pensar sobre isso. Sim, exatamente. Aqui, fazemos um menos um no índice. Agora, o que quer que pressionemos, removeremos uma e ela será usada para examinar as peças disponíveis. Eu clico com o botão direito, corro agora, o que você quer adicionar? Seis, boom. Adicionando 63. Estrondo. Adicionando 33. Ou quatro asas dianteiras. É zero. Eu tenho um aparelho de som E quatro asas dianteiras. Não testamos o DVD player 77750. Aqui está, senhoras e senhores. Agora temos um código muito bom. Veja quantas linhas de código conseguimos salvar usando nosso novo conhecimento. Lá vamos nós. Agora, ainda há algumas melhorias a serem feitas. Com certeza voltaremos a este projeto para melhorá-lo ainda mais. Mas, por enquanto, espero que tenham gostado. Sei que era um vídeo longo, mas acho que estava cheio de informações muito, muito úteis. Eu recomendo que você passe por isso novamente, entenda exatamente o que está acontecendo nessas três a quatro linhas de código. E no próximo vídeo, aprenderemos como remover itens de uma lista. Então, espero que tenham gostado e nos vemos daqui a pouco. 59. 10. Removendo itens de uma lista: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, aprenderemos como podemos remover em vez de adicionar itens à nossa lista. Agora, como ou qual será o contexto de nossa remoção de itens estava bem em nosso programa Aqui, como você pode ver, quando adicionamos sete, ele nos diz que está adicionando sete. Quando adicionamos mais sete, ele adiciona mais sete. Então, o que vamos fazer é simplesmente quando alguém adiciona sete e depois remove sete ou, quero dizer, se pressionar sete e pressionar sete novamente, em vez de adicionar dois aparelhos de DVD, vamos remover o DVD player. Eu sei que não é o programa mais sofisticado de todos os tempos. Vou lhe dar uma pequena lição de casa que talvez você possa fazer paralelamente para melhorar o programa mais tarde Mas, por enquanto, queremos apenas implementar a remoção de itens de uma lista. Então, vamos começar a começar. Antes de tudo, certo, aqui, depois de receber a peça escolhida, verifico se a peça escolhida está nas peças do carro. Se for, vou fazer com que as peças do meu carro removam a peça escolhida e pronto. As peças do carro L anexam a peça escolhida. Eu poderia realmente ter mudado essa linha, mas está tudo bem. Eu só vou removê-lo. Lá vamos nós. Agora podemos testá-lo e ver se estamos realmente removendo itens. Vou clicar com o botão direito do mouse e executar agora a parte escolhida, digamos que seja 123, e depois pressiono duas novamente. Agora, se eu atingir zero, vamos lá. Você pode ver que primeiro adicionamos rodas, ótimo. Adicionamos luzes, ótimo. Adicionamos uma asa dianteira, ótimo. Mas então pressionamos dois novamente, o que removeu ou removeu as luzes, que significa que só temos rodas e a asa dianteira. Mas você pode ver claramente que há um problema em que diz que estamos adicionando 22 problemas com isso. Em primeiro lugar, estamos dizendo que estamos adicionando dois, embora estejamos migrando para. O outro problema é que estamos dizendo que estamos adicionando dois. Devemos dizer que estamos adicionando a parte escolhida. Estamos adicionando assentos, estamos adicionando asas dianteiras, estamos adicionando rodas. Então, queremos realmente imprimir o que estamos adicionando. E isso vai ser um desafio para você. Seu desafio será imprimir e remover, ajustar o código para que possamos imprimir e remover. Quando estamos removendo um item, isso deve ser lamentável. E adicionando quando estamos adicionando um item com o item que removemos, é claro, com o nome real. Passe o vídeo agora mesmo e vá para o desafio. Ok, bem-vindo de volta. Então, como você conseguiu fazer isso? Não deveria ser um desafio tão difícil. Vou remover a impressão digital daqui. Em vez disso, vou imprimir outra coisa aqui. É aqui que estamos removendo. Vou imprimir, abrir o campo de substituição com a peça escolhida. Vou duplicar isso, manter pressionada a tecla de controle e deslizá-la para baixo. E então eu vou dizer adicionando, ok. Agora, como regra geral, isso não é muito importante no momento, mas será importante quando começarmos a criar bancos É melhor realmente imprimir depois anexarmos ou removermos itens de uma lista ou banco É mais importante do que bancos de dados, porque digamos que essa linha de código não funciona e apresenta erros, quebra ou o que quer que aconteça. Não queremos que o usuário veja que realmente removemos a peça. Portanto, é melhor que o programa quebre essa linha de código, não adicione a parte escolhida e não deixe que o programa imprima que removemos a peça. Então, o usuário disse, ótimo, removemos a peça, mas na verdade ela não funcionou Portanto, é melhor imprimir que removemos ou adicionamos algo depois que ele foi realmente adicionado. Apenas uma pequena dica extra de conhecimento para você. Mas pronto, clicamos com o botão direito do mouse e executamos sua escolha. 123210, Boom. Como você pode ver, adicionando rodas, adicionando luzes, adicionando asa dianteira e, em seguida, removendo a asa dianteira. Remover luzes, remover rodas e tudo o que nos resta é uma lista vazia. Então, espero que você goste, espero que tenha entendido como as listas funcionam. Vamos nos aprofundar um pouco mais na remoção das listas porque pode não ser tão fácil quanto você imagina Esse é um conceito muito simples, às vezes é muito mais difícil remover itens de uma lista. Agora, como eu disse, um pequeno dever de casa extra que você pode fazer sozinho é muito simples Em vez de simplesmente remover um item se ele estiver nas peças do carro. Uma boa regra prática seria, ou uma boa prática do programa, seria realmente fazer ao usuário a pergunta: você gostaria de remover esta parte ou gostaria adicionar mais desta parte Se a peça escolhida já estiver em nossas peças automotivas, você poderia, por exemplo, dizer que , ei, gostaria de adicionar isso? Você já tem essa peça escolhida nas peças do seu carro. Você gostaria de adicionar mais ou gostaria de removê-lo? Isso será um desafio para você. É bem simples. Eu acho que você pode descobrir isso. Não haverá soluções para isso. Mas eu recomendo que você sempre tente mexer e melhorar o código, copiá-lo, colá-lo em outro lugar, a versão correta, e depois tentar alterá-lo Então, espero que você goste, espero que tenha entendido tudo. E nos vemos no próximo vídeo, onde falaremos sobre listas de classificação Coisas muito empolgantes. 60. 11. Listas de classificação: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, vamos começar a aprender como podemos classificar listas sem mais delongas. Vamos começar. A primeira coisa que faremos, como sempre fazemos, é criar um novo arquivo Python e chamá-lo de listas de sublinhados Lá vamos nós. Então, a primeira coisa que fazemos é ter um número um aleatório. E é igual a 124.269,81. Em seguida, duplicarei essa linha e terei número dois aleatório, onde terei os seguintes números, 314, 2.067,92 Agora que temos essas duas listas de números aleatórios, e tenha em mente que são números inteiros, o que vou fazer é combiná-los para formar o número dois aleatório, onde terei os seguintes números, 314, 2.067,92. Agora que temos essas duas listas de números aleatórios, e tenha em mente que são números inteiros, o que vou fazer é combiná-los para formar uma lista grande. Para fazer isso, vou fazer com que o número um aleatório estenda o número dois aleatório. Agora, se eu imprimir o número um aleatório, pense por um segundo como seria ou ficará a saída quando eu escrevo clique e corra. Isso é o que eu recebo. Como você pode ver, temos a lista número um que termina em 81 e a lista número dois começa depois dela. Basicamente, ampliamos a lista aleatória do número um com o número aleatório dois. Mas, como você pode ver, todos os números ainda estão misturados O que queremos fazer é resolvê-los. Então, aqui eu vou fazer o seguinte. Vou fazer a classificação aleatória do número um, vou imprimir o número um aleatório. Se eu escrevo Click e corro, aí está, olha isso. Agora, em vez de os números ficarem todos misturados, eles são classificados do menor para o maior Se passarmos o mouse sobre a classificação, veremos se obtemos a documentação Eu recomendo que você faça isso para cada nova função ou método, ou qualquer coisa que usemos. Você também pode acessar Python.org. Se você clicar aqui, ele realmente o levará ao site em que temos a classificação. Você pode entender as Você pode entender Você pode, por exemplo, usando o inverso, algo que usaremos daqui a pouco, você pode ler sobre como todas essas coisas funcionam. Esse método classifica a lista no local. Como você pode ver, ele realmente classifica a lista, aleatoriamente número um. Então, vamos tentar usar o inverso. Como você pode ver, isso é chamado de palavra-chave. Mais tarde, nos aprofundaremos nas palavras-chave. Usaremos palavras-chave de tempos em tempos, mas só nos aprofundaremos nelas mais tarde no curso Mas, por enquanto, podemos definir o inverso como verdadeiro. Agora, em vez de classificá-los do menor para o maior, vamos classificá-los do maior para o menor É basicamente assim que o tipo funciona. Lembre-se de que isso não cria uma cópia de uma lista. Ele simplesmente reorganiza os itens da lista que já temos Isso pode ser muito útil e salvar vidas, ok? Não nessa medida, mas é muito útil quando você tem uma lista que pode ter vários gigabytes Então, imagine se você tem uma lista de vários gigabytes e precisa criar uma lista totalmente nova que seja ordenada Você vai levar algum tempo. Essa é uma maneira muito mais eficiente. Espero que tenha entendido que não há nada demais aqui. Novamente, recomendo que você leia a documentação, mas, por enquanto, tenho um desafio para você. Seu desafio vai conseguir outro número. Você precisará criar outro número e defini-lo como o número quatro aleatório Antes de ser classificado, você também precisará imprimi-lo. E depois imprima depois de classificarmos número um aleatório. Há alguma alteração E o que isso significa novamente, outro número. Ele deve criar outro número, variá-lo antes que o número um aleatório seja classificado aqui Então eu quero que você imprima outro número novamente e me diga como é a saída. Passe o vídeo agora mesmo e vá para o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Então, a primeira coisa que vou fazer é definir o número um aleatório. Acho que podemos configurá-lo aqui, outro número para o número um aleatório. O sublinhado numb será igual ao número um aleatório. Também vou imprimir outro número. Quando escrevo clique e corro, devemos ver que temos outro número igual ao número aleatório um. Não há muitas coisas para falar aqui. Agora vou adicionar uma impressão apenas para que possamos distinguir entre as duas linhas. E vou imprimir outro número. Novamente, espero que você sempre pense em como será a saída antes de realmente executar. Vamos ver o que vai acontecer aqui. Quando eu clico com o botão direito do mouse e vejo esse número também foi classificado. Oh, minha mágica, não é? Bem, se você acompanhou as últimas lições, você saberá que as listas são mutáveis Outra lista ou outro número aponta para o número um aleatório quando o número um aleatório foi classificado. Por ser mutável, significa que o objeto realmente muda, o que significa que tudo que aponta para esse objeto também mudou, que significa que outro número também foi classificado Espero que tenham gostado, espero que tenham entendido como isso funciona e por que outro número também foi classificado No próximo vídeo, veremos como classificar as coisas, o que significa que, em vez de classificar uma lista, vamos apenas classificar as coisas que estão dentro dela Te vejo em alguns segundos. 61. 12. Classificando coisas: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos começar a aprender como podemos classificar as coisas como sempre A primeira coisa que fazemos é entrar no arquivo, criar um novo arquivo Python e chamá-lo de underscore Agora vou criar uma mensagem com a qual muitos hobbits estão familiarizados Vai ser, não se pode simplesmente entrar em Mordor. Lá vamos nós. Se você não entendeu esse significado ou aquela frase, então parabéns, você provavelmente já teve muito mais encontros sociais do que eu Mas de qualquer forma, o que vou fazer agora é dizer que letras são iguais a ordenadas E eu vou enviar a mensagem como um parâmetro, e depois vou imprimir as letras. Observe novamente, acabei de me lembrar, sempre mantemos um espaço vazio aqui embaixo. Se eu escrevo, clique, eu corro, veja o que eu recebo. Deixe-me registrar isso aqui. Olha o que eu recebo. Eu tenho algumas coisas estranhas aqui. Estranho, tudo bem. Mas então eu tenho M cool e então eu tenho A D, D, E, E, I, I, K, L, L, M, N Op. Tudo bem. Lá vamos nós. Eu não vou dizer todas as letras, mas como você pode ver, há algumas coisas aqui. Em primeiro lugar, a coisa mais importante que você precisa saber sobre o que aconteceu aqui é que criamos uma lista. Você pode entender que essa é uma lista por causa dos colchetes que estão ao redor dessa coleção de itens Em seguida, temos cada caractere individual que estava na mensagem classificado do menor para o maior Os espaços são considerados os menores. Então temos as letras maiúsculas. Só depois temos as letras minúsculas, as ordenadas. O que isso faz? Se passarmos o mouse sobre ela novamente, você verá que ela retorna uma nova lista contendo todos os itens do intervalo em ordem crescente Novamente, sempre podemos abrir a documentação aqui também. Você pode ver que ele também tem sua própria chave reversa. Você pode ir e ver como funciona. Novamente, recomendo que você dedique um pouco de tempo documentação do Python e se familiarize com Você definitivamente verá isso no futuro. Se essa é a carreira que você está seguindo, como você pode ver, o sort cria uma lista e define tudo em ordem crescente Mas não precisa estar apenas em uma mensagem específica, também pode estar em uma lista de números. Se tivermos uma lista de números e tivermos 2,34 0,58 0,73 0,19 ponto 2,1 0,6 Aqui vou dizer que números sublinhados são iguais a números Se eu imprimir classificação e imprimir números, agora você pode estar pensando: por que estamos imprimindo por que estamos Novamente, isso será importante daqui a pouco, porque se eu escrever o clique e executar a primeira coisa, noto que o número ordenado que imprimi é que esse número era uma lista E usamos sorted on the numbers e sort numbers ainda é uma lista que temos, número não classificado. E é importante perceber isso. Por quê? Porque na lição anterior em que tínhamos listas de classificação e usamos a classificação, observe que outro número realmente mudou Na verdade, foi classificado, mas quando estamos usando o método classificado, aqui estamos configurando-o em uma nova variável Estamos criando uma nova lista. E estamos configurando isso lá. Os números em si não estão sendo classificados. Estamos classificando os números. E estamos configurando isso, ou colocando-o na variável de números ordenados, estamos criando uma lista completamente nova E esse é um ponto muito central e essa é a principal diferença entre a classificação por pontos e a classificação Por exemplo, se eu fizer o seguinte, se eu classificar números, o que você acha que será a saída da última linha? Quando eu escrevo, clique e eu corro. Veja isso, você verá que os números também foram classificados. Essa é a principal diferença. Sorted, na verdade, cria uma nova lista e deixa a original intacta. Ele o atribui a uma nova variável ou, para ser mais específico, nós o atribuímos a uma nova variável, e essa é a principal diferença Uma nova cópia é criada com o classificado. Espero que tenha entendido, espero que não tenha sido muito complicado. Agora, o que eu vou fazer é te dar um pequeno desafio. Seu desafio será fazer a coisa errada. Você precisa criar uma variável e defini-la como ordenada por números Crie uma variável, bem simples, e diga que é igual à classificação numérica, imprima os números, imprima os números reais e imprima a variável que criamos em 0.1. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, como você enfrentou esse desafio bem simples? Não há nada demais aqui. Vou simplesmente dizer que outros números são iguais a números. Olha, mesmo antes de tentarmos fazer qualquer coisa, eu também vou dizer que quero imprimir outro número antes mesmo de tentarmos fazer qualquer coisa ou executar o programa. Imediatamente temos um pequeno aviso aqui. Agora, às vezes, esses avisos podem causar erros ou causar problemas com o projeto ou programa, mas às vezes não Nesse caso, eles não causarão nenhum problema. Mas haverá uma saída estranha e inesperada que é simplesmente nenhuma Se passarmos o mouse sobre esse erro, ele nos dirá que a função sort não retorna nada que seja verdadeiro E classificando aqui, classificando listas, se passarmos o mouse sobre a classificação, ela classifica a lista em ordem crescente E quando dizemos não devolve nenhum, significa que não devolvemos nada. aprofundaremos nas funções que retornam funções que não retornam, tarde, nos aprofundaremos nas funções que retornam funções que não retornam, o que é nenhuma, etc Mas, por enquanto, precisamos saber que esse tipo não retorna nada porque , na verdade, classifica a lista em que está sendo usado. Então essa é a essência disso. Não podemos definir outro número classificado igual à classificação de números porque simplesmente não retorna nada Ele apenas classifica a lista e pronto. Tudo bem, antes de sair, eu quero te mostrar algo muito legal. Vamos criar as letras sublinhadas que faltam. E eu direi que é igual a ordenado. E lá dentro vou digitar o seguinte: a rápida raposa marrom pula Preguiçoso, vou imprimir as letras que faltam. Eu também vou ter uma impressão digital aqui. Se eu ler Click and I run, veja o que eu recebo. Eu entendo que os espaços vazios estão sendo definidos no início, bem típico. Então eu vou ter A, B, C, D, E, F G H I J K L M e O P Q R S T U V W X Y N Z. Então, o que você notou sobre a saída que obtivemos Bem, o que você deve notar é que temos todas as letras do alfabeto, e a rápida raposa marrom pula O cachorro preguiçoso é uma frase chamada de frase de pangram que significa que ele contém todas as letras do alfabeto pelo menos uma vez antes de prosseguirmos Eu sei que já disse isso antes, mas uma pequena coisa aqui que também precisamos ter em mente é que se chamarmos nossa variável just sorted, independentemente desse erro aqui, temos um aviso que é chamado de sombras construídas no nome sorted Isso é algo em Python que você precisa saber. Não é muito fácil criar variáveis com nomes de coisas ou funções incorporadas em Python O que significa que já temos uma função chamada sorted, então você realmente não gostaria de criar uma função Mais tarde, aprenderemos como criar funções. Você não gostaria de criar uma função, não gostaria de criar uma variável chamada ordenada Ele chama shadow built in name sorted. Apenas uma pequena lição para as futuras senhoras e senhores. Espero que você goste. Espero que esteja se divertindo. No próximo vídeo, aprenderemos como podemos fazer a classificação com distinção entre maiúsculas e minúsculas Porque observe aqui que o T não está em seu lugar correto. Deveria estar próximo a isso aqui. Então, vamos aprender como podemos fazer isso sem qualquer distinção entre maiúsculas e minúsculas. Muito obrigado por assistir. Espero que você goste e nos vemos em alguns segundos. 62. 13. Classificação não sensível a casos: Bem-vindos de volta, meus colegas programadores de Python , a Neste, vamos criar uma classificação com distinção entre maiúsculas e minúsculas. Vamos continuar e começar. A primeira coisa que vou fazer é garantir que, ao classificar as letras aqui, eu tenha o T na posição correta. É muito simples fazer isso simplesmente aqui. Na função ordenada, adicionarei a e adicionarei uma palavra-chave que é key equal str case fold. Mas lembre-se de que aqui, veja, imediatamente temos um erro ou um aviso, tipo inesperado SDR SDR O que você precisa saber aqui é que você precisa remover os parênteses Por que estamos removendo os parênteses? Bem, porque você viu que a dobra da caixa é na verdade chamada. É uma função que é chamada. Mas aqui não queremos chamar essa função, só queremos usá-la como está, como uma palavra-chave. Quando você remove os parênteses, significa que a função não é chamada, que é o que queremos Agora, se escrevermos Click e executarmos, você verá que temos todos esses espaços vazios. E aí vai, você pode ver que a capital é colocada antes da pequena. Não é por causa de sua ordem, acho que é só por causa de sua ordem aqui. Onde está o T maiúsculo? Ah, sim, é por causa de onde o T está realmente colocado. O grande T é o primeiro, é por isso que sua ordem é assim. A próxima coisa que vamos fazer é tentar organizar uma lista de nomes. Vou criar a lista de nomes aqui. Em primeiro lugar, adicionarei uma impressão vazia e direi que os nomes são iguais a, teremos John, Ned Brand. Vá lá, Robert, e espere. Se você não tem, você não tem. Esses são os nomes que queremos resolver. Vou lhe lançar um desafio para realmente classificar esses nomes Você precisa Os nomes, imprimir a lista ordenada Agora, dentro dos parênteses na chave de envio da caixa Passe o vídeo agora mesmo e faça o desafio. Ok. Bem vindo de volta. Então, vou ordenar os nomes. Vou imprimir os nomes quando eu escrever. Clique e eu corro. Lá vamos nós. Você pode ver isso agora. Aria está no começo, depois John, Ned, Robert. Mas o problema aqui é que marca e suporte estão no final, mesmo que a marca comece com B, que significa que ela deve estar aqui atrás de J e se manter também Por esse motivo, usamos a chave STR aqui. Vou adicionar uma chave igual à dobra da caixa SDR. Quando escrevo, clique e vejo isso. Agora, brand e hold estão em suas respectivas posições. Usar a dobra da caixa R é muito útil, a menos que , obviamente, esses sejam nomes. A marca deve ter um suporte para maiúsculas, deve ter um H maiúsculo, mas algumas situações terão esse problema. Às vezes, quando você está trabalhando com bancos de dados. Isso pode ser um problema em que alguém não tenha colocado o nome em maiúscula ou você não tenha criado os métodos e usos adequados para ele Portanto, usar a dobra da capa seria útil. É bom saber esse tipo de coisa. Então, muito obrigado por assistir. Espero que tenham gostado. E no próximo vídeo, veremos a criação de listas. Você pode estar pensando, espere, estamos criando listas há muito tempo, mas vamos nos aprofundar um pouco mais e ver o que está acontecendo sob o controle. Então, eu vou te ver em alguns segundos. 63. 14. Criando listas: Bem-vindos de volta, meus colegas programadores de Python , a E neste vamos aprender como podemos criar listas de maneiras diferentes. Vamos começar. A primeira coisa que vou fazer é criar um novo arquivo Python e chamá-lo de criação de listas de sublinhados Pressione Enter e feche isso. Por enquanto, vou criar a primeira lista que será igual, que será chamada de e igual a 2468 Vou duplicar isso e chamar isso de ímpar e ter 1.357,9 e 1.357,9 Como você pode ver, temos duas listas de números pares e ímpares Não há nada muito especial aqui. Em seguida, vou obter números e direi que é igual a par mais ímpar Então eu vou dizer que imprima números. Se eu escrever, clicar e correr, devo obter o seguinte. Como você pode ver, 24681357. Essa é a primeira maneira de criar uma lista simplesmente concatenando ou adicionando um sinal de mais entre duas O que significa que criamos um terceiro. Está bem? Então essa é a primeira maneira de criar uma lista. Nada muito especial. Vamos apenas examinar alguns métodos de criação de listas. A segunda maneira é usar o sorted, porque lembre-se, quando usamos o método sorted, ele também retorna uma lista O que significa que cria uma lista. Vou chamar isso de números sublinhados e direi que é igual a ordenado E lá dentro enviaremos números e eu imprimirei números ordenados Novamente, se tivermos nosso método over the sorted, ele retornará uma nova lista contendo todos os itens Essa é outra forma de criar listas. Quando escrevo, clique e executo, essa é a saída que recebo, uma lista completamente diferente e nova. Vamos também testá-lo em uma string e ver o que acontece se o usarmos aqui. Vou dizer que tenho dígitos e os dígitos são iguais aos classificados dentro do classificado Vou enviar 12 ou, na verdade, 15 978-632-1324. Quero dizer, esses são Se eu imprimir dígitos, como você acha que a saída ficará Pense um pouco antes de correr, ok? Então, se eu escrever Click e executar, essa é a saída. Você pode ver que essa string foi convertida em uma lista, mas era uma lista de strings. O que significa que, quando criamos uma lista a partir de outro objeto, o conteúdo dessa lista será do mesmo canal. Por exemplo, usando o, quando criamos os números ordenados a partir dos números, já era uma lista de números inteiros A lista que foi criada também era uma lista de números inteiros. Mas aqui tínhamos cordas, então era uma lista de cordas Está bem? Agora, o que também podemos fazer é o seguinte. Vou duplicar isso e comentar Em vez de classificar, vou usar a lista Agora, isso não é um método em si. É um método, mas também é um construtor Vamos examinar mais os construtores quando começarmos a aprender sobre classes Mas, por enquanto, tudo o que você precisa saber é que você pode considerar isso um método normal. Quando escrevo Click e vejo isso, ele cria uma lista que não está classificada, mas ainda é uma lista de strings Porque estamos tentando criar uma lista com nossas sequências de caracteres. Finalmente, para verificar e ter certeza de que a lista está realmente criando uma lista diferente, direi que mais números são iguais a uma lista de números e imprimirei mais números. Deixe-me também ter uma impressão vazia aqui, mais números. E vou imprimir primeiro a identificação dos números e depois mais números. Vamos ver se eles combinam. Se eu escrever Click e correr, lá vamos nós. Veja isso, temos duas identidades completamente diferentes. Como você pode ver, isso significa que temos duas listas completamente diferentes, o que significa que a lista realmente cria uma nova lista. Então, com tudo isso resolvido, essa é uma lição muito simples. Não acho que precisemos de mais explicações do que isso. Vou te dar um pequeno desafio. E seu desafio será esse é o mesmo número? Portanto, você precisará imprimir o valor em ouro das duas declarações a seguir Número é o mesmo que mais números. Números são iguais a mais números. Agora, muitos estudantes se confundem sobre o que é igual e o que é igual. Isso é algo para você descobrir, mas vou lhe dar uma indicação do que significa imprimir o valor máximo , porque isso não é algo sobre o qual falamos especificamente. Isso significa que, se quisermos imprimir a condição, mesma forma que verificamos se digamos, algum tipo de variável é igual a outra variável, e a usaríamos na instrução if, queremos usá-la e colocá-la dentro dos argumentos de impressão aqui. Publique o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta aqui, vou manter essa impressão vazia e depois vou imprimir números em mais números. Essa foi a primeira parte do desafio que verifica se eles são realmente o mesmo objeto ou não. Quando dizemos que números são mais números, estamos verificando se eles são iguais ou, para ser mais específico, estamos comparando seus IDs. Vou duplicar isso e verificar se são iguais a dois sinais iguais, se números são iguais a mais números Quando escrevo, clique e executo, vejo que eles não são iguais porque a saída é falsa, mas são iguais entre si. Eles são iguais em termos de conteúdo, em termos de itens, mas não são iguais. São duas listas completamente diferentes. Antes de prosseguirmos, ainda tenho algumas maneiras fáceis de criar listas A primeira maneira é usar uma fatia. Espere, deixe-me realmente comentar isso. Duplique-o. E comente, não preciso imprimir, vamos apenas trabalhar com mais números. Mantenha a última linha aqui, aqui. Vou, deixe-me mover isso para cima, mudar de controle para subir. Em vez disso, vou dizer que mais números são iguais a números. Abra os dois colchetes e simplesmente adicione uma coluna dentro Quando eu escrevo, clico e corro, você verá que eu crio uma lista completamente nova. Você se lembra exatamente o que é isso? Para alguns de vocês, isso é chamado de fatia. E quando eu não apresento o ponto inicial ou final da fatia, ela apenas corta do início até o fim Quando você divide, você realmente cria uma nova lista. O último método que quero mostrar a você será o seguinte. Se dissermos mais números sublinhados iguais a números, copie, e isso basicamente cria uma cópia Essa é a mais fácil, não há nada demais nisso. Pronto, você escreve o clique que executa, cria mais números e eles têm IDs completamente diferentes. E você pode ver que eles não são iguais, mas são iguais um ao outro. Então, essas são as formas básicas de criar listas. É importante conhecer essas formas. Se você encontrar alguns deles, poderá escolher imediatamente. Então, muito obrigado por assistir. Espero que tenham gostado e nos vemos no próximo vídeo, onde aprenderemos como podemos começar a substituir fatias de nossas listas. Nos vemos em alguns segundos. 64. 15. Substituindo uma fatia: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos aprender como podemos começar a substituir fatias, como sempre. Vamos criar um novo arquivo Python e vamos chamá-lo de substituição de fatias Vou criar a seguinte lista de peças de sublinhado de carros e vou dizer que é igual a rodas, luzes ou assentos dianteiros Vem em Windows e aparelho de som. Lá vamos nós. Agora, o que vou fazer mais tarde é arrastar a saída e colocá-la aqui e torná-la um pouco maior. Como você pode ver, isso obscurece nossa visão da lista. Em vez de escrever assim, vou pressionar Enter para separar cada um em sua própria linha. Lá vamos nós. Além disso, algo a ter em mente, e eu adoro isso sobre o Python, é que você pode adicionar um coma no final A maioria das linguagens de programação não permite que você faça isso. Começará dizendo que, não, pronto, você terminou o aparelho de som Você não pode adicionar outro coma a menos que tenha outro objeto. Mas o Python é muito útil. Ele considera você um adulto. Acha que, tudo bem, esse cara ou essa garota sabe o que está fazendo. Então, eles podem simplesmente ou não ter a liberdade total I, porque passei anos programando em linguagens diferentes e não tendo a capacidade de adicionar. Então, agora que posso, eu sempre adiciono a. De qualquer forma, isso não vem ao caso. Agora que temos nossa lista de peças automotivas, vou imprimir as peças do carro. Se escrevermos, clicarmos e corrermos, é isso que obtemos. Uma lista de peças de automóveis. Podemos ver que é uma lista por causa dos colchetes que temos em cada lado Obviamente, é uma lista de strings por causa das aspas simples que temos Novamente, obviamente, poderíamos ter usado as aspas duplas para qualquer um deles Se eu escrever, clicar e eu executar, você pode ver que a saída permanece a mesma. Aspas simples , não importa. Use o que quiser. Assim como conseguimos acessar caracteres específicos em uma string usando os colchetes, podemos fazer o mesmo para acessar itens específicos em uma lista O que quero dizer com isso é que, se eu quiser imprimir peças de automóveis na posição número três, qual você acha que será a saída? Pense nisso quando escrevo, clico e corro. Eu fico com assentos porque as rodas estão na posição 0,012,3. Eu fico Se eu tentar imprimir quatro, pense novamente antes de explodir. Lá vamos nós. Janelas. Tudo bem. Agora que resolvemos isso, vou imprimir carros novamente, normalmente. Agora, o que eu quero fazer é substituir uma das peças do meu carro por uma peça de carro diferente. O que significa que vou dizer que peça de carro ou peças de carro na posição três agora são iguais a aluguéis. E eu vou imprimir as peças do carro. Eu clico com o botão direito e corro. Boom, lá vamos nós. Você pode ver que agora, em vez dos assentos, eu tenho aros. Excelente. Não há nada demais aqui. Estamos simplesmente substituindo um único item. Vamos continuar e analisar a substituição de uma fatia inteira Vou comentar essa frase e vou dizer que peças de automóveis na posição três até o final são iguais a aros Se eu clicar com o botão direito do mouse e correr, veja o que eu recebo, eu pego rodas, luzes, asa dianteira, e então eu obtenho R I MS. Então, qual é o problema aqui? O problema é que, bem, primeiro de tudo, vamos ver o óbvio. Não temos janelas ou assentos estéreo. Se você não se lembra de como funciona o corte, recomendo que volte para a seção número dois Acho que onde aprendemos tudo sobre fatias. Mas, basicamente, o que fazemos é ir do três, do número três, que é as sementes, até o final, e substituí-lo por qualquer que seja o resultado. O problema aqui é que a string é uma sequência, o que significa que o Python a interpreta como, digamos, entre aspas Uma espécie de lista com R IS sendo itens individuais nela. Então, quando você diz que peças de um carro de três até o final são iguais a aros. Agora, ele pensa que R é um item que precisamos adicionar, é um item que precisamos adicionar. M é um item que precisamos adicionar e é um item que precisamos adicionar quatro itens separados, substituir os três itens que tínhamos aqui. Isso é um problema, obviamente, isso não é algo que queremos. Queremos apenas adicionar ou substituir assentos, janelas e aparelho de som por um único item que é uma aba Mas vai ser um desafio para você. E seu desafio será substituir uma fatia. Substitua uma fatia inteira por outro componente ou peça do carro Use uma corda, estritamente uma corda. Da mesma forma que fizemos com os itens individuais. Imprima a lista resultante. Agora, em vez de substituí-lo por uma string, substitua-o por um item inteiro e verifique o resultado. Agora você pode estar pensando, espere, espere, espere. O que significa ter um item inteiro substituindo uma fatia específica Vou manter isso como um palpite para você pensar. Você também pode procurá-lo on-line ou algo assim. Vai ser muito divertido. Experimente, dê o seu melhor e nos vemos daqui a pouco. Ok, bem-vindo de volta. Então, como você conseguiu fazer isso? Eu vou ficar com aros. Eu não vou usar outro componente aqui. O que vou fazer para garantir que isso seja interpretado como um item de uma lista é simplesmente adicionar colchetes ao redor das bordas Agora, este é um item que contém um ou um item do tipo string que contém bordas ou é de valor Se eu escrever, clique em Executar, veja a saída, agora é completamente diferente. Em vez de ter personagens individuais fazendo parte ou itens de personagens individuais, agora temos o item inteiro que são aros Espero que tenham gostado, espero que tenham entendido como isso funciona. No próximo vídeo, aprenderemos como podemos começar a excluir itens de uma lista Embora tenhamos visto a remoção de itens de uma lista, veremos que excluir é uma coisa completamente diferente Te vejo em alguns segundos. 65. 16. Excluindo itens de uma lista: Bem-vindos de volta, meus colegas programadores de Python , a E neste vídeo, aprenderemos como podemos começar a excluir itens de uma lista Agora você pode estar pensando, espere, já removemos itens de uma lista, e isso definitivamente será diferente. exclusão de itens terá suas próprias complexidades e nós as veremos Em primeiro lugar, precisamos criar um novo arquivo Python que chamarei de excluir itens de sublinhado, sublinhados Vou criar as entradas com sublinhado, sublinhado em. E as entradas que entrarão serão 01, 234-567-8910, Espere 11, 12, 131-415-1617, Pronto . Então, essas são nossas entradas chegando. Eu tomo seu tempo, escrevo tudo isso. Você não achou que estaria fazendo matemática hoje, certo? Isso foi ruim. Mas de qualquer forma, agora o que queremos fazer é excluir algumas das entradas que estão chegando Então, vou clicar em deletar. Então, as entradas que vou excluir vão de 0 a 2 e depois vou imprimir as entradas Agora, se eu clicar com o botão direito do mouse e executar conforme o esperado, veremos que os três primeiros elementos são excluídos, desculpe, os dois primeiros itens são excluídos, pois lembre-se quando o corte da extremidade não está incluído, excluímos do zero até que o 10.1 seja excluído Lá vamos nós. Você pode ver que esta é a nossa nova lista formada. Então, agora eu vou te lançar um desafio. E esse desafio vai ajudar você a ver abaixo da superfície o que está acontecendo. Então, seu desafio será deletar uma fatia, tão parecida com o que fizemos agora Portanto, você precisará excluir tudo da posição 16 e superior. Faça isso após a primeira exclusão. Mantenha a exclusão atual que fizemos, que é 0-2 Mantenha E depois exclua tudo a partir de 16 e imprima as entradas O que significa o resultado? Tenho certeza de que você terá algum tipo de resultado estranho e talvez um resultado inesperado Passe o vídeo agora mesmo e vá fazer o desafio. Então, como você conseguiu fazer isso? Bem, o que vou fazer é selecionar essas duas linhas, copiá-las e colá-las aqui. E então eu vou deletar tudo de 16 para cima. O que significa que não vou fornecer o resultado final. Se eu escrever o clique e correr, hein? Interessante Eu obtive exatamente o mesmo resultado. Bem, você provavelmente teve a mesma coisa acontecendo com você. O que esse resultado significa? O que significa quando tentamos excluir do número 16 ou superior e ela não é fornecida para nós Bem, deixe-me mostrar o que está acontecendo abaixo da superfície. Eu tento imprimir o seguinte. Vou criar um atacante Agora você não precisa fazer isso, estou apenas mostrando isso para provar a você o ponto. Se quiser, você pode escrever o código. Vou fazer quatro entradas I em entradas. Vou imprimir ou, na verdade, saber o que torná-lo ainda melhor. Vou fazer uma enumeração das entradas que chegam e terei o valor Vou imprimir o valor do índice. Quando escrevo um clique e corro, aí está, você pode ver que tenho zero em 01, um a dois até chegarmos a 17. Muito óbvio, nada muito estranho aqui, mas se eu copiar isso e colocar aqui, e eu realmente vou criar uma impressão dentro da impressão, vou criar esse símbolo de multiplicação e multiplicá-lo por 20 para que possamos ter uma diferença clara entre onde estão os índices Agora, se eu correr, veja isso agora porque excluímos os dois primeiros elementos. Zero, ou índice zero, tem um valor de dois. Olha isso. O índice um tem um valor de 32435 e et cetera, et cetera. Quando você e eu, quando tentamos excluir da posição 16 e superior, o que aconteceu foi que o Python entrou nessas entradas Ele procurou a posição 16 e não encontrou nada. É nisso que você deve começar a pensar ao excluir itens de uma lista A lista realmente muda e muda, e os espaços vazios são preenchidos com os valores que estão depois dos índices É muito importante entender isso. Eu recomendo que você analise claramente os resultados que obtivemos Novamente, embora eu tenha dito que você não deveria escrever o código, recomendo que você escreva o código, se quiser. Você também pode fazer isso com o AD Bugger. Você pode adicionar um depurador aqui ou em qualquer lugar que desejar e percorrer o programa lentamente para entender adequadamente o que Como você pode ver, a lista muda, removemos dois itens, dois índices foram excluídos e toda a lista foi deslocada para a É por isso que, quando tentamos excluir a partir de 16, nada aconteceu Vamos ver um exemplo mais complexo para entender isso completamente Vou comentar tudo aqui. Nunca exclua o código, sempre comente o código porque talvez você queira voltar a entender o que aconteceu aqui. Vou criar o sublinhado in válido e vou dizer que é igual a cinco e vou ter o máximo válido e vou dizer que é igual a 12 O valor mínimo que podemos ter será cinco e o valor máximo válido que podemos ter será 12. Vou criar um loop aqui, quatro valores de índice nas entradas enumeradas Vou verificar se o valor é menor que o mínimo válido ou se o valor é maior que o máximo válido. Vou excluir as entradas que chegam no índice. Por fim, imprimirei as entradas que chegam. O que está acontecendo aqui? Em primeiro lugar, estamos criando índice e valor. Estamos obtendo isso da enumeração. A mesma coisa que fizemos aqui. A mesma coisa que fizemos no vídeo número nove, se não me engano, que foi chamado de função enumerar Você pode voltar ao vídeo e assisti-lo novamente aqui. Nós obtemos o índice, obtemos o valor e valorizamos isso. Estamos extraindo o valor em cada ponto aqui. Se o valor que estamos obtendo for menor que o mínimo válido ou o valor for maior que o máximo válido, excluirei as entradas que chegam no índice Então, digamos que começamos em zero, temos índice zero. O valor zero que verificamos é menor que o valor mínimo válido que é. Em seguida, excluirei as entradas que chegam no índice zero, que significa que excluirei zero Então, digamos que estamos no índice 15 aqui. Índice 15. O valor 15 é o valor menor que o máximo válido? Não, não é porque 15 não é menor que cinco ou o valor é maior que o máximo válido. Sim, 15 é maior que 12. Então, excluiremos as entradas que chegam no número de índice 15 Então, excluímos esse número. Portanto, devemos ter, em teoria, as entradas chegando de cinco até 12 Se escrevermos click and re run, essa é a saída que obtemos. Temos 130 e 2,4 foram removidos. Quero dizer, esse é o começo. Acho que temos 1356, todos os números são normais Então temos 12, 14, 16, que significa que 1.315,17 Ok, o que está acontecendo aqui? Agora use as informações que você obteve desse código antigo e aplique-as ao código que temos aqui. E pense no que aconteceu. Se você acha que a lista está mudando à medida que excluímos itens, você está certo do que está acontecendo Agora eu recomendo que você tente por conta própria, adicionando um depurador aqui e examinando a lista para entender adequadamente o que está acontecendo entender adequadamente o que Depois de tentar entender e se não conseguir descobrir, incrível, parabéns. Se você me deixar explicar a explicação. O que está acontecendo aqui? Preciso de sua concentração total. Esse não é um conceito fácil de entender, mas quando você o faz, você fica dourado. Temos as entradas chegando, 0123 até 17, e também temos os índices Tudo em vermelho abaixo desses valores serão os índices. Temos 0123 até seis até 17. Vamos deletar se for menor que cinco. Vamos continuar e criar o loop de quatro. Você pode ver aqui que temos na posição zero, no índice do loop zero, temos a seguinte lista. O que fazemos é em zero, verificamos se temos valor zero, correto? Então, vamos deletar zero. O que acontece com a lista depois de excluirmos zero? Isso é o que acontece. Agora, a lista é 123456 Ninguém está no índice 02, está no índice 13, está no índice dois, etc., etc Os índices não acomodam os valores reais. Os índices sempre começarão zero e aumentarão um a um Mas o que o quatro loop faz? O circuito quatro não se importa com o que você está fazendo dentro do circuito quatro. Isso apenas adicionará um mais um. E agora estamos trabalhando no índice um e o que está no índice um? No índice um, temos dois. Excluímos dois, pulamos um. O que acontece com a lista? Agora temos 13,4 O loop não importa o que fizemos, o loop aumenta em um Agora estamos trabalhando no índice dois. O que temos no índice dois? Nós temos quatro. Excluímos quatro e agora é isso que nos resta. Ficamos com 1356 e isso é o que temos. E a mesma coisa acontece do outro lado. Desculpe, talvez eu tenha sido um pouco rápido. Entenda isso, repita isso passo a passo e entenda o que está acontecendo. Depois de fazer isso, vamos para o outro lado. Se você descobriu o que aconteceu no lado esquerdo, reserve um tempo para entender novamente o que aconteceu no lado direito, porque quando chegamos ao índice número dez, temos 13 no número de índice 1013 maior que 12, excluímos 13 O que acontece? Toda a lista se desloca um pouco para baixo E, a propósito, o índice aqui termina em 14. Por que isso deveria ser óbvio? Porque já removemos três elementos. 17 menos três é igual a 14, por isso que 17 está no Lembre-se de que removemos três elementos aqui. Novamente, removemos 13. Agora temos 14 na posição 1015, na 11. Novamente, o loop de quatro não se importa. Mais um, temos 11. O que acontece? Excluímos 15. Essa é aparência da nossa lista agora, 14, 16, 17. O loop de quatro não importa. Vamos para 12. O que temos às 12:17 Excluímos 17, e esta é a lista que ficamos de fora daí que obtivemos nossa saída estranha. Das entradas que chegam, temos 1.356.789,11 12, 14, 16, assim como obtivemos Alguns de vocês dirão, oh, isso faz muito sentido. Outros podem estar vendo isso e dizendo, uau, o que diabos acabou de acontecer? Alguns de vocês podem estar bem. Talvez eu precise de um pouco mais de tempo para entender isso. Tudo isso é válido. Esse não é um conceito fácil de entender, mas é importante entender o que está acontecendo. No próximo vídeo, aprenderemos como podemos remover itens de uma lista com segurança. E então aprenderemos até mesmo uma maneira muito melhor de remover itens de um rolo quando eles nem estão em uma sequência adequada. Porque olha, agora temos 0123. Sabemos o que está acontecendo. Mais tarde, aprenderemos o que acontece quando é muito mais difícil do que isso. Muito obrigado por assistir. Espero que você tenha entendido. Eu recomendo que você volte. Assista isso de novo. Entenda corretamente como os slides estão funcionando. Vou fornecer os slides para que você possa ver as animações sozinho e entender completamente o que está acontecendo Muito obrigado Te vejo no próximo vídeo. 66. 17. Removendo com segurança valores de uma lista: Bem-vindo de volta aos meus desenvolvedores favoritos de Python. Neste vídeo, aprenderemos como podemos remover itens de uma lista com segurança. Como você viu, remover itens da minha lista é uma ocupação muito perigosa. Portanto, precisamos encontrar uma maneira de remover esses itens de uma forma mais eficiente e, em geral, basta removê-los adequadamente, pois não queremos ter todos os problemas que tivemos antes. Então, vamos começar. A primeira coisa que vou fazer é remover o código aqui. Novamente, não remova, comentaremos as coisas. Queremos ter a progressão do que está acontecendo. Eu até recomendo que você comece a adicionar comentários e diga, esse método que usamos, etc., etc., adicione alguma descrição para você entender Vamos manter o mínimo válido e o máximo válido. Vamos continuar usando as mesmas entradas que estão chegando. Mas agora vamos começar a fazer as coisas um pouco diferente porque, antes de tudo, vamos processar os valores baixos na lista. Deixe-me adicionar um espaço. começar a processar os valores baixos. Eu vou dizer que stop é igual a zero. Esta é uma variável, estou inicializando, vou dizer que quatro valores de índice enumerados sobre as entradas Vou verificar se o valor é maior ou igual ao mínimo válido. Vou definir o stop para ser igual ao índice e vou começar de forma interessante. Então eu vou imprimir a parada. Isso será apenas para depuração. Para depuração, excluirei as entradas que chegam do início até a parada E vou imprimir as entradas que chegam. Então, vou executar isso, mas antes disso, recomendo que você leia o código. Não é muito complicado. É definitivamente menos complicado do que o que fizemos antes. Tente entender o que está acontecendo. Obviamente, vou explicar para você o que aconteceu. E então continuaremos. Vou escrever Click e vou executar e ver nossa saída. Que bom que excluímos todos os itens de zero a cinco. O que está acontecendo aqui? Primeiro de tudo, inicializamos a parada em zero. Então criamos um enumerado, obtivemos o índice e o valor E estamos verificando a cada incrementação do loop de quatro, estamos verificando se o valor é maior ou igual ao mínimo válido, que é cinco Estamos verificando se é maior ou igual a cinco? Não, não é. Em seguida, adiaremos, não definiremos a parada e voltaremos no circuito quatro Começamos em zero, é maior que o mínimo válido. Não, não é. A mudança para um, é maior? Não, passamos para dois, para três, para quatro e depois chegamos a cinco. Então, quando chegamos a cinco, analisamos o valor era cinco, cinco é maior ou igual ao mínimo válido? Sim, foi. Era igual a. Entramos no código, definimos a parada para ser igual ao índice. Agora, parar é igual a quê? Sim, exatamente para cinco. E então saímos do nosso circuito dianteiro. Imprimimos o batente. Excluímos tudo do início até a parada. E lembre-se de que a parada não está incluída. Eram entradas que vinham do início ou de zero até cinco Mas cinco não estão incluídos. Está pronto, mas não está dentro, e imprimimos a saída. Espero que você não esteja muito confuso. Isso não é muito complicado, é definitivamente menos complicado do que o que fizemos antes. Se você estiver tendo dificuldades novamente, faça isso novamente e use o depurador Como sempre, é muito útil. O importante aqui é que não alteremos nem excluamos dados da lista dentro de um loop. Somente quando terminamos o ciclo é que começamos a alterar os dados. Ok, é muito importante não alterar os dados dentro do loop. Depois de fazermos isso, é hora de lidar com os números altos. Vou adicionar dois espaços aqui. Vou criar outro comentário que processará os valores altos na lista. E eu escrevi alto incorretamente. Muito bom. Vou definir o início igual a zero. Este será um pouco mais complicado. Eu vou dizer uma faixa de quatro índices. O intervalo será o comprimento das entradas que chegam menos um, menos um, menos um E você fica tipo, o que está acontecendo aqui? Vou verificar se as entradas que chegam no índice são menores ou iguais ao máximo válido. E não é permitido porque é menor ou igual a, sim, desculpe, o máximo válido. Vou definir o início para ser igual ao índice e vou sair. Depois disso, imprimirei o início da depuração, excluirei as entradas que chegam, excluirei as entradas que chegam, inicio até o final e imprimo as entradas que Se eu clicar com o botão direito do mouse e executar, essa é a saída que obtenho. Como você pode ver, o índice que começa ou com o qual eu começo será igual a sete. E excluímos tudo desde o início, que é sete até o final. Então, como inventamos isso? Se olharmos, lembre-se de que o sete representa o índice que temos nesta lista. A lista em que já excluímos seus itens. Então, temos cinco em zero, então 012345, 67a7, começamos a excluir e excluímos tudo para cima Agora você já deve estar pensando esperar 12 é o máximo válido. Claro, isso será um problema para você resolver mais tarde, mas antes que possamos resolvê-lo, precisamos entender o que está acontecendo aqui. Estou bastante confiante de que você sabe o que está acontecendo nessas três linhas. Aí está. Se você estava confuso agora, você sabe. Mas precisamos entender o que está acontecendo nessas quatro linhas. Em primeiro lugar, conhecemos o intervalo. Isso é bom. Sabemos que o início é igual ao índice, isso é bom. Agora, o que está acontecendo nessas duas linhas? As entradas que chegam no índice são menores que o valor máximo. Estamos apenas verificando as entradas que chegam nesse índice. Lembre-se de que o índice é uma variável. Está mudando as entradas que chegam no índice. Se for menor ou igual ao máximo válido, definiremos o início igual ao índice e explicaremos. A coisa mais importante e urgente acho que você talvez com a qual acho que você talvez não esteja muito familiarizado é esse intervalo aqui. Esse intervalo. O que está acontecendo nessa faixa? Vou apenas adicionar um pequeno comentário aqui e direi que estamos usando menos um porque o último valor não está incluído Na verdade, você sabe o que? Isso é muito longo. Eu vou copiar isso. Corte isso aqui. O que está acontecendo? Antes de tudo, precisamos entender como o intervalo funciona. Assim como temos as fatias e os intervalos, você pode ver aqui, temos o ponto de partida. O ponto de partida será o comprimento das entradas que chegam menos Por que estamos fazendo isso? Porque queremos começar pelo último elemento. Nesse caso, é 17, ou para ser mais preciso, neste caso, é 17. Queremos começar pelo final. Como começamos pelo final? Em primeiro lugar, obtemos o comprimento de todas as nossas entradas O comprimento das entradas que chegam será maior ou mais do que os índices que temos Porque lembre-se de que começamos em 05, estamos em zero, o comprimento será 0123, 4567, 8910, 1112 Há 13 elementos aqui Teria sido mais fácil para mim dizer 17 menos 1234517, menos menos Temos 12 elementos, o comprimento é 12, mas o índice terminará em 11. Então, precisamos fazer o comprimento das entradas menos um. E então o valor que queremos chegar será menos um, porque queremos ir até o primeiro índice porque não sabemos onde isso termina E, finalmente, temos o passo que é retroceder. Para entender melhor isso, o que vou fazer é definir o sublinhado do valor Nós sublinhamos nosso, sublinhamos, por favor, nosso em a. Isso é realmente Vou apenas dizer que o valor é igual às entradas que chegam no índice, vou apenas imprimir Isso é simplesmente para fins de depuração . Você não precisa fazer isso. Se você quiser, vou clicar em vermelho, vou depurar. Na verdade, entre no valor, imprima o valor. O que temos no console? Deixe-me arrastar isso e colocar aqui, veja melhor. Tudo bem, lá vamos nós. O primeiro valor foi 17. Começamos no final às 17, depois entramos, novamente, voltamos, fazemos menos um Lembre-se de que estamos retrocedendo. Agora, verificamos qual é o valor. É 161-514-1312 E agora, quando é 12, definimos o início como igual ao índice, porque lembra em qual índice porque lembra em qual Estamos às sete quando entramos novamente, bum, queremos sair e imprimiremos o início, que é sete, e excluiremos tudo do início ao fim. Lá vamos nós de novo. Eu recomendo que você passe por isso mais uma vez, mais algumas vezes para entendê-lo completamente e você ainda terá a chance de entendê-lo ainda mais. Vou comentar essas duas linhas. Eles eram apenas para depuração porque você tem Seu desafio será não remover o início. Lembre-se, não queremos remover o 12, queremos manter o 12. Encontre uma maneira de não removermos o primeiro item no início. Eu vou te dar uma dica. Se você não quiser a dica, vá até o código e faça o desafio Precisamos adicionar um mais um. Podemos fazer isso em dois lugares, encontrar um deles. Há um lugar, ou há dois lugares onde podemos adicionar o mais um. Precisamos encontrar um deles além do vídeo agora e enfrentar o desafio. Ok, bem-vindo de volta. Então, como você conseguiu fazer isso? Há dois lugares onde podemos fazer isso. Deixe-me fechar essa. Podemos adicionar um mais um aqui. Agora, quando eu escrevo, clique em Executar, veja isso. Começamos às 12, porque lembre-se que acabamos de adicionar um mais um no início. Mas acho muito melhor colocá-lo aqui. Aumentamos o índice em um. Não há nenhuma diferença real inerente entre esses dois. Ambos são iguais. Mas se você tivesse que escolher, se tivesse que escolher, é melhor adicioná-lo aqui como regra geral Não é muito amigável ou fácil de usar, digamos que não é um hábito de programação muito bom mudar o início. É melhor mudar a forma como o início é usado, se fizer sentido adicionar o sinal de mais um aqui. Não altere o valor, mas como o valor é usado. Novamente, se você já viu alguém fazendo o sinal de mais um no índice real , está 100% correto. Só estou dizendo que se você quisesse que uma coisa pequena inclinasse a balança, isso é o que seria. Senhoras e senhores, essas duas lições foram muito difíceis de entender Eu sei, mas eles são muito importantes. Espero que você tenha entendido. No próximo vídeo, veremos como remover itens de uma lista retrocedendo Te vejo no próximo vídeo. 67. 18. Removendo itens de uma lista de trás para frente: Bem-vindo de volta aos meus desenvolvedores favoritos de Python. Neste vídeo, entenderemos por que repetir uma lista Para excluir itens, é melhor um título longo. Mas você entenderá quando falarmos sobre isso. Quando você repete uma lista e exclui itens dela, o índice dos itens restantes diminui toda vez que você exclui Assim como vimos nos exemplos anteriores, sempre que você exclui um item no início, toda a lista se desloca para baixo Isso pode fazer com que você pule alguns itens ou processe o mesmo item mais de uma vez Nessa situação, estamos excluindo um item, mas e se estivéssemos fazendo algo como talvez obter senhas, talvez alterar a localização das senhas Isso pode causar muitos problemas, muita confusão e, às vezes, pode destruir empresas e bancos de dados inteiros. Talvez nem tanto. Mas você entendeu, é uma coisa perigosa de se fazer. Iterando de trás para frente em uma lista. Excluir itens evita esse problema. Porque você está excluindo primeiro os itens do final da lista, que significa que você não afeta os índices dos itens restantes, assim como tivemos de zero a 17 Se você excluir 1701234, não serão afetados. Você acabou de excluir do final, os números no meio e no início não são afetados de forma alguma. Seus índices não mudaram. É por isso que excluir do final é muito melhor. Finalmente, em geral, iterar de trás para frente em uma lista para excluir itens é considerado uma abordagem mais segura, pois ajuda a evitar caixas inesperadas em seu código sempre que você tem algo a ver com a alteração dos valores de uma É claro que, até certo ponto, nessa situação, é quando você está excluindo Obviamente, quando você está alterando valores, também é melhor repetir para trás Vamos ver um exemplo final, apenas para aprimorar todas essas informações, você acabou de ver o plano de fundo do que está acontecendo nos bastidores Vou ligar para isso, talvez eu deva criar um vídeo de como tudo isso acontece nos bastidores. Diga-me se você está interessado nisso. Vamos criar um novo arquivo Python que vou chamar de trás para frente e um novo arquivo Python que vou chamar de trás para talvez apenas adicionar sublinhado entre retroceder, pressionar Enter e apenas adicionar sublinhado entre retroceder, eu terei um conjunto de dados que será 104-10-1410 5, 308-103-5107 dados que será 104-10-1410 5, 308-103-5107 100 3 061-061-2108 Esses são nossos valores. 100 3 061-061-2108 Esses são nossos valores. 100 3 061-061-2108 Esses são nossos valores. E, novamente, eu não queria escrevê-los em uma única linha longa de código para que sempre pudéssemos ver o que está acontecendo. E a razão pela qual escolhi esse conjunto aparentemente aleatório de números é porque, até agora, os números em que estávamos trabalhando estavam em ordem Eu não quero que eles estejam em ordem. Eu quero te mostrar como podemos fazer isso quando eles não estão devidamente encomendados. Eu vou ter o mínimo válido igual a 100. Vou ter o sublinhado máximo válido igual a 200. E vou verificar quatro índices no comprimento do intervalo dos dados menos um Isso é para começar no último elemento em um oh oito menos um Ou seja, chegar ao primeiro elemento menos um é o passo para realmente retroceder Em seguida, verificarei se os dados no índice são menores que o mínimo válido ou os dados no índice são maiores que o máximo válido Vou imprimir o índice. Vou excluir os dados no índice. Vou imprimir os dados. Lembre-se de que estou imprimindo os dados dentro do loop for para que eu possa ver as coisas mudando a cada etapa do processo. Mais uma coisa, antes de realmente executarmos isso aqui, quando estávamos fazendo o seguinte aqui nesta declaração if. Como você pode ver, dissemos valor mínimo, válido e valor ou valor maior que o máximo válido. E eu usei os parênteses aqui, enquanto no retrocesso eu não usei A razão pela qual usei parênteses aqui é apenas para fins de Eles não eram necessários. Eu só queria que você entendesse que esses são dois conjuntos de lingotes completamente diferentes Um não depende do outro. Ambos são independentes, mas são usados para definir a definição adequada dessa declaração. É menor ou se for maior que, quando se trata de comparar os dados com o mínimo e o máximo. Com isso resolvido, deixe-me clicar com o botão direito e executar. E lá vamos nós. Então é isso que acontece. Começamos do final, correto. Então, verificamos que o mínimo válido é 100, o máximo válido é 200. Portanto, não devemos ter valores menores que 100 ou maiores que 201. Oh, oito é bom. Um em dois é bom. Qual é o primeiro valor que deve ser removido? 36. Então, aqui, 123. Tudo bem. Lá vamos nós. Então você pode ver que 36 foi removido, e se passarmos por isso, vamos para 1-234-567-8910, desculpe, e se passarmos por isso, vamos para 1-234-567-8910, desculpe, 012-345-6789 Peço desculpas. Lá vamos nós. Você pode ver que temos 36. O próximo valor seria cinco. Então, nesta linha, não devemos ver cinco. Nós vemos um cinco, mas são os outros cinco. Tenha isso em mente, eu provavelmente deveria mudar o exemplo. Mas sim, nesse caso, não devemos ver um dos cinco. Então, temos 0123456, e lá vamos no índice seis, removemos O próximo número é 38. Foi removido, cinco foram removidos e os demais são válidos. Então, eu conduzi você pelo processo de excluir e remover itens de uma lista com segurança excluir e remover itens . Espero que tenham gostado. Espero que você tenha entendido por que repetir uma lista retrocedendo e removendo itens é muito melhor do que seguir em frente Muito obrigado por assistir. Espero que tenham gostado. Esse será o último vídeo. Eu sei que foi um caminho difícil de percorrer, mas você chegou ao fim. Parabéns. E no próximo vídeo, aprenderemos sobre listas aninhadas Isso significa quando temos listas dentro de listas. Então, eu vou te ver em alguns segundos. 68. 19. Listas aninhadas: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, aprenderemos sobre loops aninhados Vamos continuar e começar. Em primeiro lugar, como sempre, queremos criar um novo arquivo Python Vou entrar no arquivo novo, criar um novo arquivo Python e chamá-lo de listas sublinhados aninhadas A primeira coisa que vou fazer é que o número um seja igual a, eu vou ter 23, 416-098-2201 Vamos Número dois, teremos 20, 131.575,94 Essas são duas listas distintas Agora vou criar uma terceira lista que será chamada de números. E eu vou dizer que os números são iguais à lista a seguir, número um. Vamos lá, número dois e eu vou imprimir os números. Agora, novamente, eu quero que você respire fundo antes de executar este programa e me diga, me diga, diga a si mesmo o que você espera que a saída esteja aqui. Se você notar que temos o número um e o número dois como itens individuais dentro dos números da lista, isso significa que devemos ter dois itens dentro dos números que são listas. Esta é uma lista de listas, assim como temos itens dentro dessa lista que são números inteiros, que a torna uma lista de números inteiros Essa é uma lista que tem seus itens como outras listas, o que significa que é uma lista de listas. Se você descobrir isso, me diga se você pode descobrir isso. E se eu fizer o seguinte e disser lista de sublinhados numéricos em números e imprimir lista de números Qual você acha que será o resultado? Bem, se você adivinhou números individuais, você está errado. Se você adivinhou que seriam apenas duas listas separadas, você está correto Porque lembre-se, quando percorremos uma lista, obtemos cada item individual. Nós o colocamos na variável da lista de números ou em qualquer variável que criamos. Quando imprimimos, simplesmente imprimimos esse item aqui. Essa lista consiste em dois itens, e esses dois itens são os seguintes. E você pode verificar se, se fizer o seguinte, se eu quiser imprimir o tamanho dos meus números, qual seria a saída? Se você adivinhar dois, está correto porque temos apenas dois itens dentro dos números. Os números são compostos por duas listas. Ah, sim. É composto por duas listas e é composto por dois itens. Tudo bem Se quiséssemos obter números, itens individuais de dentro, o que precisaríamos fazer Eu vou, se você quiser, você pode tirar um segundo para tentar adivinhar. Ok. Então, vou criar quatro números de sublinhado individuais na lista de números E eu imprimirei números individuais se você conseguir adivinhar isso. Parabéns, você está prestes o desenvolvimento do Python Caso contrário, não se preocupe, comece a prestar mais atenção Vou clicar com o botão direito do mouse e vou executar e ver a saída que obtemos. Então, obtemos números individuais de nossas listas. Lá vamos nós. Agora, com essas informações prontas, se você ainda não tem certeza de como isso funciona, novamente, recomendo que você adicione um ponto de interrupção aqui E você depura lentamente esse loop de quatro, que tem um loop de quatro dentro dele, para que você possa ver como cada item está sendo extraído Com isso, do jeito que vou acrescentar, acho que sim, vou comentar tudo isso. Agora vamos comentar tudo. Ok, e eu vou criar uma nova lista de listas. Então, vou criar uma lista que sublinha as listas principais e vou dizer que é igual ao seguinte Eu vou ter 268, e aqui eu vou para 10, 181-316-1819 Novamente, eu vou ter 2618, 8065 0450 2808 e novamente 2065. 2065. 0280 4909, 1115, 1877. 1516, 1960 2203. E eu acho que eu deveria acelerar essa parte porque é inútil Sr. Editor, por favor, acelere o processo. 63 18 skin 8450, 2181, 8511, 8808, 74.51 Lá vamos nós. Nós terminamos. E, como sempre, gostaria de acrescentar o resultado porque eu posso. Esta é uma lista de listas. Como você pode ver, temos listas individuais sendo adicionadas em uma lista enorme. Vamos imprimir a lista nas listas que não contêm 18. Vou criar isso para loop for list, list of lists. Eu vou dizer que se o 18 não está na lista de entorpecidos, por que não gosta da lista de entorpecidos Porque no Word to, para entorpecer a lista, vamos apenas começar e sublinhar entre as Se 18 não estiver na lista de números, vou imprimir a lista Se eu escrever, clicar e correr, isso é o que eu obtenho. Só temos duas listas que não contêm 18. Como você pode ver, todos os outros contêm 18 em algum lugar. Agora vamos também imprimir as listas com 18 e quantas vezes elas ocorreram. Estamos verificando se 18 vamos imprimir a lista. Caso contrário, vamos imprimir, vou colocar meu campo de substituição aqui e vou imprimir a lista de números, tem 18 campos de substituição aparecendo, tem 18 campos de substituição aparecendo contagem de lista de números Já vimos a contagem de pontos e como ela funciona e já vimos o uso desse tipo de campo de substituição um F do outro lado quando escrevo, clico e executo, pronto. Essa é a nossa saída. Temos essa lista que não contém 18. Temos essa lista que tem 18 aparecendo duas vezes. 18, 18. Esta lista que tem 18 aparecendo nesta, com 18 aparecendo nesta sem 18, e a última com 18 aparece vezes inteiras. Espero que você tenha entendido. Se você ainda não tem certeza de como esse código funciona, novamente, recomendo que você o leia. Você pode usar a depuração, você pode encontrar tudo o que está acontecendo Porque depois de fazer isso, você tem o desafio de remover 18. Você precisa criar um novo loop em que você percorra a lista de listas internas. Você precisa criar um loop retrocedendo na variedade de listas em que você está Se o item na lista for 18, exclua-o da lista e imprima a lista de listas no final. Não é um desafio fácil. Difícil, você precisa combinar muitas coisas que aprendemos antes, mas acredito que você pause o vídeo agora e vá para o desafio Ok, bem-vindo de volta aqui. A primeira coisa que vou fazer é criar um loop for com a lista numb na lista de listas Na verdade, vou comentar isso aqui ou, na verdade, você sabe o que, eu também vou segurar o controle, mudar e mover isso para cima, está no topo. Eu vou dizer quatro índices no intervalo e o intervalo será o comprimento da lista de números Menos um, porque quero começar pelo último ou pelo último item E lembre-se do que estamos fazendo aqui. Vamos continuar usando nossas listas. Então, estamos analisando cada lista individual, uma por uma, porque não importa se começamos na última lista ou na primeira lista. Os itens que estamos excluindo não são as listas reais. Eles são itens dentro das listas que estão dentro da lista. Entenda o que quero dizer. Por exemplo, não importa se começamos com a última lista ou com a primeira lista, mas quando chegamos à última lista, é importante começarmos do final dela. É por isso que temos quatro voltas normais. E então, no segundo ciclo de quatro voltas, começamos no final. Queremos chegar a menos um. Queremos ir até o primeiro elemento e nosso índice for menos um Aqui, vou dizer que se a lista numérica no índice for igual a 18, então vou excluir a lista numérica no índice Imprima uma lista de entorpecimentos. Também vou imprimir uma lista de entorpecimentos. Não no “se”, mas nessa situação, toda vez que eu terminar com uma lista, vou imprimi-la. Cuidado com o recuo quando escrevo, clique e corro, isso é o que eu recebo Primeiro de tudo, temos 268. Continua o mesmo porque , obviamente, não há 18 lá. A próxima coisa que vou fazer é na lista a seguir, eu tinha 218 Agora eu tenho zero. Nessa lista eu tinha 118. Agora eu tenho zero. E esse eu tinha 118. Agora eu tenho 000 aqui. Tínhamos 418, se você se lembra corretamente, e agora não temos nenhum deles. Espero que você tenha entendido como isso funciona. Espero que você esteja começando a sentir o quanto é importante retroceder em uma lista Não perturbamos nenhum dos outros elementos porque estávamos retrocedendo Antes de terminarmos, vou te mostrar outra maneira de fazer isso. Na verdade, vou comentar isso aqui. Vou dizer quatro números ou quatro listas de listas para número. Lista entorpecida. Se o número for diferente de 18, vou imprimir o número e vamos imprimir aqui e eu escrevo Clique e eu olho isso, estou imprimindo todos os números e removi ou não imprimi os números que são iguais a 18. Quero dizer, o que você pode fazer é começar a anexar suas listas nesse caso, mas essa é apenas outra maneira atrevida de não ter Não é uma maneira diferente de lidar com esse tipo de coisa, mas você pode adicionar esses números em uma lista, se quiser. Anexe listas diferentes. Espero que tenham gostado. Espero que você não esteja sobrecarregado com todas as informações O próximo vídeo será o último vídeo das listas. Você se tornará um mestre de tudo isso. Aprenderemos como usar os métodos de junção e divisão e, depois, entraremos em tombos. Espero que tenham gostado. Nos vemos no próximo vídeo. 69. 20. Método de juntar e dividir: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, aprenderemos sobre o método de junção e divisão. Vamos continuar e começar. Em primeiro lugar, vou criar um novo arquivo Python , como sempre, e chamá-lo Método de sublinhado. Vou começar criando as peças do meu carro. Eu vou dizer que as peças do carro são iguais às seguintes. Primeiro de tudo, temos o capô, as rodas, os espelhos, depois temos os assentos, depois temos o motor, depois temos o aparelho de som E no final, oh meu Deus. Aqui, a primeira coisa que vou fazer é criar uma variável chamada separador separador é igual a apenas um separador, e vou adicionar um espaço em cada lado Em seguida, vou dizer que a saída é igual à junção separadora e vou unir as peças do carro e imprimir as peças do carro Ou imprima, desculpe, peço desculpas, eu quis dizer imprimir a saída Se você passar o mouse sobre a junção, veremos que ela cactina qualquer número de strings E as strings cujo método é chamado são inseridas entre cada string fornecida O resultado é retornado em uma nova string, a junção que fornecemos com o. E deve retornar uma concatenação de todos os itens que estão dentro dos Entre o momento em que escrevo, clique e executo, essa é a saída que recebo. Temos o capô, as rodas, os espelhos, os assentos, motor e o aparelho de som com essas barras Especificamos a string que queremos como separador dentro da junção e, em seguida, usamos a junção para criar tudo isso Não há nada muito estranho aqui. Nada muito complicado. Eu acho que é um método muito pequeno. Vamos passar para a divisão. Vou entrar em file, um novo arquivo Python e chamar esse método principal de divisão de pontuação Boom, aqui eu vou receber uma mensagem. A mensagem será: aprender Python é mais fácil do que você pensa, mas aparentemente não aprender gramática. Aprender Python é mais fácil do que você pensa que vou dizer As palavras são iguais à divisão da mensagem, então eu imprimirei as palavras. Se você acha que estou indo muito rápido, forma positiva em vídeo de escrever todo o código e depois analisá-lo novamente, não estou fazendo nada de especial aqui. Vamos passar o mouse sobre a divisão e ver do que se trata. Se passarmos o mouse sobre a divisão, ela dirá que ela retorna uma lista. Ah, hein. Antes que a junta retornasse uma corda. Agora estamos retornando uma lista das palavras na string usando sepp como o significado aqui, essa variável E aprenderemos na próxima seção o que são esses argumentos e como usá-los, que é o separador, como o delimitador pode ver aqui, o limitador de acordo com o qual dividimos a string O valor padrão significa dividir acordo com qualquer espaço em branco que você vê. E descarte as sequências vazias do resultado. Essa é a documentação. Se você quiser ir ainda mais longe na documentação, clique neste link. Isso o levará à documentação do Python , que é muito, muito complicada, mas definitivamente muito útil Outro recurso que você pode usar é W, três escolas. Aqui, eu poderia digitar o seguinte. Digamos que eu queira o método split em Python, três escolas Na função de divisão, você abre três escolas e pronto, veja só, você encontra todos os recursos de que precisa. Obviamente, já abordei isso antes, mas este é um ótimo exemplo apenas para lembrá-lo do que você pode passar, porque obviamente não posso te ensinar todos os pequenos detalhes em Python É impossível. O curso duraria milhares de horas, então algumas lacunas você precisa preencher sozinho, como a divisão, por exemplo. Nada demais. A divisão é muito simples. Se voltarmos ao nosso código aqui, quando eu escrevo, clico e executo, você verá que agora eu tenho uma lista de strings, que era cada item individual aqui separado ou dividido no espaço vazio Portanto, cada palavra é um item por si só. A próxima coisa que vou fazer é ter a mensagem igual à seguinte. Eu vou comer maçã, banana. A propósito, este é um exemplo que você pode ver em W três escolas, cereja e laranja. Vou imprimir a mensagem, dividida pela hashtag O que você espera que aconteça? Pause o vídeo, pense nisso antes de correr. Lá vamos nós. Podemos ver que dividimos nossa mensagem pela hashtag Agora, se você tivesse adicionado um espaço aqui, por exemplo, qual seria a saída? Vá lá, pense nisso. Aí está. Você verá que esses espaços também serão adicionados às nossas sequências de itens ou também aos nossos itens de sequência Acho que é bastante autoexplicativo. Não há nada demais aqui. Eu vou continuar. Agora vamos trabalhar com uma junção e uma lista juntos. A primeira coisa que farei é simplesmente adicionar uma impressão aqui. E então eu vou ter uma lista de números. E eu vou dizer que a lista de números é igual à seguinte aqui. Acho que é um ótimo momento para acelerar. Ok, bem-vindo de volta. Depois de digitar essa lista. Como você pode ver, esses são itens individuais. Acabei de separá-los com linhas extras. A diferença entre isso e isso não é você poderia ter escrito assim, mas eu queria escrevê-los nessa situação. E você entenderá o porquê em pouco tempo. Aqui eu vou fazer o seguinte. Vou criar valores iguais a. Vou ter que entrar na lista de números. A lista de números, vou imprimir os valores. Qual você acha que será o resultado? Enquanto você pensa na saída, vou fazer o seguinte. Eu vou ter valores sttocosco iguais aos valores divididos Em seguida, vou imprimir uma lista de valores que pensam sobre o que vai acontecer com base no que aprendemos sobre o método de junção. A propósito, o que dissemos sobre o método aqui, ou pesquisando a divisão, você pode fazer o mesmo com a junção, a propósito. Portanto, tenha isso em mente. Pense em como seria a saída se eu clicasse com o botão direito do mouse e corresse? Isso é o que eu recebo. Eu tenho um espaço, sete espaços, 843 espaços, etc., etc. Foi quando eu usei a junção. Eu entrei neste espaço aqui, semelhante ao que fizemos aqui. Usamos o separador que é apenas chamado de caractere de pipeline, se não me engano Usamos um espaço, usamos o espaço, o espaço da tubulação, e então usamos o separador que une as peças do carro aqui Fizemos o mesmo, temos um, depois o espaço que está aqui. Então tivemos 007 e depois um espaço e, em seguida, 843 espaços entre cada caractere Acabamos de ter um espaço entre cada personagem. É por isso que temos um espaço aqui. E então obtivemos essa saída e dividimos essa saída em seus espaços vazios, então criamos uma lista de números. Agora, o que aconteceria se eu tivesse um espaço aqui? Pense nisso e me diga. Vou escrever o clique, vou executar, e essa é a saída. Então você pode ver que temos um, então temos um espaço, e então temos um espaço, e então temos um espaço. O que está acontecendo aqui? Bem, primeiro de tudo, entre cada personagem, também temos um espaço. Mas quando chegamos a um espaço real, temos que adicionar um espaço no lado esquerdo e no lado direito. É por isso que você vê essas grandes lacunas aqui. É muito importante que você entenda o que está acontecendo. Vou retirar isso antes de prosseguirmos. Antes de entrarmos nas derrotas, vou lhes lançar um pequeno desafio Você precisará converter em números inteiros. Quero que você converta a lista de valores que temos em números inteiros Devo te dar uma pequena dica? Se você precisar da dica, espere. Caso contrário, e acha que pode fazer isso sozinho, o que basicamente queremos é converter isso em uma lista. Isso precisa ser convertido em uma lista de inteiros com esses números em vez de serem strings, porque observe que são Eles precisam ser números inteiros. Se você precisar da dica, eu a darei em 321. Percorra a lista e, em cada índice, converta o valor em um número inteiro. É basicamente isso. Em seguida, coloque de volta cada valor em uma lista. É assim que você pode fazer isso. Eu sei que está no nariz, mas passe o vídeo agora mesmo e vá fazer cada desafio. Ok, bem-vindo de volta aqui. Eu vou fazer o seguinte. Vou dizer que quatro no intervalo será o comprimento dos valores ou, na verdade, desculpe, peço desculpas A lista de valores, vou examinar toda a lista de valores em cada índice. A lista de valores em cada índice é igual a um número inteiro. Lista de valores no índice. Lá vamos nós. E é basicamente isso. Não há nada mais do que isso. Por fim, imprimiremos a lista de valores. E por que isso está me incomodando? Índice. Se passarmos o mouse sobre ele, inesperada, vamos examiná-lo e ver o que acontece Ok, funciona. Mas qual é o problema com esse tipo ou tipos inesperados? Ele está esperando por um número inteiro e nós fornecemos um número inteiro Então, qual é o problema aqui? Não está reclamando aqui, está chegando. Todos atribuem isso a um problema no sistema. Como você pode ver, temos isso funcionando corretamente agora. Você pode ter feito isso de outra forma. Poderíamos ter dito valor sublinhado lista de números inteiros, j é igual a uma lista vazia Eu vou dizer quatro valores na lista de valores. Vou pegar a lista de valores em números inteiros, terminar com o inteiro, todos os valores, imprimir o valor, listar Então, em vez de converter a lista real de valores, criaremos uma lista separada e colocaremos todos os números inteiros dentro dela Agora eu clico com o botão direito e corro. Lá vamos nós. Você pode ver, deixe-me obter o mesmo resultado, senhoras e senhores Espero que tenham gostado desse vídeo. Espero que você tenha gostado de Lists. Foi uma jornada longa e árdua, mas você chegou ao fim e agora tem mais conhecimento Quando se trata de listas, você basicamente tem tudo, todo o conhecimento sobre listas, provavelmente agora sabe mais de 99,9%, acho que não Não, não, eu acho que você sabe mais de 99% da população mundial se alista Parabéns, é uma conquista incrível. E no próximo vídeo, passaremos às quedas. E nos vemos então. Cuide-se. 70. 21. Tuples: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos começar a aprender sobre quedas. O que diabos são derrubadas? Eles são usados para armazenar vários itens em uma única variável. Não há muitas mudanças em relação às nossas listas originais. É uma coleção ordenada e imutável. Mamãe, hmm. Imutável, essas são as duas palavras-chave Em primeiro lugar, ordenados, o que significa que eles têm índices, estão em ordem e são imutáveis Ao contrário das listas em que podemos mudar os itens em casais, não podemos. O que significa que eles são mutáveis. Correto. Então, os casais são escritos com colchetes redondos Alguns itens são indexados começando com zero. Você pode criar uma tupla com apenas um item dentro. Tuple é um dos quatro tipos de dados incorporados e o Python é usado para armazenar a coleção Os outros são listas, conjuntos e dicionários. Já analisamos extensivamente as listas. Veremos conjuntos e dicionários nas próximas seções, mas isso é o básico. Vamos começar a usar tuplas em nosso código. Aqui, vou criar um novo arquivo Python e vou chamá-lo de tuplas underscore Vou dizer t igual a a, a. E vou imprimir, se eu clicar com o botão direito do mouse e correr, isso é o que eu obtenho. Olha isso. Eu tenho a, B, C e tenho colchetes redondos ao redor deles, o que me indica que esta é a Apple Mas essa não é a maneira mais correta de criar a Apple. E, a propósito, precisamos de uma linha extra, precisamos adicionar parênteses ao redor delas para indicar corretamente que temos E eu vou te dizer por que o Python nos permite fazer algo assim onde não temos os dois parênteses Novamente, se eu clicar com o botão direito do mouse, obtemos a mesma saída. Basta adicionar parênteses ao redor deles e você obterá a saída como Isso significa que sempre que você quiser passar um literal de um par para qualquer função, ele deve estar sempre entre parênteses Veremos o que quero dizer com essa frase mais tarde, o que significa realmente enviar um casal para uma função. Vamos seguir em frente e continuar, e vamos criar algumas frutas. Então, eu vou comer frutas e vou dizer que elas são iguais às seguintes. Oh meu Deus. Vamos ter, oh meu Deus, por que não posso escrever maçã, banana, cereja? Algo deu errado com meus dedos. O que mais temos? Outra maçã? Sim, claro. Por que não? Maçã, mamãe e outra cereja. Por que diabos não? Vá em frente. Nomes de frutas muito criativos. E vou imprimir as frutas e vou imprimir as frutas na posição dois, qual você acha que será a saída? Pronto, muito simples. Temos algumas de nossas frutas e, se imprimirmos frutas na posição número dois, obtemos cereja. Porque, assim como as listas, começamos às 01.2 e obtemos cereja Além disso, as tuplas são imutáveis, como eu já disse. O que significa que eles não podem mudar. E agora estou lembrando, talvez eu tenha dito mutável, espero que não tenha dito Mas, de qualquer forma, aqui, sabemos que os casais são imutáveis, que significa que são que significa que se eu tentar fazer a seguinte coisa atrevida aqui, frutas, e então eu digo que frutas na posição zero são iguais a Olha isso. Mesmo antes de fazer qualquer coisa, mesmo antes de tentar executar isso, isso imediatamente me dá um grande destaque. E se eu passar o mouse sobre esse destaque, ele me diz que casais não apoiam a atribuição de itens, o significa que você não pode atribuir nada a ele se eu tentar imprimir frutas agora Quando escrevo, clique e vejo isso, recebo um erro porque é um erro de tipo. O objeto Derrubar não suporta a atribuição de itens, você não pode fazer isso Eu deveria comentar isso. Também vou comentar isso porque eu realmente não preciso dele. Também podemos converter tombos em listas. Por exemplo, eu posso dizer frutas. Dois é igual a uma lista das minhas frutas. Vamos imprimir frutas. Clique e execute. E veja o que temos aqui. O que recebemos? Eu estava tão confuso, tipo, que diabos? Nós a convertemos em uma lista e não parece uma lista, mas estávamos imprimindo as frutas, frutas para quando eu escrevo, clique e aí eu recebo frutas, frutas duas é uma lista. Agora também podemos converter isso de volta em uma queda, então posso dizer que as frutas três agora são iguais às frutas duas Desculpe-me, frutas duas. Aparentemente, a caneca não está apenas nos meus dedos, está também no meu cérebro ou nos meus olhos Vou imprimir três frutas, clicar com o botão direito do mouse e correr e olha só, nós as convertemos novamente em um tombo. Então, esse é o básico da derrubada. Eles são imutáveis, têm colchetes redondos. E veremos mais usos para nossas quedas nos próximos vídeos Mas antes de partirmos, você precisa lidar com o impossível em seu desafio. Você precisa mudar o imutável. Você precisará destruir o indestruível. Encontre uma maneira de mudar um item dentro da queda imutável que criamos Esse é um desafio impossível, eu sei, mas existe uma maneira quando há uma vontade Devo te dar uma dica ou você gostaria de fazer isso sozinho 321, Converta o topple em uma lista, altere um item nessa lista e, em seguida, converta-o novamente em um Obviamente, isso é algo que nunca precisaremos usar na vida real, mas você nunca sabe quando poderá precisar alterar um valor em um casal. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta aqui, o que queremos fazer é o seguinte. Quando transformarmos frutas em uma lista, também direi aqui, imprima trocando, trocando maçã por abacaxi. Aqui eu vou dizer frutas, frutas duas. Na posição zero é igual ao abacaxi. E então eu me converti novamente em uma queda. E agora devemos ter o seguinte, bum, aí está. Então, na verdade, mudamos nossos parabéns. Obviamente, essa é uma maneira muito atrevida. Nunca gostaríamos de fazer algo assim. Mas é, tudo é possível com o Python, se você realmente acredita nisso Um exemplo do uso de casal seria, digamos, eventos relacionados a datas. Você não gostaria de ter uma lista que indique quando o evento acontecerá, porque alguém pode vir e mudar essas datas e arruinar todo o seu evento. O remédio que alguém deveria tomar definitivamente deveria ser um casal O que mais pode ser dinheiro em uma conta bancária, por exemplo? Ah não, o dinheiro, as costas e o boné realmente mudariam. O que não mudaria seriam as transações que você fez. Portanto, você não gostaria de alterar o valor que você fez em uma determinada transação. Então, depois de alguns anos, você só tem uma lista e entra, remove coisas e continua. Estes são alguns exemplos que espero que tenham gostado. Espero que você tenha entendido. No próximo vídeo, veremos como desempacotar peças caídas e o que significa desempacotar Muito obrigado por assistir. Nos vemos no próximo vídeo. 71. 22. Descompactando um Tuple: Bem-vindos de volta, meus desenvolvedores favoritos de Python. Neste vídeo, aprenderemos tudo sobre como descompactar cavidades Primeiro , vamos nos aprofundar nisso, Arquivo novo. E devemos encontrar o arquivo Python e chamá-lo de desempacotamento. Vamos chamar isso de desempacotar tombos para que saibamos do que diabos estamos falando. Vou ter x, y e z, e eles são iguais a 12,3 Se eu tentar imprimir x, y e Z, clicar com o botão direito do mouse e executar, e pronto, obtemos 12,3 Basicamente, o que aconteceu aqui é chamado de desempacotar porque, como você pode ver, temos 123 que são É a mesma coisa que fazíamos aqui quando tínhamos o ADC, só que sem os parênteses ao redor deles Xyz são três variáveis diferentes às quais cada uma recebeu um valor daquela queda, o que significa que descompactamos a queda É basicamente isso. Nós simplesmente desempacotamos o tombo. Se você quiser ter certeza de que foi realmente uma queda que foi descompactada, faça o seguinte e a saída será a mesma Também podemos descompactar qualquer sequência que quisermos. Por exemplo, o seguinte. Se tivermos uma lista de sublinhados de dados e ela for igual a 123, poderíamos dizer que temos P Q R igual a essa lista de dados e podemos imprimir P Q e clicar com o botão direito do mouse e executar Lá vamos nós. O único problema em descompactar um objeto mutável é que, se alguma alteração acontecer, isso pode realmente prejudicar nossa Se alguma alteração acontecer nessa lista de dados e tentarmos descompactá-la posteriormente em, digamos, as seguintes variáveis, podemos ver que recebemos um erro Ou, digamos, por exemplo, tentemos descompactar uma lista de dados que tem, por exemplo, quatro elementos , clique com o botão direito do mouse e um Você pode ver que recebemos um erro. Ou se anexarmos a lista de dados a qualquer momento. Vamos agora dar uma olhada em um uso mais prático de desempacotar. Vou comentar essas linhas e vou fazer o seguinte. Eu vou dizer que temos o alfabeto e é igual a ABC D E F G H I, J K L M N O P Q R S T U, V, W, X, Y e Z. Vamos lá. J K L M N O P Q R S T U, V, W, X, Y e Z. Vamos lá. Nós temos todos eles. Agora vou dizer quatro em enumeração sobre o alfabeto. Oh meu Deus, você está me dizendo agora, whoa, whoa, Michael, você claramente cometeu um erro Quando dizemos enumerar, ele retorna Ele retorna o índice e também retorna o valor. Isso claramente não vai funcionar, mas o que você talvez não saiba, jovem gafanhoto, é que o que acontece aqui é que a enumeração realmente retorna maçã, e esse par é dividido em que a enumeração realmente retorna maçã, e esse par Isso é o que estava acontecendo o tempo todo se eu a mantivesse como uma única variável, é por isso que eu a chamo. A propósito, veja o que temos. Nós somos derrubados. Não sei se você se sente enganado ou não, mas é isso que acontece nos bastidores É por isso que sempre precisamos nos aprofundar e entender o que está acontecendo em Python Como você pode ver, isso é maçã. Nós podemos desempacotá-lo. Na verdade, você vai desempacotá-lo. Seu desafio será descompactar o índice dentro do loop Descompacte o topple em duas variáveis, o índice e o caractere Imprima os dois em cada iteração. Passe o vídeo agora mesmo e vá para o desafio. Ok, bem-vindo de volta com muita facilidade, assim como fizemos por todos esses anos. Caractere de índice igual a t. Então aqui podemos dizer caractere de índice. É basicamente isso. Aqui, estamos descompactando o topple no índice e no personagem E quando escrevemos, clicamos e executamos, obtemos essa saída. Desempacotar é muito simples, muito fácil. Não há nada demais nisso. Veremos muitos exemplos de desempacotamento de tupples no futuro. Não especificamente para desempacotar, mas em situações como na enumeração em que estamos desempacotando tupples sem realmente saber que estamos desempacotando tupples, espero que você goste, e nos vemos no próximo vídeo, onde estamos desempacotando tupples sem realmente saber que estamos desempacotando tupples, espero que você goste, aprenderemos sobre tombos e mas em situações como na enumeração em que estamos desempacotando tupples sem realmente saber que estamos desempacotando tupples, espero que você goste, e nos vemos no próximo vídeo, onde aprenderemos sobre tombos e listas aninhados. Te vejo então. 72. 23. Tuplas e listas aninhadas: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, aprenderemos sobre tupples e listas aninhadas O que significa que teremos listas dentro de listas, ou na verdade tupples dentro de listas ou tupples dentro de listas ou tupples Vamos ver o que vai acontecer, vamos misturar tudo e ver o que sai. Vou criar um novo arquivo Python que vou chamar de filmes Nested chamar de filmes Nested E eu vou fazer o seguinte. Eu vou ter filmes aqui e serão iguais aos seguintes e mágicos em 321. Estrondo. Não vou sentar e escrever tudo, não quero tornar o vídeo desnecessariamente longo, mas, como você pode ver, temos itens individuais dentro da lista de filmes Temos o nome do filme, por exemplo, Sha Shank Redemption A propósito, filme incrível, o produtor ou diretor é Frank Drabont, e foi feito no ano de 1994, Silence of the Lambs, Seven, The Shining Todos esses filmes incríveis, exceto caçador de veados. Não sei por que, simplesmente não gostei muito. De qualquer forma, se eu tentar imprimir a duração dos filmes antes de você rodar, pense em qual será a resposta. Se você pensasse em cinco, estaria errado. São 15, porque observe que não há indícios de uma lista ou nenhuma indicação de uma queda aqui Para corrigir isso, precisamos transformar tudo isso em OK, espere. uma queda. Lá vamos nós. E enquanto estamos criando ou fazendo essas derrotas, por que gostaríamos que os filmes fossem derrubadas e não listas, se você Porque o nome de nossos filmes nunca mudará e os diretores de nossos filmes nunca mudarão e o ano em que o filme foi lançado nunca mudará, então você estaria correto, porque nunca mudaremos o nome do filme, nunca mudaremos o diretor e nunca mudaremos o ano em que foi feito, e nunca mudaremos o ano em que foi feito menos que haja algum imprevisto consequências. Não sei se o nome do diretor está errado ou algo assim. Independentemente disso, sempre teríamos o mesmo ano, mesmo nome e o mesmo diretor de cinema. É por isso que derrubar é uma boa ideia aqui. Agora, se eu estiver certo, posso correr e dar uma olhada nisso. Eu recebo cinco em vez de 15. Agora queremos dissecar isso. Vou criar quatro loops e, digamos, quatro filmes em filmes e vou imprimir o seguinte. Vou ter um campo de substituição, primeiro lugar, terei um campo de substituição de nome dentro. Eu vou fazer um filme na posição zero, Mm Hmm. Em seguida, diretor do filme Dots na primeira posição. E então, segundo ano, filme de campo de colocação de Dots na posição dois. Lá vamos nós. Agora, quando escrevo Click e executo, essa é a saída que recebo. Deixe-me também dar uma olhada aqui, obtemos o seguinte. Recebemos o nome do diretor de Shashank Redemption Frank Arrabon, ano 94, nome do diretor de Silence of the Lamb Jonathan Demi, o ano de 1991, etc., etc . Mas, como você pode ver , não está muito claro quais as informações que estamos tentando extrair. O que quero dizer com isso é o que é o filme zero? O que é o primeiro filme? O que diabos estamos fazendo durante o ano? Uma maneira melhor de fazer isso é, em vez de ter o filme zero, eu poderia ter o nome do filme sublinhado em vez do nome do diretor Eu poderia sublinhar o nome em vez do ano. Eu gostaria de ter ouvido tudo o que eu quis dizer. Em vez do segundo filme, eu gostaria apenas de ter o ano. Mas, obviamente, o olhar atento de vocês teria notado que temos um erro aqui Sim, as três grandes linhas abaixo das variáveis provavelmente revelaram isso. Mas, como você pode ver, não podemos simplesmente fazer isso. Precisamos realmente ter as variáveis. E vai ser um desafio para você, porque estou me sentindo preguiçosa hoje Você precisará corrigir os erros. Primeiro de tudo, você precisa encontrar uma maneira de corrigir o erro da maneira mais eficiente possível. Descompacte o pacote E há duas maneiras de fazer isso. Devo te dar os caminhos? Caso contrário, você pode ir agora mesmo e fazer o desafio, se quiser. Isso é uma espécie de dica, as duas formas diferentes são 321 Estrondo. Dentro dos loops usando variáveis ou nos loops reais, semelhantes à enumeração, passe o vídeo agora mesmo e vá fazer o Ok, bem-vindo de volta. Então, a primeira forma está dentro do nosso circuito. Então, simplesmente dizemos que temos a cópia do filme, a cópia, o nome do filme. Vá lá, o nome do diretor aqui é igual ao do filme. E simplesmente desempacotamos isso, porque lembre-se de que é uma tomba que pode ser desempacotada Agora, quando dizemos nome, nome do filme, sabemos que estamos recebendo o nome do filme. Estamos tentando imprimir o nome do filme. Não apenas filme a zero ou filme a um. Sabemos o que está sendo impresso. Quando eu escrevo, clico em, olha isso, está tudo bem. Mas essa não é a maneira mais eficiente. A maneira mais eficiente é fazer isso diretamente aqui sem ter que assistir ao filme aqui mesmo. Quatro nomes de filmes, nome do diretor e coração. Semelhante ao que fizemos com a enumeração, clique com o botão direito do mouse em Executar e pronto Então, essa é a base dos loops aninhados, quero dizer listas de tupples aninhados, como você pode ver, temos filmes, temos Este é quase o último vídeo. No último vídeo, vamos nos aprofundar na nidificação Estou muito animado para ver você lá, e eu vou te ver em alguns segundos. 73. 24. Mergulhe mais profundamente no aninhamento: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos começar a analisar um pouco mais a fundo a nidificação A primeira coisa que queremos fazer é atualizar nossos filmes. Que tal isso? Queremos também ter uma lista de atores antes de começarmos a pensar em como adicioná-los e tudo mais. Queremos ter um pequeno desafio, que não esteja escrito, é algo que você possa pensar sozinho. O que usaríamos para prender os atores? Deveria ser um casal ou deveria ser uma lista? Ou poderia ser uma lista de casais ou algumas listas? Eu só vou te dizer que o que vamos fazer é ter atores com um número ao lado deles. Teremos o nome do ator e ao lado deles teremos o número anexado. Esse número será a classificação do ator com base em sua popularidade no filme. Pense sobre isso. Deveria ser uma lista de casais, casais de listas. Só a Apple, o que você acha? Vamos ver. Vou entrar no arquivo novo e criar um novo arquivo Python que chamarei de dados de sublinhado aninhados Dentro desses dados aninhados, vou fazer cópias e colagens mágicas Nossa, de onde veio tudo isso? Eu vou te fornecer esses. Eu não vou deixar você esperando se você fizer isso, não os encontre aqui e não queira anotá-los sozinho Entre em contato comigo de qualquer maneira que você puder ou entre em discórdia Acho que você terá acesso a essa discórdia, por favor. Sempre que precisar, o que quiser, me avise. Então, aqui, como você pode ver, temos Shaw Shank Redemption, temos Frank Daramore e temos temos Shaw Shank Redemption, temos Frank Daramore e temos 1994. E também temos uma lista de atores. E esses atores são casais individuais. Agora, por que isso é uma lista de tupples? Em primeiro lugar, gostaríamos de tê-los como stupples. Porque, como sempre, isso nunca vai mudar. Agora você pode estar pensando, bem, talvez a popularidade de Morgan Freeman diminua em relação à popularidade de Bob Mas vamos assumir que isso não vai mudar. Você sabe que Morgan Freeman nunca é. Você ao menos sabe quem é Clancy Brown? Eu te desafio, eu te desafio duas vezes. Anthony Hopkins sempre será mais popular do que Jodie Foster, mesmo Mas definitivamente mais popular que Brooksmith, Brad Pitt. Quero dizer, vá lá, e então temos Jack Nikon. Não há debate lá. Mas, de qualquer forma, vamos imaginar que eles sempre serão os mesmos. Isso deveria ser um fracasso, e porque talvez queiramos adicionar outros atores a essa lista, é por isso que a incluímos em uma lista e não na Apple Essa é a explicação de por que devemos ter uma lista de derrubadas. A próxima coisa que queremos fazer é imprimir todas essas informações corretamente. Eu vou dizer quatro nomes de atores diretos em filmes. Vou imprimir o seguinte. Vou nomear dois pontos, substituir o campo pelo nome dentro do diretório para pontos Diretor, isso é chamado de coluna, dois pontos, isso é dois pontos Quando você tem dois pontos assim, talvez eu deva parar de chamá-los pelo menos pontos verticais ou dois pontos verticais E, finalmente, a coluna de atores. E teremos os atores. Basicamente, dividimos o melhor, que são os filmes, no nome do diretor que talvez eu não tenha mencionado aqui Observe onde a queda começa e termina. Se você clicar em um dos parênteses, verá onde está o outro irmão Aqui mesmo, o Shashank Redemption, Frank. Mais vírgula 1994, a lista. E então temos o final final. Temos a paralisação fechando. Aqui mesmo, quando escrevo Click and I run, é assim que eu recebo o nome, o diretor de Shashank Redemption, diretor de Shashank Redemption Frank Ramre E você verá que os atores são impressos dessa forma. Não é uma maneira muito boa, mas nós pegamos a panela. Também podemos ter vários atores aqui. Podemos acessar qualquer filme em particular e obter as informações dele. O que quero dizer com isso é que, por exemplo, aqui vou imprimir e vou dizer que temos um determinado filme igual aos filmes na posição número dois e vou imprimir. Os filmes, eu imprimo o filme. Então, quando escrevo Click e corro, isso é o que eu obtenho nos sete últimos lugares. David Fincher 1995 e depois a lista de atores. Mas e se quiséssemos acessar atores individuais? Em primeiro lugar, digamos que eu queira acessar os atores. Eu faria o seguinte. Eu diria que é igual ao filme na primeira posição. Lembre-se de que tenho acesso ao filme , que é uma queda, e depois acesso aos atores Ou eu digo atores iguais a esse filme na primeira posição, porque eu tenho, desculpe-me, deveria estar na terceira. Muito bom. Leve Michael para cá, aqui está 012. E depois, três, acessamos esses elementos. Eu expulso os atores, clico com o botão direito, corro e pronto Pronto, temos nossos atores. Agora eu quero acessar um dos atores. Eu diria que ator é igual a atores. E então eu acessaria o número um. Agora vou imprimir o ator com o botão direito do mouse e executar. E aí está, temos Morgan Freeman. Ou se você quiser, pode pegar Brad Pitt. Você pode até mesmo pegar Kevin Spacey. Lá vamos nós, um pouco. Agora, tenho um desafio para você você viu como podemos descompactar a tomba lentamente e, a propósito, se quiser, você também pode imprimir o nome real Por exemplo, aqui, sublinhe o nome igual a A na posição um e imprimimos o nome real do ator Agora temos exatamente Brad Pitt sem parênteses Espero que você tenha entendido como isso funciona, porque agora você tem um desafio muito divertido, que é encontrar e imprimir os atores. Imprima os três nomes a seguir, Danny Lelloyd, Tim Robbins Você precisará usar o mesmo método que usamos agora para imprimir todos esses atores. Publique o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, vamos começar. Primeiro de tudo, temos Danny Le Lloyd. O Lloyd. É assim que você escreve? Sim. Em primeiro lugar, precisamos encontrar esse homem. Onde está Danny? Danny? Danny, Danny, Danny, Leo O homem está no Iluminado. O que significa que deve ser um filme igual a 012. Quantos filmes temos? Deixe-me verificar, 0123. Tudo bem, filmes às três. Em seguida, queremos ver os atores, o que significa que precisamos de um filme. Lembre-se dos filmes de cinema, 012.3, Lá vamos nós Três. Então, precisamos do ator real, que são os atores. Então precisamos de 012. Tudo bem, dois. Finalmente, o nome do sublinhado do ator é igual a atuar na posição, qual era aquela, eu acho Sim, um. A impressão 321. Ás. Isso funciona? Sim, lá vamos nós. Pegamos Danny Lee Lloyd. Agora precisamos ir para o próximo nome, que era, qual era o nome? Tim Robbins. Mas antes de fazer isso, quero mostrar uma maneira muito mais fácil de fazer isso. Posso dizer que tenho Danny sublinhado Lee Lloyd igual aos parênteses dos filmes, três parênteses, Lee Lloyd igual aos parênteses dos filmes, três parênteses, três colchetes. Quero dizer, colchetes, dois colchetes, Se eu imprimir Danny Le Lloyd, clique com o botão direito, corra, veja Posso me aprofundar na minha lista usando esses ou vários colchetes, um após o Vamos encontrar Tim Robbins. Tim Robbins é Tim Robbins está em Deveria ser zero. Então teremos atores às três, sempre. Então temos Tim Robbins ao mesmo tempo. E então 10311 aqui, eu vou dizer que Tim underscore Robbins é Oh meu Deus, por favor. 03. O que dissemos que Tim Robbins era um e depois um, e vamos imprimir Tim Vamos ver se isso funciona. Sim. Lá vamos nós. Tim Robbins E o sobrenome era Scott Onde você está agachado? Scott Glenn. Scott Glenn está no filme em que Scott, então nós ainda temos um Lá vamos nós. Aqui está. No filme Silêncio dos Inocentes, é 13012344 Sim, é. Porque esses são os números um. Eles começam em um, o que significa que este é definitivamente 4.134.1. O último ou esses dois números nunca mudam Eu diria que Scott Glen é igual aos filmes. O que dissemos? 1341. Lá vamos nós. Scott Clam. Senhoras e senhores, espero que tenham gostado Espero que você tenha assistido ao último vídeo. Essa foi uma jornada incrível. Finalmente terminamos as listas e as derrotas. Você está lentamente, mas com certeza, se tornando um incrível programador de Python Espero que você esteja gostando das partituras. Você está obtendo toneladas de informações com isso. E nos vemos na próxima seção onde acredito que começaremos a falar sobre funções. Seção muito importante, lições muito importantes que vamos aprender. Então, mal posso esperar para ver você na próxima seção. Dê um tapinha nas suas costas. Você está se saindo incrivelmente bem. Te vejo então. 74. Seção 6 - Funções | 1. Definindo uma função: Bem-vindo de volta aos meus programadores de Python favoritos uma seção totalmente nova, na qual começaremos a aprender tudo sobre funções Então, vamos definir funções, entender parâmetros e argumentos. Vamos entender o que é chamar funções. Retornando valores, não retornando valores, manipulando argumentos inválidos, etc., etc. Então, sem mais delongas, vamos começar Primeiro de tudo, vamos explicar ou definir o que uma função realmente é. Então, o que diabos é isso? Uma função é um bloco de código que executa uma tarefa específica. Assim como tínhamos blocos de código em nossas declarações, assim como tínhamos blocos de código em nossas quatro instruções. Agora temos blocos de código dentro de uma função. Você pode passar dados por, ou conhecidos como parâmetros, para a função definida. Como resultado, uma função pode retornar dados. Uma função só é executada quando é realmente chamada. As funções fornecem melhor modularidade para seu aplicativo e alto grau de reutilização de código O que queremos dizer com o seguinte? Em primeiro lugar, podemos passar dados para ele. Então imagine uma função como quando você tenta somar algumas coisas. Quando você quiser somar dois elementos, digamos que 2,5 você esteja fornecendo dados para uma função que é soma. Você fornece um dois e depois fornece um cinco. E a função os soma e a função também pode retornar dados como resultado, que significa que você forneceu dois e cinco. Se os somar, chega a 7567. Sim, isso mesmo, e ele retorna esse resultado, o que significa que ele devolve dados, que são sete. Uma função só pode ser executada quando é realmente chamada. O que significa que digamos que você tenha essa função. Ela não será chamada sozinha, a menos que você diga, a menos que você especifique que está realmente tentando chamar essa função. E, finalmente, as funções fornecem melhor modularidade para seu aplicativo e um alto grau de reutilização, o que significa que, antes de tudo, modularidade significa que é uma técnica de dividir um programa maior em tarefas menores, mais separadas e mais fáceis de gerenciar Digamos que, em vez de usar plus todas as vezes, você pode simplesmente criar uma função que pode ser usada sempre que precisar. Isso permitirá que você faça uma pequena alteração para corrigir todos os problemas que você enfrenta. Veremos onde isso se torna muito útil e você também pode reduzi-lo várias vezes. Nós já dissemos isso. Vamos dar uma olhada em uma estrutura de funções. Essa é a maneira típica de criarmos uma função. Nós o definimos usando os surdos. Temos o nome da função, o argumento, o corpo da função e um valor de retorno. Surdo é a palavra-chave usada para declarar a função. Nome da função é o nome da função ou o nome dado a essa função. Normalmente, o nome da função deve refletir o que essa função faz. Os argumentos são qualquer valor que é passado para definir a função e o retorno que pode ser opcional, que retorna um valor dessa função após todo o código ter sido processado. Como eu disse, às vezes você pode devolver coisas. Você não pode devolver coisas se não quiser. E é muito importante saber também que você precisa deixar alguns espaços. Vou te dizer uma coisa: com essa pequena introdução às funções, vamos realmente começar. última vez que estivemos aqui, vou criar um novo projeto. Agora, talvez eu tenha mudado o curso de atualização do código, não sei. Algumas coisas podem ter mudado. Não se preocupe Vá para o projeto, certifique-se de que é Python. Vou chamar essa função em Python e vou selecionar o arquivo apropriado, então ele deve estar no curso de Python D. No código. No código, criarei uma nova pasta que funcionará em Python e a codificarei funcionará em Python e a codificarei Ok, vamos terminar. Sim, nesta janela, vou criar um novo projeto. Novo projeto. E aqui, certifique-se de que é um projeto em Python. E eu vou salvá-lo dentro do curso de Python. Dentro do código, vou criar uma nova pasta para isso. Chame isso de funções em Python. Copie isso, ok. Ok, e também copie aqui. Não está mudando por alguns motivos estranhos. Novamente, deixe-me ter certeza de que selecionamos as funções do Python Ok, termine essa janela. Lá vamos nós. Devemos ter tudo funcionando corretamente. Vamos continuar e começar. Em primeiro lugar, vamos criar um novo arquivo Python Clicamos novamente aqui. Se não estiver aparecendo, vamos clicar aqui. Arquivo Python. Vamos chamar isso de funções de sublinhado de introdução Vamos criar nossa primeira função. Nossa primeira função será muito simples. Vamos definir adição aqui. Eu vou ter o resultado que é igual a 10,5 mais quatro e vou retornar o resultado Então eu vou fechar o projeto para que tenhamos mais espaço. E terei a resposta igual apenas à adição e imprimirei a resposta. Algumas coisas a serem observadas. Primeiro de tudo, temos essa linha ondulada. Se passarmos o mouse sobre ela, ela nos dirá que a etapa 8305 esperava duas linhas em branco depois uma definição de classe ou função encontrou O que eles estão falando é sobre essa linha vazia. Sempre precisamos de duas linhas. Quando pressionamos enter, temos um espaço. Lá vamos nós. Sempre que você definir uma função ou uma classe, aprenderemos mais tarde o que é uma classe. Você sempre precisa ter dois espaços. Em seguida, definimos a função real. Aqui, dissemos adição da palavra-chave def aos colchetes redondos O resultado é igual a 10,5 mais quatro e retornamos esse resultado. Finalmente, chamamos essa função. A função não funcionará sozinha , a menos que seja realmente chamada. Quando escrevo, clique e executo, essa é a saída que recebo, 14.5 Muito simples Não há nada demais aqui. Agora, o que queremos fazer é apresentar a você um pequeno desafio. Seu desafio será fazer o seguinte. Crie sua própria função pessoal. Crie uma função com a multiplicação. Essa função deve multiplicar dois números de sua escolha e retornar um resultado E chame isso em seu corpo. No corpo do seu código. Quando digo corpo do seu código, isso significa qualquer coisa que esteja fora das definições de funções que temos no topo. Imprima o resultado. Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Aqui no topo, vou definir multiplicação. E eu vou ter o resultado igual a 10,5 multiplicado por quatro E eu vou devolver o resultado. E também precisamos ter dois espaços em branco entre nossas funções. Vou mudar isso de adição para multiplicação. Agora, quando eu corro, isso é o que eu obtenho, 42.0 Você notará que, embora seja 42, também temos o zero, o que significa que qualquer que seja o resultado, o que ele retornará O resultado é um flutuador. Ele retorna um flutuador. Isso significa que a resposta é flutuar. Isso significa que imprimimos um carro alegórico. Então, espero que você entenda como isso funciona. Como uma pequena lição de casa, recomendo que você adicione um ponto de interrupção aqui ao lado da resposta, para que você possa ver como o programa realmente Então, a resposta chama multiplicação, vamos para a multiplicação, examinamos o resultado e, quando retornamos, voltamos para essa linha exata Então, isso será como uma pequena lição que você pode fazer para ter certeza de que entendeu como as funções de Colin funcionam As funções não são tão difíceis, como você viu. Há algumas coisas que precisamos saber sobre eles, mas tudo ficará bem confie em mim, não se preocupe. Então eu espero que você goste. E nos vemos no próximo vídeo, onde analisaremos os parâmetros e argumentos e os entenderemos completamente. Então, eu vou te ver em alguns segundos. 75. 2. Parâmetros e argumentos: Bem-vindos de volta, meus colegas desenvolvedores de Python a um vídeo totalmente novo E neste vídeo, aprenderemos tudo sobre parâmetros e argumentos. Nossa função atual não é realmente útil, pois podemos simplesmente evitar o uso da função. Nesse caso, o que queremos é realmente começar a adicionar parâmetros e torná-los mais úteis. disso, estamos apenas adicionando dois números, dez pontos 5.4 ou multiplicando esses dois números, que não é realmente eficiente Queremos poder adicionar, por exemplo, dois números que o usuário nos forneceria. Vamos seguir em frente e fazer isso. Para começar a mudar isso, vamos voltar à nossa função, que é a multiplicação, e vamos fornecer dois parâmetros O primeiro parâmetro será x. O segundo parâmetro será y aqui. Em vez de multiplicar 10,5 por quatro, vou multiplicar x por y. E então eu retornarei o resultado. Agora, quaisquer valores que fornecermos serão usados nessa função, multiplicados e definidos para o resultado e depois retornados Agora observe que, assim que fizermos isso, isso não funciona mais. Se eu escrever click e Iun, recebo um erro porque ele me diz que há uma multiplicação de erro de tipo sem dois argumentos posicionais necessários, x e y. Então, temos que fornecer esses Vou fornecer dez pontos 5.4. Então, basicamente, não fizemos nada , mas fornecemos os números E agora não deve haver nenhum erro. E agora temos 42,0 Agora eu posso mudar isso para, digamos 6,8 E eu clico com o botão direito e corro, olha isso, 27,2 Eu posso mudar o quatro para 12, clicar com o botão direito e executar 81.6 Então, como você pode ver, nós criamos uma função de multiplicação realmente eficaz usando Obviamente, o que estamos fazendo também é fornecer a essa função um número flutuante, que nos dá um número flutuante em troca Mas se fornecermos um número inteiro ou dois números inteiros, veremos que temos uma saída inteira Esse é o básico de ter dois argumentos. Não há nada demais aqui. Vou lhe dar um desafio para ajudá-lo a entender melhor como isso funciona. Vou mostrar no slide que você precisa criar funções de loop, criar quatro loops em um determinado intervalo Isso deve acontecer no corpo do seu código. Novamente, concentre o corpo do seu código. Use o valor no loop como argumento. Na função de multiplicação, você tem o valor que está aumentando ou diminuindo ou o que você quiser dentro do seu intervalo O valor que está mudando precisa ser usado como argumento na função de multiplicação Imprima a resposta resultante a cada iteração, e é basicamente isso Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu fazer isso aqui? Primeiro de tudo, preciso criar um loop de quatro. Então, vou dizer quatro válvulas, ou seja, valor na faixa. E o intervalo será 1010, vamos de zero a nove porque lembre-se de que é sempre até, mas não inclui E vou dizer que o valor do sublinhado da tabela será igual à multiplicação da válvula Em seguida, imprimirei as duas coisas a seguir. Eu vou dizer que dois x que representam multiplicar com o campo de substituição de val serão iguais à tabela de valores do campo de substituição Então, o que devemos ver é que devemos ver dois multiplicado por zero igual a zero multiplicado por um igual a multiplicar , blá, blá, blá, blá Clique com o botão direito do mouse em Executar e pronto. Funciona dois multiplicados por 02 multiplicados por 12 multiplicados por dois até dois multiplicados por Como você pode ver, fornecer parâmetros é muito útil. Uma função que não tem parâmetro ainda pode ter seu próprio lugar, mas não é tão eficiente. Antes de prosseguirmos, vamos criar algumas depurações Vamos fazer uma depuração de nossos valores. Então, primeiro vou adicionar um depurador aqui, adicionar um depurador aqui, ou talvez eu deva adicioná-lo Isso não importa. Vou escrever o clique e vou executar, desculpe, vou escrever o clique e vou depurar Boom, é aqui que começamos a multiplicação. Sobre a resposta. Agora, se eu entrar e ver o que acontece, vou para o topo, para a multiplicação. É óbvio que, se você fez a lição de casa, a pequena lição de casa que eu lhe dei antes, você deve estar familiarizado com Então, vamos ver o que acontece quando entramos novamente. Oh, desculpe. Antes de entrarmos novamente, veja o que acontece aqui. Temos x seis e y 12. Então, eles vão para suas respectivas posições. Então, o primeiro argumento vai para x, o segundo argumento vai para y. Entramos novamente, aí está. O resultado é 72 e, em seguida, voltamos à multiplicação para definir o resultado como resposta Se eu entrar novamente, veja isso, a resposta se torna 72. Mas observe que algo muito importante que aconteceu quando na verdade, saímos da função de multiplicação x e y desapareceu. Por que isso? Bem, porque nesse caso, X e Y são apenas variáveis temporárias. Eles não estão configurados para nada, não foram criados ou definidos adequadamente. Eles são temporários. Depois que a função estiver concluída, elas serão excluídas. E o que quero dizer com isso, é muito importante saber essa distinção, porque agora, se eu tentar, por exemplo, imprimir x, veja isso, não há nada, há um erro. Porque x não existe no corpo do meu código. Ele só é definido dentro da multiplicação. Só existe nessa fronteira e não existe do lado de fora, ok? Portanto, uma coisa muito importante a ser observada. Você não pode usar suas variáveis, seus parâmetros fora da função real. A quem, a quem ou a mim não sei aonde pertence. Está bem? Então, espero que você tenha entendido parâmetros e argumentos. Não é tão difícil, é meio fácil. Eu recomendo que você também, como uma pequena lição de casa, possa usar o depurador aqui mesmo neste loop Analise isso, certifique-se de entender o que está acontecendo, como esses valores estão mudando e como eles também estão desaparecendo e não podem ser usados fora dos limites do Espero que você goste. Nos vemos no próximo vídeo onde criaremos um inversor de palavras Isso deve ser divertido. Então, eu vou te ver em alguns segundos. 76. 3. Reversor de palavras: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos criar outra função que demonstrará como podemos, na verdade, usar funções de uma forma mais significativa. Porque atualmente a multiplicação que criamos e a adição são funções que já existem em Python Então, queremos criar um que seja único. A primeira coisa que vamos fazer é entrar no arquivo novo e criar um novo arquivo Python que chamaremos de reverser de sublinhado de palavras Inverta, senhor. A primeira coisa que vou fazer é definir o reverser. Vou apresentar um argumento. Será a sequência de caracteres sublinhado dois, sublinhado Então, vou dizer que a string de sublinhado reverso é igual à string a ser revertida E vamos dividi-lo da seguinte maneira. E então eu vou devolver a força invertida, e é basicamente isso Você pode me dizer o que isso faz aqui? Eu quero que você pare alguns minutos e se lembre como o corte funciona e essa fatia exata Depois de passar o vídeo e pensar sobre ele, você provavelmente concluiu que o que estamos fazendo aqui é que estamos começando do começo, indo até o fim, mas estamos fazendo uma etapa de menos um Vamos voltar à sequência de caracteres que gostaríamos de reverter. Quando temos uma etapa de menos um, isso significa que esse é o fim e esse é o começo Basicamente, o que estamos dizendo é que a string invertida é igual a uma fatia da string que queremos reverter, mas quando ela vai do final ao começo, é basicamente isso Mas como não sabemos o tamanho da nossa string atual ou da string que queremos reverter, não especificamos qual é o final e o início ou apenas dizemos que queremos ir do final até o início. E então retornamos a string invertida. Com isso esclarecido, quero mostrar a vocês uma coisa que podemos fazer aqui para tornar isso mais eficiente. Em vez de definir a string para reverter com sua fatia em uma variável, o que posso fazer é comentar isso Lembre-se de que posso comentar uma linha com a barra frontal do controle Acho que já mencionei isso antes, mas não se preocupe. E eu posso simplesmente retornar a string invertida diretamente. Isso não muda nada. A função funcionará da mesma forma que antes, mas com certeza fornecerá uma função mais fácil de ler e mais eficiente. Agora que temos isso, vamos criar uma palavra, que será igual a uma entrada. Essa entrada vai nos dizer. Por favor, insira uma palavra que você gostaria de reverter. A palavra que gostaríamos de reverter será adicionada e, finalmente, imprimiremos sua palavra era campo de substituição de dois pontos com a palavra quando invertida, é campo de substituição de dois pontos. O reversor fornecido com a palavra. Lá vamos nós. Obviamente, devemos adicionar um espaço extra. Se escrevermos, clique e executemos, digite a palavra que você gostaria de reverter. Eu gostaria de reverter. Lá vamos nós. Parece que não funciona porque, olha, sua palavra era rotador e, quando invertida, é Bem, na verdade eu cometi um erro, mas eu deliberadamente escolhi uma palavra que na verdade é a mesma, indo para frente e para trás. Uma pequena piada aqui. Não se preocupe. É 1º de abril. Estou brincando quando estou gravando isso. Então, vamos tentar qualquer outra palavra. Vamos Michael, lá vamos nós. Veja o que recebemos. R: Eu não sei. Então, como você pode ver, a palavra inverter ou funciona corretamente, o único problema é se eu tentar inserir a seguinte palavra rotador Mas com um R maiúsculo, você verá que eu obtenho um R maiúsculo no final, que realmente não faz sentido. Simplesmente não parece bom. Para corrigir isso, lançarei um desafio, que será cuidar do seu caso. Inverta a palavra sem precisar se preocupar com o significado das maiúsculas Certifique-se de que o valor retornado seja independente das maiúsculas e minúsculas dos caracteres. Passe o vídeo agora mesmo e vá fazer o desafio. Bem-vindos de volta, meus colegas desenvolvedores de jogos. Então, como você enfrentou esse desafio? Esse é um desafio muito importante porque alguns de vocês podem ter feito o seguinte. Você pode ter usado a dobra de maiúsculas e minúsculas nessa situação para poder abaixar as maiúsculas diretamente na entrada, o que funcionaria. Você pode ter usado a dobra aqui, que teria pegado a palavra invertida e abaixado a caixa, o que também seria Mas o melhor lugar para dobrar o estojo é se você não o tiver colocado no lugar correto. Obrigado um pouco, na verdade está aqui. O que queremos fazer é inverter palavra e depois aplicar a dobra de maiúsculas e minúsculas a ela. Agora você pode estar se perguntando: por que não é bom aqui? Por que não é bom aqui? Bem, porque mais tarde poderemos usar o reverser novamente. Você acha que devemos aplicar a dobra da caixa novamente quando estivermos imprimindo a palavra invertida Quero dizer, nós podemos, mas e se estivermos chamando o inversor 1.000 vezes Bem, agora teremos que nos certificar de digitar “ case fold” todas as vezes. E essas 100 vezes, 100 ou 1.000 vezes, é aqui que o poder das funções entra em ação. Isso é o que queremos dizer quando falamos reutilização e Em vez de precisar dobrar a caixa toda vez que tentar imprimir uma palavra invertida, agora você pode simplesmente usá-la uma vez dentro da função e ela sempre funcionará Vou copiar o rotador, executar e colar o rotador Pressione Enter e veja isso. Rotator é impresso com a letra minúscula R. Agora vamos nos certificar de que funciona também para Michael, por exemplo. Lá vamos nós. Você pode ver que não há um M grande, o que faz sentido. Então eu espero que você tenha gostado. A parte mais importante de todo esse vídeo é que você entenda a importância de usar uma função e como é fácil modificar o código que você pode usar repetidamente em todo o programa. Espero que você goste. Nos vemos no próximo vídeo, onde aprenderemos sobre funções. Chamando funções, você pode chamá-las de início de funções, se quiser Tudo bem, vou parar aqui e te vejo em alguns segundos. 77. 4. Funções que chamam funções: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo Neste vídeo, veremos como as funções podem chamar outras funções. Vamos continuar e começar. A primeira coisa que vamos fazer é entrar em um arquivo, um novo arquivo. Vou chamar isso de sublinhado chamando funções aqui. Eu vou definir multiplicar. A multiplicação será entre x e y, e simplesmente retornará x vezes y. Muito simples Não há nada demais aqui. Agora, a outra função que vou criar será define get underscore power Sublinhe dois. Também teremos x e y. Lembre-se de que esses dois, x e y, são independentes um do outro. O get power é o melhor exemplo de uma função sendo chamada dentro de outra função. Porque quando você tenta obter a potência dois de algo, você a multiplica por si mesma no momento em que a forneceu Isso saiu completamente errado. Digamos que você tenha dois elevado a três. Você multiplicaria dois por dois por dois. Normalmente, o símbolo do poder dois seria isso significa que é igual a, na verdade, deixe-me comentar isso. São dois multiplicados por dois multiplicados por dois. O que está acontecendo aqui? A função de multiplicação está sendo chamada três vezes. Primeiro de tudo, foram dois multiplicados por um. Para tornar mais óbvio como isso vai funcionar, um multiplicado por dois, depois dois multiplicado por dois, depois dois multiplicado ou a resposta inteira multiplicada a resposta inteira Novamente, o get power é um exemplo muito importante ou muito bom de usar uma função ou chamar uma função dentro de outra função. A primeira coisa que vamos fazer é criar o resultado que é igual a um. Isso é só para configurar as coisas. Então eu vou dizer quatro no intervalo, e o intervalo vai ser y, então vai ser x elevado a y. Vamos multiplicar x pelos resultados que estamos obtendo, y vezes quatro no intervalo y. O resultado é igual a multiplicar o resultado x. Vou imprimir o Isso é puramente para fins de depuração, propósitos esses, sim Finalmente, fora do loop for, retornarei o resultado. Agora, aqui, depois de duas linhas de código, vou imprimir o seguinte. Eu direi que cinco elevado à potência três é o campo de substituição e, em seguida, obtenho a potência 53. Se eu escrever Click e correr, lá vamos nós. Cinco mais três é 125. E isso é verdade porque cinco vezes três é 25. Depois multiplicado por três novamente, multiplicado por cinco novamente, eu quase o perdi. Há 125. Quero que você analise isso de perto, obtenha poder e realmente entenda como está funcionando. Basicamente, o que estamos fazendo, como dissemos, se colocarmos de volta nosso exemplo de cinco potência 35 elevado à potência três é igual a um vezes cinco vezes cinco vezes cinco. O resultado é um. Pegamos um, multiplicamos por cinco Dizemos que o resultado agora é igual a multiplicar o resultado é um eixo cinco Vamos para a multiplicação, é aqui que chamamos a função multiplicadora De outra função, obtemos cinco. Agora, o resultado é igual a cinco. Voltamos ao loop, verificamos se é menor que y, que é três. Y é três. E lembre-se de que o alcance é máximo, mas não incluído. Começamos em I é igual a zero. Em I é igual a um, não, ainda é menor que y. Temos o resultado igual a cinco Dizemos que esse resultado, o novo é igual a multiplicar o resultado que é cinco elevado à potência três, à potência cinco. Agora temos isso. Nós o colocamos de volta no resultado, agora o resultado é 25. Agora voltamos e fazemos a mesma coisa e temos uma função chamando outra função. É bem simples. Não há nada demais aqui. Você pode estar pensando: como isso é simples? Eu não entendi nada. Depois de entender isso por meio do próximo desafio, você dirá a si mesmo: uau, isso foi realmente fácil Porque seu desafio será usar o depurador e entender Use o depurador para examinar o código e ver como a lógica Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Bem simples. Não há nada demais aqui. Vou adicionar um ponto de interrupção aqui, exatamente na impressão. E eu vou depurar o código. E vamos ver como tudo está funcionando aqui. Eu vou entrar, lá vamos nós, vamos até o topo. Como você pode ver, x é igual a cinco, y é igual a três. Entramos novamente, o resultado é um para I no intervalo igual a zero. Veja o que vai acontecer quando executarmos a seguinte linha. Vou pular para a multiplicação e ver o que temos aqui Retorne x multiplicado por y, algo que talvez não tenhamos visto antes ou que você talvez não tenha percebido quando está depurando seu código ao trabalhar com uma função, é que não desligamos a função, entramos nela imediatamente Algo que pode ser óbvio para você, mas algo muito importante de perceber. Assim como quando pulamos o ls, não executamos o ls, entramos nele e executamos o código que está dentro, retornamos x vezes y. Note que quando voltamos, não voltamos uma linha para a frente Não voltamos à impressão, permanecemos no resultado. E isso é algo que você provavelmente já viu como depurando seu código no pecado anterior ou em dois vídeos anteriores Y é igual a três, x é igual a cinco. Agora temos o resultado igual a cinco que imprimimos na depuração Agora y é um, o resultado é cinco ou o resultado é igual à multiplicação Agora, como temos o resultado? Boom, lá vamos nós. Isso é cinco multiplicado por cinco Nós voltamos, são 25. Agora, quando voltamos ao topo, vamos lá, x é 25 multiplicado por cinco é o retorno de 125 Imprimimos o resultado e voltamos. Aumentamos I. Vemos que não é mais exatamente menor que Y ou menor que o intervalo e o imprimimos. Espero que tenham gostado. Se você ainda não tiver certeza do que está acontecendo, volte ao debuckt de código novamente entenda tudo o que está acontecendo E nos vemos no próximo vídeo, onde analisaremos mais detalhadamente os valores retornados. Então, eu vou te ver em alguns segundos. 78. 5. Retornando valores: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente Neste vídeo, estamos voltando no tempo. Vamos voltar no tempo para o seguinte programa, o antigo Nicholas Flamel O problema com isso é que, se usarmos uma string aqui, obteremos um erro. Não acredite em mim. Se eu escrever click e executar o que é flames H, eu poderia digitar um número que eu já conheço Mas se eu digitar, por exemplo, alto e pressionar Enter, veja isso, recebo um erro. O que é esse erro? Bem, o problema é que estamos tentando converter o que quer que seja a entrada em um número inteiro Mas se você fornecer uma string, como você pode ver, você receberá um erro. Porque como você converte alto em um número inteiro não faz nenhum sentido Neste vídeo, aprenderemos como podemos criar uma função que pode nos ajudar muito porque vamos criar um novo arquivo Python Esse novo arquivo Python será chamado, como vamos chamá-lo, vamos chamá-lo, Sublinhe flamel. Função de sublinhado. Ou por que estou chamando isso apenas de função de sublinhado aqui A primeira coisa que eu quero fazer é definir uma nova função. Vou definir o número inteiro get underscore. Esse número inteiro garantirá que o que o usuário está fornecendo seja de fato um número Aqui, vou adicionar um argumento, que será o prompt. O prompt, O prompt é o seguinte, aqui. Quando você diz, digamos que aqui, eu quero receber uma opinião. Me dê um gás, por exemplo. Isso é chamado de prompt. Estamos fornecendo o número inteiro get com um prompt. Você deve me responder quando terminarmos. Por que estamos fornecendo a solicitação para obter um número inteiro? Em seguida, temos um tempo verdadeiro Vamos continuar com isso por um tempo. Teremos o Tamp, que é um prompt de entrada do Tamp variável temporária Teremos a entrada com o prompt dentro dela e verificaremos se o ponto do carimbo é numérico Você se lembra dessa função? Função muito, muito antiga. Eu te disse que vamos voltar no tempo neste vídeo. Volte e depois tempere. Veja isso e me diga o que está acontecendo nessa função. Não tenha pressa. Agora, a única coisa que pode ser estranha nisso é que não há nenhuma invasão aqui Isso é uma verdade selvagem, vai continuar para sempre. O que vai fazer esse ciclo selvagem parar? Bem, será o retorno, porque lembre-se de que quando retornamos uma variável, pulamos para fora da função, o que significa que efetivamente saltaremos do nosso circuito de arame. Portanto, essa é uma ótima maneira de evitar o uso do freio. Podemos simplesmente usar a devolução. Agora que descobrimos isso, vou pegar esse código e espero que você possa encontrá-lo em algum lugar do seu projeto. Sinceramente, não consigo dizer em qual seção ela estava no momento Você terá que fazer o possível para encontrá-lo. Peço desculpas. estar em algum lugar aqui no projeto. Acesse o arquivo aberto recentemente e encontre o projeto que você está procurando. O que eu vou fazer é copiar tudo isso aqui. Mas, para ser justo, realmente precisamos de tudo isso? Sim, nós temos. Vamos. Não se preocupe. Então, vou adicionar tudo isso aqui. A importação, o que é, nivela Importação na parte superior do arquivo. Tudo bem, então vamos lá. importação deve estar na parte superior e, em seguida, ter dois espaços e, em seguida, ter apenas dois espaços. Ok, oito. Eu te dei qualquer coisa. Eu me submeti às suas vontades para todas as suas necessidades. Eu estou com 101 anos de idade real, e a melhor suposição, nenhuma. OK. Tudo deveria ser verdade, exceto isso aqui, onde dizemos que a suposição não é mais igual à entrada será igual para obter um número inteiro O aviso deve ser exatamente o seguinte, porque lembre-se de que estamos imprimindo o que é a idade de Flamel, Sr. Weasley, aqui Sr. Weasley Agora poderíamos fazer isso aqui dentro, mas eu só quero manter o código como está para que possamos fazer as pequenas alterações necessárias. Se eu escrever, clique e eu corro. Deixe-me esconder isso aqui. Qual é a idade de Flam Mel? Se eu digitar, digamos 20, ele me diz: por favor, adivinhe mais alto se eu digitar Olha só, não há erro, mas não funciona. Michael Python. Posso jogar, por favor? Não. Ele aguardará outro número que é 53. Acho que é 53. Como você pode ver agora, temos um programa em funcionamento, ou pelo menos temos um programa livre de erros. A pergunta que eu te fiz, por que temos um aviso aqui? Bem, por causa da última lição, você já deve saber que vamos usar o número inteiro get em vários lugares, não apenas nessa situação aqui, porque vamos usá-lo em muitos lugares Teremos instruções diferentes. Digamos, por exemplo, que a usamos aqui apenas para essa barra frontal Mas e se mudarmos de ideia e agora quisermos imprimir isso lá dentro. Isso muda tudo completamente, certo? Mas e se usarmos o número inteiro get em outro lugar? Fornecer o número inteiro get com um prompt é uma boa ideia porque agora podemos usá-lo dinamicamente sempre que quisermos em nosso código Antes de partirmos, há mais uma coisa que precisamos fazer aqui, ou pelo menos você precisa fazer aqui. E isso é dizer ao usuário, porque você precisará adicionar uma mensagem à função informando ao usuário que a entrada é inválida e o que ele deveria fazer, ele ou ela a testará e verifique se ela funciona corretamente Basicamente, como você notou quando tentamos adicionar Oi ou Michael ou posso jogar, o usuário simplesmente não sabe por que o jogo continua expulsando ele Ajude o usuário. Esse desafio é muito importante para saber onde você deve adicionar isso em seu código, passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta aqui. Se tivermos o abaixo dos Ls, vamos imprimir. Insira um valor. Lá vamos nós. Qual é o problema com esses dois pontos esperados. Eu realmente esqueci um cólon aqui? Quando escrevo, clico e corro, qual é a idade? É Michael. Insira um valor numérico, Olá. Tudo bem, vamos lá. Então, meu jogo funciona. Muito obrigado por assistir. Espero que tenham gostado do vídeo. Espero que você tenha entendido a importância de usar o prompt aqui e esteja começando a realmente sentir importância das funções para nós. No próximo vídeo, veremos como não devolver nada ou não devolver nada. Muito obrigado por assistir. Nos vemos em alguns segundos. 79. 6. Retornando None: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos aprender o que é que não retorna nada. Todas as funções que vimos até agora sempre retornaram um valor. Como aqui temos um retorno, aqui temos um retorno como a palavra reversão. Estamos sempre devolvendo alguma coisa. Mas o que aconteceria se não o fizéssemos ? Isso realmente nos ajudaria em alguma coisa? Vamos criar um novo arquivo Python aqui e chamá-lo de não Retornando funções de sublinhado. A propósito, você pode chamar esses arquivos Python que quiser, desde estejam de acordo com o que vai acontecer dentro deles Vamos definir novamente a multiplicação. O multiplicador terá x e y. O multiplicador obterá x vezes y. E, na verdade, vamos virar o x vezes y. Pronto. O multiplicador obterá x vezes y. E, na verdade, vamos virar o x vezes y. Pronto. Tudo está bem aqui. A vida é incrível. E vou simplesmente imprimir, ou primeiro, vou dizer que a resposta é igual a multiplicar quatro E então vou imprimir a resposta: A vida é boa, tudo está bem. Quando eu corro, lá vamos nós, temos 64. Espero que essa seja a resposta. Agora, o que aconteceria se eu decidisse comentar isso? Bem, primeiro de tudo, vou ter um erro porque você não pode simplesmente deixar uma função vazia. Temos que fornecer algo a ele. Então eu vou dizer que o resultado é igual a x vezes y. Ok, vamos lá. Agora, sem mais problemas. O que temos aqui? Multiplicar não retorna nada. Ah, hein? A multiplicação não retorna nada. Definindo isso, nada que está sendo retornado para uma variável não é muito inteligente, não é? Precisamos descobrir uma maneira tornar isso um pouco melhor. Como? Bem, qual seria a utilidade de uma função que não retorna nada? Em primeiro lugar, provavelmente não gostaríamos de definir nenhuma variável para ela. Em segundo lugar, provavelmente vou remover a impressão aqui. Mas o que faríamos nessa situação? Para que serve a multiplicação? Bem, vou lhe dizer que a multiplicação nessa situação não é completamente inútil porque você pode usá-la para realizar determinadas ações como aprender que esse desafio pode transitar, sei lá, sem resultado. Ainda consigo alguma coisa. Como não estamos devolvendo nada, ainda precisamos exibir algo. O que significa o que devemos fazer? Devo te dar uma dica? Se você não quer a dica e quer tentar resolver isso sozinho, é um desafio um pouco estranho, mas você pode resolver isso sozinho Basta imprimir algo diretamente na função, e é basicamente isso. Se a função não retornar, queremos imprimir algo dessa função, pausar o vídeo agora e fazer o. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Eu acho que isso é muito simples. Posso simplesmente dizer que o resultado da multiplicação é o resultado do campo de substituição E é isso. Agora, quando a multiplicação for chamada, ela multiplicará esses dois números e imprimirá o resultado diretamente Portanto, não devolver nada tem sua utilidade em algum momento. Espero que tenham gostado, este foi um vídeo muito curto. Na próxima, vamos lidar com argumentos inválidos. Quer dizer, e se eu fornecer alto, alto, alto, teoricamente Posso correr bem neste caso, aí está. Veja o que temos. Mas o que aconteceria se não quiséssemos obter isso se não quiséssemos uma string? Veremos isso no próximo vídeo. Nos vemos em alguns segundos. 80. 7. Como lidar com argumentos inválidos: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, veremos como lidar com argumentos inválidos Eu já falei sobre o que acontece se fornecermos uma string para isso. Recebemos uma saída inesperada. Mas isso não é tão ruim quanto se tivéssemos o seguinte. Se eu fornecesse isso, se eu fornecesse duas cordas. Agora, quando escrevo clicando em veja isso, recebo um erro. Isso não é nada bom. Não queremos que algo assim aconteça. Vamos ver como isso pode ser corrigido. A primeira coisa que quero fazer é descomentar o retorno de x e y e comentar a impressão Então aqui eu vou imprimir, me dar ou nos dar dois números para multiplicar Aqui, vou dizer que a é igual a uma entrada e, em seguida, dois pontos e B também é uma entrada Antes de continuar, vou transformá-los em números inteiros. Agora eu sei que aprendemos que essa não é a melhor maneira porque o usuário ainda pode fornecer uma string. Mas, para os propósitos deste vídeo, vamos supor que o usuário sabe que deveria fornecer um número numérico Então, agora, em vez de número, se tentarmos uma string, obteremos um erro. Obviamente, isso se deve ao número inteiro que estamos fornecendo Mas e se quiséssemos criar nosso próprio tipo de erro? Por exemplo, digamos que só podemos multiplicar tudo. Ou podemos multiplicar somente se x for menor que dez. Digamos que é isso que queremos do nosso programa ou da nossa função. Isso é exatamente o que você fará no desafio de criar seu próprio erro de tipo. Na função de multiplicação. Função de multiplicação, certifique-se de que os números atendam a uma determinada condição. Os exemplos x ou y são maiores que 100. Use o erro de aumento do valor, se estiverem. Caso contrário, calcule o resultado e devolva-o. Pesquise no Google e entenda como realmente usá-lo para que você possa digitar o erro de valor W em três escolas para realmente ver como você pode usar o erro de aumento de valor. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Digamos que queremos multiplicar apenas x e y se eles forem menores que 100 O que vou fazer, e espero que você tenha pesquisado o erro de aumento de valor aqui, vou dizer que se x for maior que 100 ou y for maior que 100, vou aumentar o erro de valor e vou dizer um ou ambos os números. Vamos fazer disso um erro legítimo. Os números um ou os dois são maiores que o tamanho máximo 100. E aí está, é disso que precisamos. E, finalmente , aqui teremos um L e vamos marcar tudo. Então, agora temos nosso próprio erro. Senhoras e senhores, se eu clicar com o botão direito e correr e fornecer 506, não recebo nada por algum motivo Qual é o problema aqui? Ah, hein. Bem, o problema aqui, senhoras e senhores, é que minha cabeça cansada esqueceu de multiplicar um B. Muito bom trabalho. Trabalho muito excelente. Mais uma vez, tentamos correr. Fornecemos 506 e pronto, um ou ambos os números são maiores que o tamanho máximo. Se eu escrevo, clique e corro e tento 6.10, lá vamos nós, obtemos 60 Se eu tentar, por exemplo, 103 ou não, vamos tentar 10.110 ou 1010 Pronto, um desses ou ambos têm um erro. 200, 500, também recebemos um erro. Então, como você pode ver, temos uma maneira de lidar com argumentos inválidos Eu também vou te mostrar o seguinte link. Então você deve abri-lo. Você deveria ter acesso a ele em algum lugar de alguma forma. É chamado de exceções integradas. Você pode passar por eles para entender claramente todas as exceções que podemos criar Por exemplo, os básicos ou os Args. Há exceções. Exceções. Analisaremos mais detalhadamente as exceções quando chegarmos à parte do SQL No momento, você só precisa saber o nível da superfície. Deixe-me tentar procurar um erro de valor, vamos ver se consigo encontrá-lo. Resumo sem erros. Lá vamos nós. Temos erro de tipo, temos erro de valor aqui. Lá vamos nós. Exceção gerada quando uma operação ou função recebe um argumento que tem o tipo certo, mas um valor inadequado Lá vamos nós. X e y são números inteiros Isso é bom, mas eles têm um valor inadequado. Espero que você goste. Espero que você tenha entendido que este é o link. Se você quiser acessá-lo ou pode pesquisar a documentação embutida, exceto em Python E nos vemos no próximo vídeo, onde falaremos sobre os parâmetros padrão. E se alguém não fornecer nenhum parâmetro? O que faríamos? Veremos no próximo vídeo. Te vejo em breve. 81. 8. Valores de parâmetro padrão: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, vamos explorar os valores padrão dos parâmetros. Vamos começar. Em primeiro lugar, por que precisaríamos de um argumento padrão? É um argumento que assume um valor padrão. Se um valor não for fornecido na função que requer um argumento real. Por exemplo, aqui com a multiplicação x e y, como você pode ver, precisamos de dois argumentos aqui, o x, y, digamos que não forneçamos isso Digamos que apenas avisamos que recebemos um erro se eu passar o mouse sobre o pequeno destaque aqui Bem, não é um erro, mas apenas um grande sinal de alerta. Aqui, você pode ver o desempenho de Cod Inan Um aviso fraco encontrado e , em seguida, um aviso enorme encontrado quando eu passo o mouse sobre ele Parâmetro não preenchido. Se eu clicar com o botão direito e correr aqui. Se eu digitar 42, 40 haviam entrado. Lá vamos nós. Recebemos um erro porque faltou um argumento posicional obrigatório y. O problema com isso é que exigimos o y e acabamos de fornecer o x. Nessa situação, ele usou o x como primeiro argumento Como podemos evitar esse problema? Como podemos evitar erros como esses? Bem, nós fornecemos argumentos padrão. Por exemplo, digamos que aqui temos x e y. Em algumas situações em que y não é fornecido, posso dizer que y é igual a um. E observe que aqui eu não adicionei espaços. Como você pode ver, novamente, seguimos as regras P oito. Diz 251 espaços inesperados ao redor do parâmetro da palavra-chave, qualquer que seja Eles são chamados de parâmetros de palavras-chave. Nós os examinaremos mais detalhadamente mais tarde. Mas, por enquanto, como você pode ver, y é igual a um, não temos nenhum erro aqui Agora, se eu fornecer 42,10, a resposta é dez. Por que isso? Bem, porque fornecemos corretamente apenas B. Não fornecemos mais nada, o que significa que está definido como X. Há uma ordem para isso, como você pode ver, porque Y não foi fornecido Definimos Y como um e apenas multiplicamos por um. Podemos mudar isso para dois apenas para que você possa ter certeza de que está realmente funcionando. 40 12, boom, lá vamos nós. 24 12 foi multiplicado por dois. Também podemos apresentar valores padrão para o x. Aqui eu posso dizer que x é igual a três. Agora, quando eu escrevo, clique e corro, oh, espere, aqui agora eu não posso fornecer absolutamente nada. Agora, quando escrevo, clique e corro, posso digitar o que quiser, 42 e depois 50. E a resposta será apenas seis porque simplesmente multiplicamos três por dois O que quer que você digite aqui, seja qual for o número, eu posso digitar, claro que não esse tipo de número como este. Boom, lá vamos nós. A resposta sempre será seis. Então, como você pode ver, ter argumentos padrão é muito importante. Posteriormente, sempre teremos argumentos padrão porque queremos evitar esses tipos de erros. Mas antes de prosseguirmos, há uma pequena coisa que precisamos aprender. E observe que quando passamos o mouse sobre multiplicar, o que obtemos aqui é chamado de string doc E aprenderemos mais sobre as sequências de caracteres de documentos posteriormente. Como podemos mostrar nossas próprias coisas aqui. O funcionário é igual a três é igual a qualquer coisa . Mais uma coisa aqui. E se, por algum motivo, eu quisesse que x fosse definido como o valor padrão? Ou fazer com que x use o valor padrão. Por exemplo, se eu fornecer a, quero que a ou Y sejam definidos como a. Como eu faria isso? Bem, isso vai ser um pouco desafiador para você. Defina somente o y atualmente. Quando fornecemos apenas um argumento, ele está sendo definido como x e y está usando o valor padrão. Encontre uma maneira de garantir que ao fornecermos um argumento, y seja aquele que está sendo definido e x seja aquele que usa o padrão. Eu recomendo que você pesquise, tente encontrar essa resposta sozinho. Mas se você não fizer isso, você pode fazer com que essa dica em 321 especifique qual argumento você está definindo ao chamar a função, digamos que y seja igual ao que você deseja definir, o valor que Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Espero que você tenha feito o desafio aqui. Vamos ver, multiplique a. Se eu clicar com o botão direito do mouse e executar o problema aqui, sempre consideraremos que x é igual a a. Então, sempre multiplicaremos a aqui por dois Como você pode ver, obtemos 84. E se eu quisesse multiplicar um por três? Ou seja, eu queria que y fosse definido como a. Eu poderia simplesmente dizer que y é igual a a. E aí Como você pode ver, o parâmetro y será definido como a. Agora, qualquer que seja a, ele será multiplicado por três porque x não é fornecido, eu multiplicarei 30 por 310 Boom, aí está, temos 90. Podemos especificar de qual argumento definiremos o valor. Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, criaremos uma função Fibonacci, que é muito interessante Também aprenderemos sobre os números de Fibonacci. Eu recomendo que você os procure. Muito obrigado por assistir, e nos vemos em alguns segundos. 82. 9. Escrevendo uma função de Fibonacci: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos escrever uma função de Fibonacci Antes de realmente começarmos a escrever nossa função de Fibonacci, precisamos entender o que é uma função de Fibonacci Vou seguir o seguinte link, H. Interessante escolha de palavras. A propósito, você pode simplesmente digitar a sequência de Fibonacci no Google e procurar Essa é uma sequência matemática muito popular na maioria dos campos matemáticos. Ou você verá a sequência em quase todos os lugares, talvez já a tenha visto antes desta forma. A espiral que você vê é onde todo mundo no Instagram finge, uau, olha Oh meu Deus, segue a espiral. Sim, essa é realmente a sequência de Fibonacci Nerdy. A sequência de Fibonacci é realmente muito fácil. Basicamente, o objetivo é somar dois números e , em seguida, defini-lo como o terceiro número e seguir em frente Por exemplo, começamos com 0,1. Esses são dois números arbitrários Começamos com 01, e então temos zero mais um igual a 11, mais um é igual a 22, mais um é igual a 33, mais dois é igual a 55 mais 38851313 a 55 mais A 2.12,13 34,1 e assim por diante. Sequência muito simples. Mais uma vez, recomendo que você encontre matemática em fun.com Sequência de números de Fibonacci. Você pode seguir este link. Vou disponibilizá-lo em algum lugar, mas também me certificarei de que você mesmo faça algumas pesquisas. Você entende o que está acontecendo. Agora você pode ver aqui, temos as regras ou a equação que essa sequência de Fibonacci segue É muito importante que você também passe por isso. Você verifica o que está acontecendo e como isso funciona. Por exemplo, aqui, digamos que queremos obter x em n. Digamos que queremos obter o número ou o número de Fibonacci E nossa função será uma função em que apresentamos o n, digamos que queremos o número em 11. Apresentamos 11, a função retornará 89. Como isso funciona? a regra é, digamos, por exemplo, você quer que x8xn seja igual a x menos um, sete mais x N menos dois, Aqui, a regra é, digamos, por exemplo, que você quer que x8xn seja igual a x menos um, x sete mais x N menos dois, que é x seis. E essa é a regra que nossa função seguirá. Vamos ter um pequeno laço de quatro voltas no interior. E vamos substituir as coisas porque veja o que acontece. Primeiro de tudo, começamos com 0,1 e depois temos o resultado, que é um. Mas então temos uma mudança aqui, que significa que n menos dois aqui, n menos dois se torna n menos um. Os valores estão mudando, e assim por diante. Então é isso que vamos tentar implementar em nosso programa. Depois de criarmos o programa, terei um slide onde explicaremos isso mais detalhadamente e veremos como ele funciona corretamente sem mais delongas. Vamos voltar para a Intellig. Vou criar um novo arquivo Python que chamarei de fibo Naci Vamos apenas contar Fibonacci. Fibonacci tem dois C's, é isso que se pronuncia ela Eu não sou italiano, mas é assim que eu acho que eles chamariam isso aqui. Eu vou definir o fibo naci. Fibonacci concluirá que, no final, queremos produzir o número no qual queremos produzir o número de Em primeiro lugar, precisamos ter certeza de que, se o final que o usuário está tentando nos fornecer for um ou zero, queremos apenas retornar o n, porque aqui, veja que n é igual a zero, temos Em n é igual a um, temos um. Somente quando chegamos a n igual a dois, obtemos um. Se o usuário inserir um ou zero, simplesmente voltaremos a tornar nossa vida muito mais simples Temos zero menor ou igual a n menor ou igual a um. Isso basicamente garante que n esteja em 0-1 Lembre-se de que o usuário não inserirá nenhum O que significa que é como dizer se n é igual a zero ou n igual a um. Mas é mais fácil escrever assim. Vamos voltar e agora precisamos ter mais um aqui também. Com isso resolvido, agora precisamos começar a criar o n menos um e o N menos dois Eu vou dizer que temos o sublinhado menos um. Sublinhado menos dois igual a 10. Estamos empacotando maçã aqui. Se você não tem certeza do que estamos fazendo, temos o par 1.0 e descompactamos em n menos um e n menos Agora vamos criar um loop de quatro. Quatro no alcance, e o alcance será N menos um. Eu vou te dizer do que se trata esse intervalo Você tentará descobrir sozinho. Depois de escrevermos o bloco de cobiças dentro desses quatro loops, direi que o resultado é igual a n menos um ou N menos dois, para ser mais preciso, mais n Então eu direi que n menos dois é igual a n menos um. N menos um é igual ao resultado. Por fim, retornamos o resultado obtido após o término. Vamos testá-lo, ter certeza de que realmente funciona. E então explicaremos o código aqui. Vou imprimir Fibonacci em, digamos, sete Como você pode ver, o resultado tem um pequeno aviso. Glo pode ser referenciado antes da tarefa, ok, então só se preocupa que não entremos no primeiro circuito ou possamos simplesmente voltar e aqui, não se preocupe Acredito que isso não causará nenhum erro às sete. Clique com o botão direito do mouse e execute a saída é 13. Vamos verificar esse número às sete. Sim, temos 13. Vamos tentar 13 de volta no código. Se eu tentar 13, clicar com o botão direito do mouse, executar, é 233, o que está correto O que está acontecendo em nossa codificação aqui? Em primeiro lugar, dissemos n menos um e n menos dois. Eles já estão estabelecidos. Quando digo n menos um, estou me referindo a esse número aqui em N menos um. Então, definimos como 0,1 N menos dois é zero. N menos um é um. Então, temos um intervalo de quatro, N menos um. Agora, por que temos esse alcance estranho? Bem, porque já fizemos os dois primeiros números, o que significa que não queremos examiná-los novamente. Queremos continuar a partir daí. Você pode estar pensando, bem, por que não está na faixa N menos dois Bem, porque, como sempre, depende, mas sem incluir o último número já foi retirado, o que significa que só precisamos ter um intervalo de N menos um E nem chegaremos a n menos um. Chegaremos a n menos dois. Precisamos de um intervalo de n menos um porque os dois primeiros números já foram tratados. Então, o que temos é que o resultado é igual a n menos dois mais n menos um Semelhante ao que temos aqui, apenas os números estão em uma ordem diferente, x n menos dois x N menos um e x n é o resultado E então o que temos é n menos dois é igual a n menos um E então n menos um é igual ao resultado. Porque lembre-se do que temos aqui. Digamos que estamos tentando obter três, correto? Temos n menos dois, que é um. Para ser mais preciso, temos aqui, temos um. N menos um é um. E o resultado é dois, porque temos um mais um. Agora, quando tentamos obter n quatro, o resultado deve ser três. O que temos é n menos dois se torna n menos um. E então n menos um se torna o resultado que confundimos anteriormente Eu sei, vamos passar para os slides. Como nossa função funciona? Vamos dar um exemplo e tentar calcular Fibonacci no Temos n menos dois é igual a zero e menos um é igual a um. Certo? É assim que começamos. Quero sua concentração total agora. O resultado é igual a n menos dois mais n menos um. Começamos, temos n menos 20 menos 11. Isso é em dois, porque lembre-se de que já lidamos com os dois primeiros, é por isso que lidamos com zero, lidamos com um onde f Então, aqui, n menos dois, N menos um, o que temos? Temos o resultado definido como N menos um e n menos dois sendo definido como n menos um. Continuamos a partir daí, temos um três, agora temos n menos dois como um, N menos um como um. O resultado é dois. Definimos n menos um como dois, N menos dois como um como n menos um, não apenas um como n menos um Continuamos a partir daí, agora temos o resultado igual a três. N menos um é definido como três, N menos dois é definido como dois, o que antes era n menos 10. Isso é quatro. Aos cinco, temos o resultado igual a cinco porque lembre-se de que tivemos 3,22 mais três é igual Novamente, n menos um é definido como resultado e menos dois é definido como n menos um, que é três. Nós fazemos o mesmo aqui. Agora temos 5,33 mais cinco é igual a oito, o resultado, n menos um é definido como o resultado e menos dois é definido como n menos Finalmente, ok, deveriam ter sido seis, peço desculpas por isso. Mas você entendeu. Temos 567 e obtemos o resultado que é 13. Está bem? Então eu sei que é um pouco confuso Eu recomendo que você passe por isso novamente. Eu até recomendo que você tente adicionar um ponto de interrupção aqui em algum lugar, talvez na impressão, analise lentamente, entenda como tudo está funcionando corretamente Com isso resolvido, vou te dar um pequeno desafio. Seu desafio será me trazer o Fibonacci. Você precisa imprimir os primeiros 36 números de Use apenas duas linhas de código. Se você quiser obter uma dica, pode esperar pela dica Ou, se quiser, você pode passar o vídeo agora mesmo e ir para o desafio. Use quatro loops em um intervalo e chame a função com o parâmetro. Basta criar quatro loops no corpo do nosso código. Ou seja, fora da nossa função, esses quatro loops devem ultrapassar um intervalo de 36. Em cada iteração, você deve imprimir o índice em que está atualmente e usar o Fibonacci com o índice que Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, vou apenas adicionar uma impressão, e direi quatro no intervalo, e o intervalo é 36. Então eu vou imprimir um Fibonacci I. É isso, porque lembre-se nossa função, basicamente o que ela faz, você envia, ela te dá o número que você envia, ela te dá um O que estamos fazendo aqui é enviar todos os números de zero a 25. Porque lembre-se de que 26 não está incluído. Clique com o botão direito do mouse e execute, e essa é a saída que obtemos. Deixe-me encaixá-lo à direita. Então 0, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 5, 6, 8. Esses números estão corretos? Deixe-me verificar novamente. 55. Sim, é. Oito até ver isso. Aos 35 anos, temos 9.227.465. Portanto, não é fácil fazer isso na primeira tentativa Se você entendeu, parabéns, isso é ótimo. Adoro que você ainda não tenha feito isso. Novamente, recomendo que você analise atentamente a função que temos aqui. Veja atentamente como nossa função funciona. Eu recomendo que você volte ao vídeo e assista novamente cada etapa e como ela está acontecendo. Acho que a explicação é bem clara, exceto por esse erro que cometi aqui. E você também pode usar o depurador. Isso é como uma lição de casa para você. Use o depurador, assista novamente ao vídeo, entenda como a função Fibonacci funciona, porque uma vez que você entenda como isso funciona, você tem um nível intermediário positivo quando se você tem um nível intermediário Ok. Além disso, certifique-se entender o que é o alcance aqui. Muito obrigado por assistir. Espero que tenham gostado. E no próximo vídeo, veremos anotações de funções e dicas de tipo Porque atualmente, por exemplo, o usuário pode, não sei, nos fornecer 13,5 O que receberíamos? Nós simplesmente receberíamos um erro porque, enquanto objeto flutuasse, o objeto não pode ser interpretado como um número inteiro Veremos como podemos fornecer uma dica para o usuário usar o número inteiro Não use um flutuador. Muito obrigado por assistir. Nos vemos no próximo vídeo. 83. 10. Anotações de função e dicas de tipografia: Bem-vindo de volta aos meus programadores de Python favoritos. Neste vídeo, veremos anotações de funções e dicas de tipo, um assunto muito mais fácil do que o Fibonacci E eu sei que, novamente, eu reitero isso se você ainda não tem certeza de como funciona, deixe um comentário ou deixe uma pergunta em qualquer lugar que você possa E vou tentar responder da melhor maneira possível. Então, com isso resolvido, vamos agora dar uma olhada na anotação E tyto para anotar significa indicar ao programador qual é o tipo de parâmetro necessário para essa função E também podemos dizer ao programador qual é o valor de retorno da função que estamos chamando Por exemplo, aqui, como mostrei quando usamos 13,5 e , em seguida, estamos usando a mesma coisa aqui no intervalo Isso apenas cria um erro, mas o usuário não tem ideia, por exemplo, do programador que está usando sua função Porque mais tarde você descobrirá que não é só você que está usando funções como o Fibonacci Você pode fornecer funções muito mais complicadas, obviamente, do que o Fibonacci para outros programadores usarem Assim como usamos, por exemplo, a impressão aqui. Não sabemos como a impressão é escrita, mas apenas a usamos. Talvez você tenha sua própria função mais tarde em uma empresa e depois tenha fornecido para um de seus colegas. Você precisa indicar ao usuário da sua função o que deve ser fornecido. Se você tem mais de Fibonacci aqui, você tem o fim que precisa fornecer Portanto, você pode ver que a documentação não está muito clara aqui sobre como usar o Fibonacci O que vou fazer é anotar para indicar que isso deve ser um E a maneira de fazer isso é adicionando uma coluna e digitando Agora, quando o usuário está digitando o Fibonacci, Você pode ver a indicação aqui se eu passar o mouse vazio e você pode ver que o n deve ser um Agora, às vezes, o IntellJ faz isso por padrão depois de você executar o programa várias vezes, ou se o IntellJ reconhecer o que está acontecendo dentro do código, ele vê o N sendo Ele sabe imediatamente que, de certa forma, pronto, isso precisa ser um, um número inteiro Mas, como você pode ver, podemos anotar assim. Também podemos indicar qual será o tipo de retorno se eu fizer o seguinte, bum, aí está . Também indica qual será o tipo de devolução. Como eu disse, isso já estava presente antes porque Intelligent reconheceu que o tipo de retorno será um número inteiro De qualquer forma, é simples para nós, mas podemos aplicá-la Talvez queiramos algum tipo diferente, quem sabe. Mas agora podemos saber que, quando estamos digitando o código, o usuário fica tipo, oh, ele precisa de um número inteiro Ok, eu não vou usar um carro alegórico e vou atacar apenas 14. Tudo bem. Clique em executar. Problema resolvido. Obviamente, isso não impede o usuário realmente digite em um float Ele pode fazer isso. Mas, como você pode ver, imediatamente eles recebem um aviso antes mesmo de correrem. Em vez disso, espera-se que o tipo inteiro tenha um ponto flutuante porque especificamos que queremos um inteiro e não um ponto Isso não impede que o usuário ou seu colega programador realmente ou seu colega programador usem um float em vez de um Mas pelo menos ele receberá um aviso e usará o flutuador por sua conta e risco Lá vamos nós. Muito simples, nada demais. Por exemplo, podemos ver qualquer função como essa. Se eu mantiver pressionado o controle e for imprimir, talvez não, esse não é um bom exemplo. Vamos ver se podemos encontrar alguma função, alguma função em que a usamos. Enquanto isso, vou pensar em uma função, recomendo que você verifique, talvez também não seja um bom exemplo O fim também não é um bom exemplo. Enquanto isso, tenho um desafio para você fazer anotações. Volte para a função de multiplicação em um de nossos vídeos anteriores, em um dos arquivos mais antigos, vá para a função de multiplicação e anote os dois argumentos e diga a eles que deveria ser Indique que a função também deve retornar um float. E agora tente anotar os argumentos e definir um valor padrão para eles também. que significa que você precisa anotar a função, definir a função ou definir os argumentos como falhos, mas, ao mesmo tempo, precisará definir um valor padrão para É um pequeno truque. Você pode pesquisar no Google se quiser. Não é tão difícil, mas é sobre o acordo. Você deve definir o valor padrão primeiro ou anotar o argumento Esse será o truque aqui. Pause o vídeo agora mesmo e vá fazer o desafio. Ei, bem-vindo de volta. Como você conseguiu lidar com isso? Eu realmente descobri como você pode fazer algo assim. Por exemplo, aqui, se você passar o mouse sobre a entrada e segurar o controle e depois Q, depois Q, espere, às vezes não está funcionando Eu passo o mouse sobre o controle, vamos lá. Portanto, ele fornece a definição aqui e, como você pode ver, tem a anotação de que retorna uma string Agora, parece que não consigo encontrá-la aqui. Não está feito. Eu não sei por quê. Posteriormente, há muitos exemplos disso. Encontraremos um em algum lugar abaixo da linha. Mas vamos voltar à nossa multiplicação aqui. Na multiplicação, na introdução às funções aqui, queremos indicar que isso deve ser float, float, x y float, e o tipo de retorno será float e o tipo de retorno Agora, aqui, a resposta é igual à multiplicação. Se eu estiver digitando a multiplicação, o que ela está esperando No entanto, por cima, lá vamos nós, uma bóia e uma bóia, ok Mesmo se eu digitar 2.6, por exemplo. Aqui, não há problema. Quando escrevo, clico e corro, olha só, tudo funciona bem. Recebemos um 12, mas é só flutuar. Lá vamos nós. Agora, o que teríamos que fazer para também definir um valor padrão? Agora, alguns de vocês podem ter tentado o seguinte, mas aqueles que realmente testaram coisas ou as encontraram na internet, aí está. Nós simplesmente dizemos que é assim que definimos os valores padrão. Agora eu simplesmente não posso fornecer nada, na verdade, porque eles deveriam ser carros alegóricos Teremos 0,0 0,0 para indicar que isso é um flutuador. Agora, se eu executar a multiplicação, devo obter uma resposta de dois É assim que você pode fazer anotações. E, ao mesmo tempo, acho melhor simplesmente removermos os espaços ou não gostar do espaço em branco que falta. Ok, desculpe. Peço desculpas. Lá vamos nós. Precisamos dos espaços. Então, senhoras e senhores, essa anotação é Eu recomendo que você sempre anote, mesmo que eu não tenha o hábito de fazer anotações, porque é um ótimo hábito ter na programação e seus colegas programadores vão Espero que tenham gostado. Nos vemos no próximo vídeo, onde estaremos imprimindo com estilo. Te vejo então. 84. 11. Impressão com estilo: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos imprimir com estilo. Então, vamos começar. Em primeiro lugar, vou te fornecer um link. Esse link é na verdade uma pesquisa do Google e essa pesquisa do Google é um código de cores NC, alguns chamados de NSI ou C. Você pode selecionar o que quiser aqui Se você acessar os códigos anti-escape no Github ou na Wikipedia, ou não sei, em qualquer lugar que quiser Você pode ver que temos certas sequências para cores específicas que podemos usar aqui Deixe-me rolar para baixo até encontrar, por exemplo, primeiro plano preto, cor 30, brilhante. Você pode ver aqui. É preciso um pouco de tempo para entender adequadamente como esses sinais de igualdade funcionam. Você também pode acessar a Wikipedia e ler tudo sobre como os códigos NC funcionam Mas, basicamente, o que vamos fazer é usá-los diretamente usando a montagem que encontrei aqui. Também podemos encontrar todas as cores do primeiro plano aqui, preto, branco e assim por diante e assim por diante em algum Eu vou te fornecer isso. Mas antes de tudo, precisamos criar um novo arquivo Python que chamaremos de impressão colorida de sublinhado Essas são as nossas cores. Boom, lá vamos nós. Você deve encontrá-lo em algum lugar abaixo. Em algum lugar ao redor. Basicamente, o que dissemos é que preto é igual a esse número, vermelho é igual a esse número e assim por diante. Também temos algo diferente das cores. Em primeiro lugar, podemos reiniciar. Podemos colocá-lo em negrito, podemos sublinhar e podemos reverter Como realmente os usamos? Bem, muito simplesmente, imprimimos em amarelo. E então eu posso dizer, oi, Drake, como você está vermelho? Clique e execute, e veja como isso é legal. Agora podemos realmente imprimir em amarelo. Isso é muito legal. Mas lembre-se de que isso é como mergulhar o lápis em uma cor específica Porque agora, se eu tentar imprimir, isso ainda está amarelo? Se eu tentar imprimir isso, você verá que ele permanece amarelo. Isso porque, como eu disse, é como mergulhar o pincel na cor e depois pintar sempre com a mesma cor Mas se quisermos parar com isso, o que podemos fazer? Bem, podemos usar o Reset, por exemplo, aqui eu posso dizer reset on boom, aí está. É simplesmente reiniciado. Ou melhor ainda, você pode usar o Reset imediatamente aqui. Estrondo. Olha isso. E agora ele apenas faz a seguinte linha em amarelo e redefine todo o resto. Vamos tentar algumas outras coisas. Também podemos empilhá-los uns sobre os outros. Por exemplo, aqui eu posso adicionar negrito. Agora, quando escrevo Click e corro, é amarelo e é careca Se eu duplicar, ainda estamos bem? Aqui eu também vou sublinhar, veja isso agora, careca, sublinhada Finalmente, também posso imprimir ao contrário. Isso está saindo do manual. Olha isso. É invertido, amarelo forte e sublinhado. Eu posso, por exemplo, mudar a cor para que eu possa alterá-la novamente. Talvez possa. Ok, vamos lá. Usamos uma aspa simples. Vamos transformá-lo em um personagem especial. Clique com o botão direito e execute. E lá vamos nós. Como você pode ver, é assim que usamos nossas cores. Não é muito difícil. Vou, pela última vez, mostrar algo interessante. Em primeiro lugar, vou imprimir e reverter tudo daqui em diante. Devemos ter tudo normal, basta clicar com o botão direito do mouse e não funciona assim. Precisamos realmente aplicar o inverso. Devemos fazer o reset. Reinicializar. Vamos verificar. Ok, vamos lá. Portanto, a reinicialização funciona e observe que ela cria um espaço vazio. É por isso que também temos um pequeno espaço aqui, porque precisamos acomodar a variável extra ou o argumento extra que fornecemos aqui. Por exemplo, o que eu posso fazer é o seguinte. Posso adicionar um campo de substituição e depois esse formato. E então eu posso fornecer manita para magnetat, como você chama, clique com o botão direito do mouse E você pode usar um campo de substituição aqui. Nessa situação, o uso do campo de substituição permite que você simplesmente não tenha espaços atrás dele. Obviamente, não precisamos usar o formato, podemos simplesmente usar magneta assim, execute e pronto, funciona. Espero que você goste. Espero que você tenha entendido como isso funciona antes de prosseguirmos. Uma pequena função que você precisa criar para se relacionar com o tema principal que estamos trabalhando nesta seção. Crie uma função chamada imprimir com cores. Ele deve usar dois argumentos de string, o texto e o efeito que você gostaria de ter, e usar campos de substituição para criar uma string com a cor, depois redefinir a cor e imprimir a string. Basicamente, o objetivo dessa função é enviar algum texto, enviar o efeito. E que esse efeito seja aplicado apenas à frase que queremos imprimir. O que significa que não queremos que nenhuma outra frase seja afetada, apenas esta. E eu já mostrei como você pode fazer isso. Passe o vídeo agora mesmo e vá para o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui mesmo no topo. Vou imprimir ou definir minha impressão com cores. Serão necessários dois argumentos. O primeiro é o texto, que será um SDR, significa string, e o efeito, que também será um SDR E não retornará, não significando nada aqui. Para fazer dois pontos novamente. A coluna, eu vou ter a string de sublinhado de saída e ela será igual à seguinte Em primeiro lugar, vou ter um campo de substituição para o efeito, começaremos com o efeito. E então um campo de substituição para o texto e, finalmente, um campo de substituição com reset dentro dele. Em seguida, imprimiremos a string de saída. Então, todo o desafio foi fornecer essa redefinição, porque aplicamos o efeito que aplicamos ao texto e depois o redefinimos. E então imprimimos a string porque realmente não queremos nada impresso agora aqui, eu posso, por exemplo, digamos que eu queira imprimir com cores. Olá, Sr. Crowley. Lá vamos nós. Eu não sei Crowley. Crowley Ok. De qualquer forma, Sr. Poppin. Eu não sei E então tivemos uma vírgula, e então queremos que seja ousada, apenas um efeito E aqui, vou imprimir em negrito quando clico com o botão direito do mouse e dou uma olhada nisso. Olá, Sr. Poppin. Eu ainda sou ousado. E isso é porque, na verdade, deixamos eu adicionar um reset aqui, para que possamos ver claramente o que está acontecendo. Boom, lá vamos nós. Portanto, é aplicado apenas a poppins Agora, se você quiser, poderíamos ter nos esforçado ainda adicionar um reset logo atrás dele. Agora, tudo o que tínhamos anteriormente não será aplicado. Então, agora podemos remover a reinicialização daqui. E eu vou clicar com o botão direito do mouse e correr. Lá vamos nós. Podemos ver que ele só é impresso em cores com o efeito exato que queremos aqui. Eu posso mudar isso para imprimir com cores. Talvez o nome da função não seja muito bom porque imprimir com cores parece que você só pode imprimir com cores. Mas podemos imprimir, por exemplo, com um sublinhado, clique com o botão direito do mouse em executar. E lá vamos nós. Espero que você goste. Eu acho que este é um programa divertido ou uma seção ou lição nesta seção. Espero que tenham gostado do último vídeo e provavelmente do último. Talvez adicionemos mais tarde. Mas, por enquanto, o último serão os arcos estelares. E vamos aprender tudo sobre isso e como podemos fornecer vários argumentos para uma função ou quantos quisermos. Te vejo então. 85. 12. Args de estrela: Bem-vindo de volta aos meus programadores de Python favoritos e, neste vídeo, aprenderemos sobre a estrela Args Vamos ver, em primeiro lugar, o que ele faz e perceber que já o usamos muitas vezes antes. Mesmo neste vídeo aqui na impressão colorida, se você notou aqui, estávamos usando amarelo. E então olá, Drake. O que você está fazendo? Ousado. E tem alguma coisa amarela ou algo assim? Às vezes, até adicionamos uma redefinição aqui e também poderíamos até adicionar, digamos, vermelho, por exemplo. Como você pode ver, podemos adicionar muitos desses argumentos. Agora, quando eu escrevo, clique e corro, veja o que acontece. Nós reiniciamos e depois o tornamos vermelho e depois há um sublinhado e assim por diante Imprimir, assim como a impressão com cores é uma função. Mas observe que a impressão colorida só pode ser fornecida com duas. Se eu tentar adicionar uma vírgula e dizer vermelho ou reiniciar ou qualquer outra coisa, veja o que acontece Eu recebo um erro se eu não tiver um erro, apenas um aviso muito sério quando eu passo o mouse sobre ele Isso me diz que o argumento inesperado que estamos fornecendo é mais do que os argumentos que dissemos que deveriam existir. Acabamos de dizer que precisamos do texto e do efeito. Mas aqui, por algum motivo, temos mais do que isso e é totalmente normal. Como isso está funcionando? Bem, se eu segurar controle e acessar a função de impressão, você verá que temos algo muito especial aqui chamado arcos estelares Explicarei o que é o eu mais tarde quando começarmos a aprender sobre programação orientada a objetos. Como você pode ver, existem os arcos estelares. Há também o separador. Não tenho certeza se já usamos antes. Honestamente, esqueço o final e o arquivo. E veremos o arquivo também em uma das próximas seções, onde teremos saídas de entrada de arquivos Mas, por enquanto, a parte mais importante são os Star Arcs. O que são as estrelas? Vamos voltar aos nossos slides e explicar o que são organizações estelares Então, primeiro de tudo, as organizações em estrela são um parâmetro especial que permite passar um número variável de argumentos para uma função Lembre-se de um número variável de argumentos, ou seja, um argumento, 23172100 Quando você usa o arco em estrela, todos os argumentos passados para a função são compactados em um topple Veremos o que isso significa mais tarde. Mas lembre-se de que, se estiverem empacotados em um tombo, significa que podemos desempacotá-los se quisermos ou podemos iterar Você pode acessar os argumentos no topple iterando sobre o nome da estrela ou da variável O arco estelar pode ser usado para tornar sua função mais flexível e reutilizável, assim como a função de impressão, na qual podemos torná-la mais flexível se quisermos imprimir uma palavra ou dez palavras, ou cinco frases ou uma frase Ou talvez queiramos adicionar alguns efeitos e assim por diante. Os arcos estelares são muito importantes. Eles são muito úteis. Vamos ver uma maneira de usá-los. Vou voltar ao meu código aqui e criar um novo arquivo Python que será chamado de carro. Pressione enter. Agora, aqui, vou definir fruta, função de sublinhado propósito, eu vou ter o que, aliás, não precisa ser realmente estrelas. Podemos chamá-la de carambola, podemos chamá-la de estrela, Michael. Podemos chamá-lo do que quisermos, mas é o nome convencional de chamá-lo de estrelas. E aqui vamos dizer que quatro arg significa argumento Em args, vou imprimir o arco. Então, aqui no corpo do meu código, a função fruit. Eu vou comer maçã, banana, cereja. Agora, se eu escrever Click e correr para ver aquela maçã, banana, cereja, eu poderia adicionar um comentário e dizer abacaxi Lá vamos nós. Nós simplesmente imprimimos abacaxi com tanta facilidade. Novamente, como eu disse aqui, poderíamos ter chamado isso de frutas. Agora, aqui, comeríamos frutas. Essa seria a fruta. Lá vamos nós. Funcionaria exatamente da mesma forma, mas é melhor chamá-lo ou é a forma convencional e ajudará outros desenvolvedores a ler seu código corretamente. Ok, se alguém vê carambola , fica tipo, o que você está fazendo? Eu não posso, você simplesmente usa organizações como uma pessoa normal. Nessa situação, talvez seja melhor tê-la como fruta, mas acabei de dizer que está. Você tem o ou, que são os argumentos. E então você tem o g, que é um argumento se você quiser extrair informações dele. Antes de prosseguirmos, esta é apenas uma lição muito simples para que você conheça as possibilidades que temos. Mas eu também quero imprimir o tipo de G. Eu também quero imprimir isso é o Args Em seguida, usarei um campo de substituição para os Args. Duplique isso, eu vou dizer o ou, qualquer outra coisa. Essa é a estrela. Star Args. Quando escrevo, clico e corro, é isso que obtemos. Em primeiro lugar, o Args em si é apenas uma queda aqui Você pode ver que, se tentarmos imprimir como vimos antes, sabemos que é maçã por causa dos parênteses que temos ao redor dela parênteses que temos ao Mas se verificarmos os argumentos estelares, você verá que ele foi descompactado Nós os temos impressos, desempacotados . É basicamente isso. Não há nada demais aqui. Eu recomendo que você faça isso novamente se precisar de mais informações, mais exemplos. Mas, sinceramente, acho que isso é suficiente. Veremos exemplos do mundo real do uso dos args estelares posteriormente em nossas seções Mas, por enquanto, tenho um pequeno desafio para você. E seu desafio é resumir os quadrados. Crie uma função que receba qualquer número de números inteiros. A função deve calcular e retornar a soma dos quadrados de todos os argumentos Como exemplo, digamos que essa função seja chamada, ou eu a chamo de soma dos quadrados Em seguida, fornecemos 1234. E o valor de retorno deve ser um elevado à potência 22 a 23 elevado à potência 24 elevado à potência dois igual a 30, e simplesmente retornamos Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, aqui vou criar um novo arquivo Python. Então, vou arquivar um novo e vou chamar isso de soma dos quadrados Entre aqui que eu vou definir a soma dos quadrados, argumentos estelares e então teremos a soma do sublinhado quadrado igual a zero e depois quatro R. Vou passar, digamos, espere, direi que a soma do sublinhado quadrado é mais igual ao Essa pode ser a parte do desafio de você ter esquecido de como torná-la quadrada ou da potência de qualquer número Então, finalmente, quando analisarmos tudo, retornaremos a soma quadrada aqui. Eu vou dizer que a soma do sublinhado retornada é igual à soma dos quadrados, e eu vou lutar contra 1234 56k 54. Em seguida, imprimiremos a quantia devolvida. Também terei outra soma de retorno que é igual à soma dos quadrados, será 12,3 Isso é apenas para demonstrar que podemos fornecer qualquer número de argumentos que quisermos Então, quando escrevemos Click e executamos, é isso que obtemos. Vou adicionar talvez dez aqui só por diversão. Veja como nossas funções se tornaram dinâmicas e flexíveis com os arcos estelares. Espero que tenham gostado. Acredito que estamos no final desta seção. Como eu disse, talvez possamos atualizar isso. Estaremos sempre atualizando o curso, que você sempre para que você sempre possa voltar e conferir. Mas, por enquanto, acho que esse é o final da seção número seis. Parabéns por chegar até o fim. Agora você conhece mais de 97% da população mundial em Python E isso é algo para se orgulhar, definitivamente. Na próxima seção, veremos a programação orientada a objetos em Python, que realmente expandirá o horizonte de conhecimento que, você sabe, mal posso esperar para ver você lá e ver você lá dentro Bem, eu não sei quando você quer continuar. Eu queria dizer em alguns segundos, mas quem sabe? Talvez você queira continuar em uma semana. Quer fazer uma pausa? Você merece isso. Eu vou te ver. 86. Seção 7 - Programação orientada a objetos | 1. OOP 101: boas-vindas de volta aos meus desenvolvedores favoritos de Python a um novo vídeo e uma seção totalmente nova em que aprenderemos a parte mais interessante de toda a programação, não apenas o Python, que é orientada a objetos Estou muito empolgado em ensinar isso porque, uma vez que você conhece a programação orientada a objetos, você expandiu oficialmente seu horizonte de compreensão. Depois de entender e compreender totalmente a programação orientada a objetos, não há linguagem no mundo que você não possa aprender em questão de duas semanas Será apenas uma questão de entender as sintaxes de certas linguagens, por exemplo, Java ou C plus plus ou não sei, o que quer que você aprenda Se você conhece programação orientada a objetos, é isso. Você é dourado para sempre. Então eu quero sua concentração total, sua atenção total. Vou tentar explicar tudo o mais profundamente possível, mas isso também requer atenção de você. Então, vamos começar. O que é Oop Oop significa programação orientada a objetos. É um modelo de programação que usa objetos e suas interações para projetar aplicativos. Expandiremos essa ideia mais tarde. É uma forma de organizar e estruturar o código que se concentra nos objetos do programa, e não apenas nas funções e procedimentos. Então, até agora, tudo em que estávamos trabalhando eram variáveis que aplicaríamos a funções nas quais usaríamos determinadas operações. Mas agora temos uma abordagem mais organizada e estruturada dos objetos que vamos usar. Quase tudo em Python é um objeto com suas propriedades e métodos Toda vez que criávamos um número inteiro, ele seria um objeto toda vez que criássemos uma lista, uma string, uma queda Todos esses foram objetos que foram criados, e você verá o que quero dizer quando começarmos a criar nossas próprias classes e objetos em Python programação orientada a objetos é suportada por vários recursos, como classes , objetos, atributos de herança, etc., etc E veremos tudo isso. Vamos agora examinar uma estrutura de classes. Uma classe é como um modelo de como os objetos devem ser e o que eles podem fazer, e os objetos são instâncias dessa classe definida Se você já construiu um prédio, isso soou, se você já construiu um prédio, se você já teve um determinado projeto que precisa criar, você precisa criar uma planta desse projeto que então você entrega ao engenheiro, e o engenheiro segue essa planta, e então ele pode adicionar e alterar e talvez expandi-la Há um certo plano que o engenheiro precisa seguir A mesma coisa acontece com a classe. A classe é um modelo de como o objeto deve ser Você não precisa usar tudo o que um objeto tem a oferecer. Você não precisa usar tudo o que a aula tem a oferecer. Mas você precisa seguir certas regras que essa classe ou modelo fornece Cada objeto que você cria a partir dessa classe é chamado de instância de uma classe. Essa é a estrutura de classes que veríamos. Em primeiro lugar, temos a palavra-chave. Essa palavra-chave é usada para definir uma nova classe. Assim como temos o DEF de, quando começamos a criar uma função, classe é usada para criar uma nova classe Então temos o nome da classe. O nome da turma. E isso começa com uma letra maiúscula. Você viu que, quando estamos criando variáveis, precisamos de uma letra minúscula. Quando estamos criando funções, começamos com letras minúsculas. Quando estamos criando nomes finais, começamos com letras minúsculas. Somente ao criar uma classe é que começamos com letras maiúsculas. Isso é o que diferencia uma classe de todo o resto, e eu recomendo que você siga essas oito regras Em seguida, temos o objeto de classe que criamos na parte inferior, que é igual ao nome da classe com parênteses E veremos mais tarde como podemos atribuir determinadas variáveis que serão atribuídas aos atributos dentro da classe. Obviamente, dentro da classe, temos o construtor, temos atributos, temos métodos, temos muitas coisas Sem mais delongas, vamos voltar ao Intelligent e começar a trabalhar em nossas aulas. Arquive um projeto novo e um novo. Assim que chegarmos ao Novo projeto. Sim, Python, vamos chamar isso de programação orientada a objetos E eu vou copiar isso. Está no curso de Python. Programação orientada a objetos. Sim, termine e esta janela. Ok, vamos lá. Agora temos um novo projeto. Espero que você o tenha instalado e funcionando. Como eu sempre digo, sua interface de usuário pode ser diferente com base na nova inteligência lançada, mas 99% das coisas devem ser as mesmas. Vamos criar um novo arquivo Python. Vamos clicar aqui mesmo, um novo arquivo Python E eu vou chamar isso de, oop, oop, Underscore Intro Ok, estamos de volta Vou encerrar o projeto e começar a criar minha turma. A aula é que começaremos com a palavra-chave. Vou chamá-la de nova classe. E a nova classe terá simplesmente x igual a 23. E com espaços ao redor, assim como com funções, precisamos deixar de fora dois espaços entre a classe e o código principal do nosso corpo, ou o corpo principal do nosso código, eu acho. Ok, o corpo principal do nosso código. Aqui, vou dizer que temos a nova classe do objeto e ela é igual à nova classe. Pronto, vou simplesmente imprimir o objeto, a nova classe x. Note que aqui não fornecemos um x para a nova classe do objeto. Não a definimos como nada. Acabamos de dizer que objeto, nova classe é igual a uma nova classe. Essa é a instância da nova classe e é um objeto. Note agora que se eu escrevo click e executo, recebo 23 porque a nova classe dentro dela tem essa propriedade ou atributo. Mais tarde, veremos os nomes dessas pequenas coisas detalhadas, tem x igual Quando criamos uma instância dessa classe, ela recebe imediatamente essa propriedade aqui. objeto de uma classe tem algo dentro dele chamado, que podemos realmente conferir e ver. Essa é a estrutura da qual estávamos falando. Esse é o modelo, esse é o modelo sobre o qual começaremos a construir tudo o que é necessário Mas, obviamente, esse não é um exemplo prático real, como ter uma classe que só tem x igual a 23 não é realmente algo que seja, como eu disse, viável Vamos dar uma olhada em um exemplo mais profundo. Mas antes de fazer isso, precisamos aprender algo chamado construtor Que é o sublinhado, o sublinhado nele, o sublinhado, o sublinhado e, em seguida, Este é um método construtor que nos permite construir objetos Por exemplo, agora com nossa nova classe, fomos forçados a ter x igual Mas e se quiséssemos que x fosse diferente para cada objeto que criamos? Usaríamos um construtor. É um método especial que é chamado automaticamente quando um objeto da classe é criado. Quando você cria uma nova classe, o sublinhado, o sublinhado nela Quando você cria um objeto de uma classe ou uma instância de uma classe, o que quero dizer com isso é que quando você realmente diz objeto, nova classe igual a uma nova classe, você está criando um objeto. Quando você cria um objeto, esse método é chamado automaticamente. Ele é usado para inicializar os atributos dos objetos. E veremos o que são em apenas alguns. Mas, por exemplo, x igual a 23 é um atributo. O parâmetro self é uma referência ao objeto que está sendo criado. Então, o eu faz referência ao objeto real que temos. E argumentos adicionais podem ser adicionados conforme necessário, dependendo dos atributos que a classe deve ter. Então, veremos se temos dois atributos, precisaremos de dois argumentos. Essa não é necessariamente a regra aqui. Veremos que existem cenários diferentes para esse caso. Mas sim, os argumentos são enviados para certos atributos que temos. Por fim, é uma maneira conveniente de garantir que todos os objetos de uma classe tenham um estado inicial consistente. E eu vou te dizer o que isso significa daqui a pouco. Mas saiba que esse é o construtor. É muito importante. E a outra lição muito importante é que o eu faz referência ao objeto que foi criado. Vamos dar uma olhada em um exemplo disso aqui, vou comentar tudo isso. Ei, bem-vindo de volta. Então, você não adora quando tem um programa funcionando muito bem e ele insiste em atualizá-lo e, quando você o atualiza, ele fica congelado a cada dois minutos Uh, uh, sobre isso. Eu adoro isso. É por isso que eu nunca gosto de atualizar nada. É por isso que eu ainda uso o Python 3.9, embora haja atualizações, assim como encontrei um Python estável que funciona, só isso Não quero fazer o upgrade para nada. Desde que, obviamente, o que estou lhe ensinando agora seja verdade. No futuro, vou criar uma nova turma. E eu comentei tudo selecionando tudo e pressionando control forward aqui Vou ter um aluno aqui. Vou definir o int. Eu sempre recomendo que você use o preenchimento automático da guia para preencher automaticamente tudo isso Assim como dissemos antes, esse é um método em que precisamos usar o def t aqui Vou adicionar e teremos ph agora. Eu vou ter um nome próprio. Igual ao nome e self h igual a h, como você pode ver aqui, O self, como eu disse antes, self é o parâmetro que faz referência ao próprio objeto. que significa que quando eu digo, por exemplo, aqui, sublinhado Michael, e isso deve ser sublinhado, não significa pessoa, sublinhado Michael é igual a pessoa sublinhado Michael Abra os parênteses e envie Michael com 27 anos. Quando estou aqui, eu significa sublinhado Michael, e nós lhe demos o nome, que é Michael, e a idade, que é 27 Agora você pode estar pensando, onde está o eu? Não deveria estar aqui? Bem, o eu é retirado do sublinhado Michael que agora, quando mencionamos o sublinhado Michael, sabemos que seu nome é nome e sua idade é a que enviamos É basicamente isso. Esse é o construtor Isso nos permite construir um método apenas para mostrar que ele é chamado automaticamente. Quando um objeto for criado, imprimirei uma nova pessoa recém-criada. Quando eu escrevo, clique e corro, veja isso. Uma nova pessoa também foi criada aqui. Vou imprimir, imprimir o sublinhado Michael Nomeie o sublinhado Michael. Clique com o botão direito e corra e veja aquele Michael And 27. Espero que você tenha entendido o que está acontecendo aqui. Eu sei que à primeira vista é tipo uau. Oh, tudo é novo. Tudo é estranho Mas não se preocupe, pois damos mais exemplos, à medida que enfrentamos desafios, à medida que progredimos ao longo do curso, tudo se tornará cada vez mais fácil. Então, com isso resolvido, agora seu desafio será criar um novo objeto. Então, crie um novo objeto com a pessoa da classe. Essa pessoa deve ter um nome e uma idade. Obviamente, torne-o diferente do que você tem atualmente. Imprima ambos em linhas separadas, o nome e o H. E é basicamente isso. Agora, depois de fazer o desafio, você apreciará totalmente o poder de ter aulas. Então, faça um vídeo agora mesmo e faça o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, sublinhe que alguém será igual a pessoa e essa pessoa será alguém com 42 anos Então, se eu imprimir sublinhado o nome de Michael, desculpe, sublinhe alguém, nomeie, duplique esta idade. Quando eu escrevo, Click and I run, olha só, outra nova pessoa foi criada. Olha só, o construtor foi chamado e então temos alguém E 42, vou comentar isso por enquanto. E vou fazer com que seja assim porque agora que estabelecemos que isso funciona, funcionará. Como você pode ver, as aulas são muito importantes. É um projeto, uma estrutura de um objeto e como ele deve funcionar Cada objeto tem seu próprio nome, sua própria idade, eles compartilham os mesmos atributos? Mas cada objeto tem valores diferentes para esses atributos. Então eu espero que você goste. Espero que você não esteja muito confuso. No próximo vídeo, examinaremos, ou examinaremos mais profundamente, classes, instâncias e assim por diante. Então, muito obrigado por assistir, e nos vemos em alguns segundos. 87. 2. Mais profundamente nos class: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, vamos nos aprofundar um pouco mais nas aulas Entendendo instâncias, construtores, o eu e muito mais em Python Como eu disse antes, todo tipo é uma aula. Isso é algo que você precisa ter em mente à medida que avançamos. De volta à pessoa aqui, vou criar outro método que vou chamar de surdo Minha altura de sublinhado. A altura, como você pode ver, assim que eu digitar no colchete esquerdo, você verá que o eu é preenchido automaticamente Vou fornecer outro argumento que será do tipo. Vou imprimir o seguinte. Eu vou dizer campo de substituição, vou ter o nome de altura própria do campo de substituição. Ou podemos, na verdade, usar a altura diretamente. E eu vou te dizer por que apenas alguns centímetros a menos que você esteja no Sistema Imperial. Novamente, precisamos de mais espaço aqui agora. Por enquanto, vou manter a pessoa aqui, o que vou fazer é adicionar uma impressão e depois dizer sublinhar Michael altura, altura Agora eu posso fornecer 172. Não tenho certeza se essa é a minha altura, honestamente. Talvez seja mais, eles me dizem definitivamente é mais, Pero, eu nunca medi isso De qualquer forma, agora, podemos chamar um método em uma instância. Python fornece o self automaticamente, mas você mesmo pode fornecê-lo, se quiser Por exemplo, podemos fazer o seguinte: altura da pessoa e depois fornecer alguém. E depois 188, por exemplo. Quando dizemos sublinhado Michael pode, assim como com o construtor, o eu é o sublinhado Michael e 172 está Agora, se eu escrever, clicar e eu corro, Boom. Lá vamos nós. Michael tem 172 centímetros de altura, alguém tem 188. Você pode ver claramente como eu ou meus. Deixe-me falar isso aqui para que possamos ver tudo completamente. Você pode ver como alguém é eu e definir os 188 centímetros Bem simples. Não há nada demais aqui. Agora, vou lhe dar um pequeno desafio para adicionar outro método. Crie um método dentro de nossa classe que imprima o peso da pessoa. Ele deve ter um argumento inteiro, que é o peso E adicione o caminho a um de nossos objetos pessoais e exiba-o corretamente. Pause o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta. Espero que você tenha feito o seu melhor. É bem simples. Assim como tínhamos minha altura, teremos um peso sublinhado Oh meu Deus, eu não consigo pesar. É assim que escrevemos peso? Não sei, peso, peso próprio. E eu vou imprimir, boom, qual é o problema aqui? Método? Meu peso pode estar estático. Ok, veremos o que eles querem. Mais tarde, terei um campo de substituição e o nome próprio é o peso do campo de substituição, 100 kg OK. Então, aqui novamente, vou acrescentar meu peso ao sublinhado Michael e também não tenho certeza Eu acho que é 72 também. OK. E vou apenas adicionar uma impressão para que possamos separar Michael de alguém. Clique com o botão direito, corra e pronto. Michael tem 72 K. Agora vamos voltar aqui para o meu peso e minha altura. Você notará que quando tentei usar um atributo que está aqui, esse é um dos nossos atributos no nome, como o nome do ponto. E, a propósito, não precisei dar nome a ele. Eu poderia ter chamado isso de nome de pessoa, você sabe, eu poderia ter chamado do que eu quisesse. Mas é uma maneira conveniente de chamar os atributos da mesma forma que os argumentos que estão sendo enviados. Então, esse é o nome do atributo, e esse é o argumento que está sendo definido, ou esse é o valor que está sendo dado ao atributo. E geralmente nomeamos os atributos da mesma forma que os argumentos que estão sendo dados a nós. Você verá isso muito em exemplos de criação de classes mais tarde. Mas você pode chamá-lo do que quiser. Agora, observe aqui que pudemos usar o nome do ponto próprio, por exemplo, quando dissemos sublinhado a altura de Michael Liguei para minha altura, mas o eu era Michael. Nome próprio. Ele procurou o atributo do nome do eu. Wasp sublinha Michael, descobriu que o nome era Michael. Foi assim que pudemos imprimir Michael aqui. É por isso que conseguimos imprimir a altura de alguém aqui. Agora observe que, na altura, não temos a altura do ponto próprio. Isso porque temos a altura não como um atributo artístico, mas apenas como um argumento dentro da minha função de altura. Não é um atributo. Tudo o que está aqui é um atributo. Tudo o que é autopontilhado é um atributo. Analisaremos mais detalhadamente os atributos no próximo vídeo, mas você precisa conhecer as seguintes regras. Antes de terminarmos, quero mostrar outra maneira de definir meu peso. Vou rolar para baixo aqui e dizer sublinhe o peso de alguém Você verá que eu posso adicionar um peso. Vou apenas adicionar 42. Agora isso é muito baixo. 142, alguém está ficando fora de forma. Clique com o botão direito e execute. E aí está, 142 kg. Mas agora veja o que eu posso fazer aqui. Posso dizer que o peso de alguém é igual a 100. O que está acontecendo aqui? Se eu imprimir, posso dizer um campo de posicionamento aqui. Vou dizer que o nome de alguém mudou de peso. Agora a boca, agora eles são um campo de reposição, alguém pesa. Interessante. De onde veio isso? Como podemos acessar o peso mesmo que não tenhamos nada aqui? Quando eu escrevo, clique e eu corro, veja isso. Alguém tem uma mudança de peso agora. Eles são 100% estranhos. Vamos tentar isso com Michael. Vamos ver se eu tento imprimir o sublinhado Michael weight Eu recebo um erro, embora aqui alguém tenha peso. Clique com o botão direito e execute. O objeto pessoal não tem nenhum atributo. Nós esperamos, esperamos, esperamos. Mas alguém tem peso. Como isso é possível? Bem, como você pode ver, se tentarmos forçar um atributo em uma instância de uma determinada classe, um atributo será criado, mas somente para essa instância. Por exemplo, para o sublinhado Michael weight, não há nenhum atributo de peso Nós não criamos um. Não há peso na classe real. Mas para alguém P, quando dizemos sublinhar alguém, esse peso, um peso, na verdade, foi criado Isso mostra a flexibilidade do Python que permite que você realmente crie um atributo de dentro do corpo do seu código Eu sei que isso pode ser um pouco confuso, mas mais tarde você verá como é como tudo o que aprendemos em Python Pode ser confuso no começo, pode ser como se isso não fizesse sentido Mas mais tarde, com mais e mais exemplos , será mais. Então eu espero que você tenha gostado. Espero que você tenha entendido o que está acontecendo aqui, mesmo que seja um pouco confuso No próximo vídeo, vamos nos aprofundar atributos das classes e talvez ter uma ideia melhor do que está acontecendo. Muito obrigado por assistir CUNFU. 88. 3. Aprofundar no atributo de curso: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos dar uma olhada mais profunda nas aulas. Atributos são classes, ou quero dizer, o que realmente são atributos? Atributos são variáveis que contêm o estado ou os dados de um objeto, assim como temos o nome e a idade. Esses são estados e dados sobre os objetos que estamos criando. Eles também são conhecidos como campos ou propriedades e são definidos dentro de uma classe. Se você já viu alguém se referir a atributos como campos ou propriedades, não se assuste, apenas saiba que eles podem ser usados. Eles podem ter nomes diferentes. Um atributo pode ser qualquer tipo de variável, até mesmo outro objeto de uma classe diferente, como vimos. Podemos ter strings, números inteiros como o nome e o H, mas o tipo do atributo também pode ser de uma classe totalmente diferente Quando os atributos do Python são definidos dentro do método construtor, que está nele, e os atributos podem ser acessados e modificados diretamente usando a notação, exatamente como vimos quando modificamos o E vamos nos aprofundar nisso mais tarde. Mas voltando à linha em que imprimimos o peso, aqui, onde imprimimos o peso de Michael. Isso mostra a natureza dinâmica do Python que permite que você tenha duas instâncias da mesma classe, mas que acabam tendo atributos diferentes Então, vamos criar um tipo diferente de atributo que ainda não vimos, que é um atributo de nível de classe no canto superior direito aqui, logo abaixo de pessoa, vou criar uma variável que é o número. Deixe-me fazer com que quanto menor eu me sinta clustrofóbico. O número sublinhado dos membros e eu o definirei como quatro. Isso é chamado de atributo de nível de classe. Número de membros do atributo de nível de classe. Quatro, certo? Temos quatro membros, duas pernas, duas mãos, o que for. Cada pessoa tem esses quatro membros. Vamos imprimir tudo isso. Vou comentar isso por enquanto. Eu só vou ter uma impressão digital vazia aqui. Vou imprimir o seguinte campo de substituição. Eu terei o nome da pessoa. Ok, tem campo de substituição. Qual é o problema aqui? Possui campo de substituição e , em seguida, número de membros da pessoa. Vou duplicar isso para mudar aqui, sublinha Michael, Michael Duplique isso. Alguém, alguém, tudo bem. Se eu clicar com o botão direito do mouse e correr, veja a saída que recebo. Primeiro de tudo, aqui embaixo eu tenho uma coisa estranha porque eu não disse o nome de Michael e alguém, e isso deveria ser melhor Lá vamos nós. Então, como você pode ver, um atributo de classe significa que todas as instâncias e até mesmo a classe têm esse atributo. Portanto, sublinhado da pessoa, nome do sublinhado retorna o nome real da classe Você pode até mesmo acessar as documentações para ter certeza de que é exatamente isso que ele faz Porque lembre-se de que a pessoa como classe não tem um nome, não tem o nome do atributo. É fornecido às instâncias por meio do construtor. Michael tem o nome, alguém tem o nome e todos eles têm o número de membros Por ser um atributo de nível de classe, não é específico para nenhuma instância, é para o atributo de nível de classe. Mas também podemos alterar o atributo da classe aqui. Eu vou fazer o seguinte. Vou ter apenas uma impressão simples. E então imprimiremos a transformação em, quando nos transformarmos em um polvo, direi que o número de membros de uma pessoa agora é igual a oito Vou copiar o código e colá-lo aqui. Agora, se eu escrever Clique e eu corro, veja o que eu recebo. Estou me transformando em um polvo com acesso por número de membros. E eu mudo para oito. Como você pode ver ao jogar e usar o atributo de nível de classe, eu realmente posso alterá-lo para todos. E se eu mudasse o número de membros dessa pessoa? E se eu alterasse o atributo do nível da classe? Não diretamente nas anotações da aula. Aqui, acessei o número de membros da pessoa. E se eu fizesse isso com uma instância ou objeto específico dessa classe? Bem, você descobrirá daqui a pouco porque tem o desafio de mudar o nível da turma. Então, você precisará alterar o número de membros, mas desta vez apenas para uma de nossas instâncias, seja para Michael ou para alguém. Depois. Imprima o número de membros das outras pessoas. Imprima, assim como sempre fizemos para a aula presencial, para Michael e para alguém. Há alguma mudança? E o que isso significa? Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Vou copiar essas linhas. Coloque-os aqui de polvo, transformando-se em um inseto E nós vamos ter aqui seis. E eu vou realmente dizer transformar Michael em um inseto. E ressalte que Michael mudou o número de membros. Não o alteramos para a classe real, simplesmente o alteramos para uma instância. O que você acha que vai acontecer se você não conseguir enfrentar o desafio por algum motivo? O que você acha que vai acontecer agora? O número de membros mudará para todos ou mudará apenas para P Sublinha Michael, se eu escrevo Click e corro me transformando em um polvo, nós o mudamos na pessoa que todo mundo Mas agora, quando eu mudar isso para Michael, sublinhando o número de membros de Michael, você verá que essa pessoa fica Alguém diz que fica oito, mas Michael tem seis membros. Agora, como você pode ver, quando alteramos um atributo de nível de classe para uma instância específica, somente essa instância é afetada, as outras instâncias e até mesmo a classe permanece a mesma. Quando mudamos isso em uma classe, isso muda para todos. Novamente, estamos nos aprofundando cada vez mais nas coisas. No próximo vídeo, há algo que teremos que observar, sobre o qual falarei. Mas, por enquanto, espero que você esteja entendendo o que está acontecendo. Espero que você esteja gostando. Se você tiver alguma dúvida, deixe-a onde puder. Pergunte-me onde quer que eu esteja disponível ou pergunte ao instrutor, é você e nos vemos no próximo vídeo, onde, novamente, eu disse que vamos ver algo que precisamos observar Muito obrigado por assistir See you and some. 89. 4. Algo para prestar atenção (__dict__): Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, veremos algo que precisamos observar ao desenvolver nossas classes e trabalhar com atributos. Também analisando aquela coisa que precisamos observar com o sublinhado Sublinhado, sublinhado, sublinhado. O que é sublinhado, sublinhado, ditado? Sublinhado, sublinhado. Ok, eu vou parar. Atributo é um dicionário que contém os atributos de um objeto. Agora, ainda não examinamos os dicionários, mas com certeza os examinaremos mais tarde. Mas, por enquanto, é apenas um par de valores-chave. O dicionário é um par de valores-chave. E vou explicar mais quando você realmente ver a saída. Assim, ele permite que você acesse e manipule os atributos de um objeto como se fossem itens em um dicionário Novamente, não se assuste com o dicionário de palavras. Vamos examinar extensivamente os dicionários, mas é muito importante que examinemos o sublinhado, o ditado do sublinhado agora, antes de prosseguirmos Porque precisamos entender o que está acontecendo sob o capô de nosso funcionamento. Ele é criado automaticamente quando um objeto é criado e contém um par de valores-chave para cada atributo do objeto. Onde a chave é o nome do atributo e o valor é o valor do atributo. Tudo o que você precisa saber por enquanto sobre o dicionário é que ele é uma lista de pares de valores-chave , mais ou menos: Ok, vamos vê-lo em ação. E eu vou te dizer quais são as chaves, quais são os valores e o que é o dicionário. Se voltarmos ao nosso código aqui, vou realmente comentar tudo isso por enquanto, boom. E então aqui, onde está, onde está? Onde eu tenho nome. E depois dois, vamos ver, onde adicionamos peso. Temos o peso de alguém. OK. Acho que aqui é um bom lugar para, por exemplo, imprimi-lo. Vou imprimir o sublinhado Michael, o sublinhado o ditado E vou duplicar essa linha e usar alguém underscore underscore dict Se eu clicar com o botão direito do mouse e correr, vamos ver a saída que obtemos. Como você pode ver, como prometi, esses são pares de valores-chave. É uma lista de pares de valores-chave. A chave está aqui , no lado esquerdo da coluna. E é a chave que é o nome do nosso atributo, o nome. Então temos o valor desse atributo, que é Michael. Então temos outro par de chaves, que é o H. Essa é a chave, esse é o valor. Novamente, não se preocupe muito com o que está acontecendo aqui. Quando aprendermos dicionários, ficará muito, muito mais fácil A única coisa com que você precisa se preocupar é ver o que temos aqui. Em Michael, temos o nome e a idade, correto? Muito simples, bastante autoexplicativo. Nada demais aqui, mas se você olhar para alguém, você tem nome, idade e depois espera. Hmm. De onde veio esse peso? Bem, se você se lembra, quando estávamos trabalhando com Michael e alguém em alguém, tínhamos essa linha de código na linha 34 onde na verdade adicionamos peso igual E o que aconteceu quando fizemos isso? Conseguimos acessar o atributo, mas quando tentamos imprimi-lo para Michael, veja só, houve um erro. Lembre-se de que isso se deve à flexibilidade do Python. Nós já conversamos sobre isso. Quando tínhamos alguém com peso igual a 100, o atributo foi realmente criado E você pode ver todos os atributos usando o dicionário de sublinhado Novamente, recomendo que você abra a documentação aqui. Lá vamos nós. Biblioteca padrão do Python Tudo está disponível lá. Você pode procurar a documentação do controle. Sublinhado sublinhado ****. E, por algum motivo , não está disponível. Vamos tentar o tipo de mapeamento****, vamos clicar lá. OK. Não, é só falar sobre os dicionários Você pode digitar sublinhado, sublinhado, sublinhado, sublinhado Em Python, você pode encontrar todos os recursos se aprofundando muito mais Mas, basicamente, ele representa um dicionário ou qualquer objeto de mapeamento usado para armazenar atributos em um objeto. Lá vamos nós. Isso é tudo o que você precisa saber sobre o dicionário. Ele mostra todos os atributos que você criou até agora para seus objetos. Muito obrigado por assistir. Espero que tenham gostado disso só para mostrar como podemos criar atributos do nada e de forma muito, muito flexível No próximo vídeo, vamos nos aprofundar nos métodos de nossas aulas Então, estou animado para ver você lá. Nos vemos daqui a pouco. 90. 5. Mais profundamente em métodos: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste, vamos nos aprofundar nos métodos Mas antes disso, quero falar sobre algo muito importante. Essas são as sequências de caracteres do documento, por exemplo, na impressão Se eu passar o mouse sobre a impressão, não sei se ela me dará muitas informações Mas aí está, você pode ver que isso me dá os valores que eu tenho que dar a ele. Ele me fornece os vários tipos que devem ser fornecidos a ele e seu tipo de retorno. Mas aqui você verá que temos essa descrição do método real. Então, ele imprime os valores em um fluxo ou no sistema, pontuando o que quer que seja. Por padrão, argumentos de palavra-chave opcionais ya. Portanto, ele fornece informações sobre o que isso realmente faz. E se quiséssemos ter a mesma coisa para a pessoa aqui? Basta chamar a classe base da classe quando chamada de argumentos excepcionais, seja o que for. Portanto, não é realmente descritivo do que a pessoa é ou do que precisamos fornecer a ela Em vez disso, podemos criar algo chamado corda de cachorro. Basicamente, a string dog é o que chamamos três aspas aqui e começamos a digitar essa é a classe da pessoa, forneça um nome, um H. E você pode usar dois métodos, um H. E você pode usar dois métodos, altura do sublinhado e peso do meu sublinhado Essa é uma string de documentos muito básica. Obviamente, mais tarde eu vou te mostrar, oh meu Deus, quantos erros eu cometo. De qualquer forma, vou mostrar uma maneira mais ampla de criar strings de documentos com melhor exibição de atributos e melhor exibição de métodos Mas, por enquanto, se eu passar o mouse sobre a pessoa, veja o que ela me dá. Esta é uma classe de Pessoa fornecida com nome e idade e você pode usar dois métodos, minha altura e meu peso. Na verdade, adicionamos um pouco de descrição ao que é isso. Também posso adicionar descrição aos métodos. Por exemplo, em strings reais , por exemplo , aqui imprime o nome e a altura fornecida, na verdade, não define a altura do atributo Por exemplo, agora, se eu passar o mouse sobre minha altura, vamos lá, imprime o nome da altura fornecida e, na verdade, não obtém a altura do atributo Ok, então essa é a corda do dock. De agora em diante, vou tentar usá-lo o máximo possível. Portanto, a string doc é uma string que aparece no topo da classe, uma função ou um método. E é usado para fornecer documentação ou informações sobre o código que você usará ou qualquer outro programador que assuma o controle do seu código Mas, por enquanto, vamos nos aprofundar no método e a primeira coisa que vou fazer é criar um novo arquivo Python e chamá-lo Bitcoin underscore Assim que tivermos isso, vou criar uma classe, chamada de carteiras Bitcoin E eu adicionarei uma corda de cachorro aqui e será carteira para guardar seu Bitcoin. Lá vamos nós. Então eu vou definir o que está nele. Terá uma semente. Oh meu Deus. Terá uma semente. Sublinhe o nome e o saldo. Então, aqui eu vou fazer um nome igual a equilíbrio pessoal igual a equilíbrio . Vou criar um método que nos permitirá depositar. Defina o depósito. Abra isso e teremos valor sublinhado dois, sublinhado Então, vamos ser muito importantes : a soma é maior que zero e, em seguida, vamos nos equilibrar automaticamente mais a quantidade a ser adicionada. Em seguida, definiremos a retirada. O valor a ser subtraído. Subtraia, está escrito incorretamente? Subtrair. Oh meu Deus. Subtraia o valor e retire. Qual é o problema com você? A retirada pode ser estática. Ok, esse aviso está sempre ativo. Isso será resolvido quando terminarmos de digitar tudo Queremos ter certeza de que a atração é maior que zero, mas ainda menor que o equilíbrio automático, porque precisamos ter certeza que a quantia que queremos subtrair está realmente disponível E aqui precisamos adicionar a coluna e, em seguida, vamos dizer que o equilíbrio automático menos é igual à quantidade a Por último, mas não menos importante, teremos o balanço do show. Isso não aceitará nenhum argumento e simplesmente imprimirá o valor total do autoequilíbrio do campo de substituição do BDC. Lá vamos nós. Se você ainda não está comigo no mesmo nível aqui, tenha pressa, pause o vídeo, escreva tudo, certifique-se de entender o que está acontecendo Esses são métodos muito simples. Em uma classe muito simples, simplesmente temos o nome que são dois atributos, o nome e o equilíbrio. Temos três métodos. O primeiro método em que depositamos e fornecemos o valor a ser adicionado. Garantimos que o valor a ser adicionado seja maior que zero e que mais igual ao atributo saldo retirado seja o mesmo, o valor a ser E então garantimos que o valor a ser subtraído seja menor que o saldo total, mas maior que zero e menos seja igual ao valor a E a última é simplesmente uma definição que nos permite mostrar o equilíbrio. Vamos continuar e criar aqui. Vou criar uma carteira com o sublinhado Michael. Como sempre, você não precisa criar Michael. Você pode criar sua própria carteira, seja qual for o seu nome do outro lado. Crie a carteira em seu nome, ela se chamará Michael. Agora, alguns de vocês que sabem muito sobre Bitcoin sabem que o nome ou a frase-semente não devem ser tão pequenos. Mas apenas para os propósitos deste exemplo, teremos 100 Bitcoins. Alguns de vocês têm, sim, 100 Bitcoins. E, obviamente, não temos um limite para os 100 milhões. Não vamos nos preocupar com isso por enquanto. Vamos trabalhar no uso, achei que seria um bom exemplo ter uma carteira. Todos os exemplos que você encontra na Internet são sempre como conta bancária, saldo e qualquer outra coisa. Vamos fazer algo mais divertido. Não vamos ficar centralizados agora que criamos nossa carteira Bitcoin com a semente chamada saldo Michael NA ou saldo inicial de 100 Vou pegar a carteira Michael e mostrar o saldo quando escrevo Clique e corro, aí está, a quantidade total de BTC é 100. Agora eu vou fazer outra coisa. Vou pegar a carteira do depósito de Michael e depositarei 122. Então eu vou duplicar essa linha novamente. Mantenha pressionada a tecla Shift Alt e mova-a para baixo. Agora, quando escrevo, clico e executo, lá vamos nós. Olha isso. Eles foram adicionados um ao outro. Deixe-me copiar essas coisas passadas aqui. Adicione um espaço extra e retire em vez de adicionar e retirar 30. Agora, quando eu escrevo, clique em, boom, lá vamos nós. 192, por exemplo. Se eu tentar retirar -130, veja isso, não funciona. Simplesmente imprimimos o saldo do show. Como você pode ver, tudo funciona exatamente como precisamos. Embora haja um pequeno problema. Obviamente, ainda há muitos problemas aqui. Mas o principal problema que queremos corrigir agora é que toda vez que fazemos uma alteração, precisamos chamar o show balance toda vez. Quero dizer, é muito complicado. Digamos que façamos centenas de depósitos e centenas de transações. Só precisamos ter certeza de que sempre mostramos o equilíbrio entre o uso muito bom e não muito eficiente do nosso tempo. Portanto, um melhor uso do nosso tempo está lhe dando um desafio. E seu desafio, Oh meu Deus. E seu desafio será a transparência. Portanto, imprima o saldo toda vez que fizermos um saque ou adicionarmos dinheiro à nossa carteira, e é basicamente isso. Portanto, você precisa encontrar uma maneira de mostrar seu saldo toda vez que fizer um saque ou adicionar dinheiro. Então, passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Isso é algo novo. Na verdade, nunca usamos o self para chamar um método que está dentro da classe, mas é muito simples aqui no depósito Depois de adicionarmos algum dinheiro, diremos self-show balance. Obviamente, vamos fazer o mesmo aqui. Só mostraremos saldo quando realmente fizermos um saque ou quando realmente fizermos um depósito. Aqui, eu não preciso mais dessas linhas. Lá vamos nós. Toda vez que fazemos um depósito ou saque, devemos imprimir isso para nós. Por exemplo, aqui, se eu adicionar ou remover 32, devo obter 190 no final. Tudo funciona bem. Tudo funciona bem. Como você pode ver, podemos chamar métodos dentro de outros métodos que estão em nossa classe. Espero que você goste. No próximo vídeo, veremos os avisos que continuamos recebendo, dizendo que talvez tenhamos um método estático Bem, no próximo vídeo, analisaremos métodos estáticos e criaremos nossos próprios deliberadamente, então mal posso esperar para ver você lá Eu vejo você, eu vou te ver em alguns segundos. 91. 6. Métodos estáticos: boas-vindas de volta aos meus desenvolvedores favoritos de Python em um vídeo totalmente novo Neste, aprenderemos sobre métodos estáticos. O que queremos que nossos métodos estáticos façam é que eles acompanhem todas as transações que acontecem. Precisaremos de uma maneira de acompanhar os horários e as datas que queremos. Eu vou voltar ao slide mais tarde. Por enquanto, vamos voltar ao nosso código e configurar as coisas. Em primeiro lugar, para usar a hora e a data, precisamos importar duas bibliotecas importantes. Precisaremos importar a data, hora e precisaremos importar PY tz. Não se preocupe, você verá código estranho agora, mas não fique muito frustrado ou ansioso O código será explicado e ficará evidente quando estiver funcionando. Agora, para alguns de vocês, o YZ pode não ser muito aparente. Você precisa clicar com o botão direito do mouse. E no contexto do show, você deve ver em algum lugar aqui onde ele diz para você instalar ou baixar ou qualquer outra coisa. Basta clicar nisso. Se não funcionar imediatamente, feche o Intelligent e abra-o novamente. Você deve conseguir baixar ou instalar o PYTZ. Não. A próxima coisa que queremos fazer é sempre que criarmos uma nova carteira Bitcoin, queremos criar uma lista de transações. Então, lista Z de transações automáticas. Esta será uma lista de todas as transações, sejam elas depositando, removendo ou retirando, quero dizer, uma lista de E observe que realmente não precisamos argumentar sobre isso. Só podemos defini-la como uma lista vazia apenas para inicializá-la Agora, o próximo passo é que, sempre que fizermos um depósito, precisamos fornecer as seguintes informações no depósito. Depois de mostrarmos o equilíbrio, queremos fazer o seguinte ou, na verdade, como regra geral, é melhor fazer isso aqui antes de realmente mostrarmos o equilíbrio Vou anexar a lista de transações automáticas. Estou simplesmente anexando e agora vejo o que vai acontecer Mais uma vez, eu te disse, não se assuste. Vou abrir os parênteses e escrever PyTzUTC localize Em seguida, abra-o novamente. Ainda estou dentro do horário diurno UTC localizado. Agora, assustador. Eu sei. Então, acrescente o valor para adicionar o que está acontecendo aqui. inesperada. Tudo bem? Qual é o problema? Este está fechado, este também está fechado. Ok. Acho que aqui tem mais um e depois aqui eu preciso. Ok. Lá vamos nós. Ok. Ok. Ok. Então esse está aqui. Então, estamos fornecendo onde anexar nossas listas de transações com um par, e esse casal tem dois elementos O primeiro elemento será a hora e o segundo elemento será a data. Vamos testar este. Vou criar um método aqui que mostrará todas as nossas transações. Então, vou definir a transação show underscore e, em seguida, vou dizer o valor de quatro datas na lista de transações automáticas O valor se for maior do que se o valor for maior que zero. Vou definir o tipo de sublinhado trans para ser igual ao depósito, caso contrário, definiremos o tipo de transação como igual ao saque Eu vou fazer a quantidade multiplicada igual a menos um. Novamente, isso fará sentido mais tarde, mas por enquanto só precisamos fazer isso. Você tem que confiar em mim. Então, finalmente, aqui, vou dizer que quero imprimir um campo de substituição. Dentro do campo de substituição, terei valor e seguida, outro campo de substituição onde terei o tipo de transação. Em seguida, outro campo de substituição ou em outro campo de substituição e esse campo de substituição será aberto, esses parênteses hora local foi substituída pela data do campo como fuso horário nem sempre fornece sugestões, mas aí está. Como você pode ver, criamos tudo isso. Vamos tentar testá-lo. Vou duplicar esses depósitos e fazer cerca de 2223565 Então, eu vou fazer para sublinhar Michael. Oh, é carteira. Esqueci que estamos trabalhando com carteiras agora. Aqui, vou apenas imprimir a linha, mostrar as transações e adicionar uma linha extra. Como você pode ver, fizemos esses depósitos. Esses depósitos estão sendo anexados toda vez que fazemos um depósito Ele é anexado à lista de transações com o seguinte código estranho E o valor a ser adicionado à Apple que tem esses dois itens. Vamos ver o que isso parece e, em seguida, vamos detalhá-lo quando eu escrevo Click e executo, veja o que obtemos. Na verdade, vou apenas Doug na parte inferior. Fizemos todas as adições das transações e também fizemos um saque aqui, 122, depósito em 2020, 3669, data de 01:22 48 mais esse número estranho mais Este é o horário de Greenwich. E, finalmente, temos a hora local que era 42248. Então, esta é a minha hora local em que estou atualmente. Agora, se esse número for muito grande para você, o que você pode fazer é fazer o seguinte valor aqui. Podemos adicionar dois pontos e seis quando eu clico com o botão direito do mouse e corro. Lá vamos nós. Ele apenas adiciona alguns espaços aqui no lado esquerdo para que, como você pode ver, em primeiro lugar aqui, o fuso horário da data forneça a data no meu fuso horário atual mais três. Então aqui no UTC. Agora, ele simplesmente fornece a hora atual, mas precisamos usar o módulo P YZ Vamos nos aprofundar em tudo isso, mas, por enquanto, saiba que isso simplesmente fornece o tempo em que a transação foi feita e a quantidade de dinheiro depositada Então, extraímos ou desempacotamos o casal que está chegando da data e da quantidade ou na variável de data Na variável de quantidade e, em seguida, imprimimos tudo isso. A próxima coisa que queremos fazer é não precisar escrever tudo isso aqui toda vez que quisermos fazer um acréscimo, porque escrever isso é complicado, especialmente se você estiver tentando anexá-lo porque escrever isso é complicado, especialmente se você estiver tentando anexá-lo Uma coisa melhor a fazer é realmente ter algo chamado método estático que resolva isso. O que é um método estático? Um método estático é um método que pertence a uma classe e não a uma instância da classe. Quando trabalhávamos antes na pessoa, por exemplo, onde tínhamos a minha, minha altura era aplicada às instâncias reais para sublinhar Michael e sublinhar Mas agora temos um método estático que pertence à classe real, não a instâncias individuais. Ele pode ser chamado na própria classe em vez de em uma instância da classe. Mesmo que possamos chamar qualquer método na classe, temos que fornecer a instância na qual queremos fazer as transações ou as modificações de qualquer coisa. Por exemplo, quando calculávamos minha altura interna, tínhamos que fornecer o eu em que estávamos trabalhando. Mas agora, com métodos estáticos , podemos simplesmente aplicá-lo, por exemplo, à carteira Bitcoin. E vamos ver isso daqui a pouco. Um método estático é definido usando o decorador de método at static Vou te mostrar daqui a pouco o que é o decorador. Obviamente, não se autodenomina, porque é aplicado à classe real. Vamos criar um método estático que retornará a hora atual em nosso código. Aqui no topo, mesmo antes ou no topo acima dele. Como isso é uma estática, faremos o seguinte. Eu vou dizer na estática. Estático, ok, não vai aparecer agora. Espere. Vamos primeiro definir o sublinhado atual Sublinhe a hora, vou remover self daqui e devo ver o método estático sendo sugerido para mim. Falarei sobre por que estamos usando sublinhados mais adiante nesta seção, mas, por enquanto, vou dizer que a hora do sublinhado UTC é igual à data e hora UTC, exatamente o que estávamos E então eu retornarei yz localize a hora UTC. Lá vamos nós. Agora, na verdade, estamos retornando essa longa linha e podemos removê-la. Estrondo. Lá vamos nós. E mova isso também. Aqui eu posso simplesmente digitar a carteira Bitcoin, fazer a hora atual. Lá vamos nós. Então, tornamos tudo muito, muito mais simples. Olha, na verdade estamos ligando para o horário atual da aula. É isso que o torna um método estático. Quando escrevo, clique e corro, aí está, recebo a mesma saída mas agora com um tempo um pouco diferente. Espero que você tenha entendido a parte estranha. Está aqui, qual é a data do horário UTC? E, meu Deus, tão confuso Não se preocupe, essas são coisas padrão que são usadas. Posteriormente, nos aprofundaremos neles. Mas, como sempre, essas são coisas que precisamos entender. Superficialmente, é claro, se você estiver mais interessado em entendê-las agora, você sempre pode ir às três escolas W ou simplesmente pesquisar o que quiser no Google. Mas agora, com tudo isso resolvido, a próxima coisa a fazer é obviamente mostrar também os saques, porque atualmente temos apenas os depósitos Seu desafio será acrescentar novamente. Sempre que retiramos de nossa carteira. Também queremos acrescentar a lista de transações. Certifique-se de chamar o método estático de horário atual. Forneça também o valor a ser subtraído, que deve ser enviado negativamente Parte muito importante do desafio. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, como você conseguiu isso? Depois de fazermos esse desafio, essa linha de código aqui, que é multiplicada por menos um, fará muito mais sentido Em primeiro lugar, na retirada, assim como fizemos antes. Vamos anexar nossa transação. Vamos ter selfsactlistpend. Teremos a hora atual da carteira Bitcoin, o valor a ser subtraído. E, como eu disse, vai ser negativo, exceto isso Agora, se eu rolar para baixo, vamos fazer alguns saques e movê-los entre os depósitos e as retiradas E, na verdade, farei algo assim e removerei 243 Eu acho que isso é demais. 120? Sim, acho que estamos removendo muita coisa aqui. Deixe-me depositar cerca de 50. Eu não sei E vamos remover cinco e depois retiraremos 200. Ok. Então eu acho que é bom se eu clicar com o botão direito do mouse e correr, vamos ver. Tudo bem, lá vamos nós. Então, vamos ver se eles correspondem ao que fizemos. Então, 122 depósitos, 50 depósitos, saque cinco, saque. Depósito de 120, depósito e retirada de 235. Então, tudo se encaixa exatamente como fizemos antes. Acho que isso é bastante autoexplicativo, não há muito o que dizer, mas o que finalmente precisamos explicar é esse valor multiplicado por menos Por isso, criamos o show transaction que lidaria com transações, sejam elas saques, sejam depósitos Se o valor que temos da lista de transações, digamos que esteja aqui. Ok. No depósito, se obtivermos esse item na lista de transações, verificaremos o valor a ser adicionado. Se for positivo, significa que foi um depósito. Se for negativo, porque observe o valor a ser subtraído precisa ser maior que zero Então, enviamos o negativo. É um LS, o que significa que o valor é negativo, será um saque. E vamos multiplicá-lo por menos um para obter uma saída mais limpa Então, em vez de ver aqui -234 ou -65 ou qualquer outra coisa, I -120 e menos cinco não parece Não parece bom e também não faz nenhum sentido. -120 retirados. Sabe, 120 com sorteado, vamos lá, faz muito mais sentido. É por isso que temos esse valor multiplicado por menos um e exibimos tudo isso Então, muito obrigado por assistir. Espero que tenham gostado. Espero que não tenha sido muito confuso, especialmente com essas linhas de código aqui Eu sei algo novo, algo louco. Tudo o que estamos aprendendo é novo. Mas é por isso que eu disse que a seção exige muita concentração. Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, veremos a acessibilidade dos atributos e entenderemos por que esse método estático tem um sublinhado por trás dele Então, eu vou te ver em alguns. 92. 7. Acessibilidade de atributos: Bem-vindo de volta aos meus desenvolvedores favoritos de Python. Neste vídeo, aprenderemos sobre acessibilidade de atributos. Mas antes de fazer isso, precisamos analisar um problema evidente que temos em nosso programa que temos em nosso programa que pode não ter sido aparente Vou rolar meu código para baixo aqui e vou remover todos esses depósitos e saques. Ou talvez eu apenas os comente apenas para mantê-los de lado. Vamos simplesmente deixá-los. Está tudo bem. Podemos adicionar o que quisermos mais tarde. O que vou fazer é dizer que a carteira Michael deposita 100 e depois vou dizer que a carteira Michael retira 150. Então, por que isso é um grande problema? Bem, se eu escrever Clique e eu corro, veja o que eu recebo, a quantidade total de BTC é 50, desculpe, é 200 e então a quantidade total de BTC é 50. Mas se você observar as transações, verá que tudo o que fizemos foi depositar 100 nesta data e depois sacar 150 nessa Portanto, o problema aqui é que, se alguém olhar seus extratos bancários ou seus extratos de Bitcoin , seus depósitos e saques, verá que você depositou 100 e depois retirou 150 Então, como isso é possível? Algo não bate certo e, obviamente, você está pensando agora, bem, isso é porque tínhamos um saldo inicial de 100. Mas isso não aparece aqui. Isso não aparece em nossas transações. E isso deve mostrar que devemos ser capazes de ver o que aconteceu inicialmente, qual foi o saldo inicial. Portanto, será um desafio para você depositar o depósito inicial. Portanto, certifique-se de que, assim que criarmos uma carteira, tenhamos uma transação adicionada à lista de transações. Se você quiser vencer esse desafio sozinho, não é um desafio fácil Você terá que pensar de forma muito criativa sobre o que deve fazer, mas dê o seu melhor, teste, veja o que funciona e veja o que não E então, se você precisar da dica dentro do construtor Inet, a lista de transações não deve ser inicializada Se você entrar no código, verá que a lista de transações é inicializada com dois colchetes voltados um para o outro, que significa que não há nada É uma lista vazia, mas não queremos que fique vazia. Preferimos ter a hora atual, novamente usando o método estático que criamos da última vez com o saldo enviado como o primeiro elemento. O primeiro elemento deve ser um par, com o primeiro item desse casal sendo a hora atual e o segundo item sendo o saldo. Assim como fizemos com qualquer vídeo normal de depósito positivo no momento. E vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Não é um desafio fácil para aqueles que tentaram fazer isso sem nenhuma dica. Eu parabenizo você É muito importante tentar sem nenhuma dica. Aqueles que viram a dica e conseguiram fazer isso. Também é muito bom se você não conseguiu fazer isso. Eu quero que você se concentre muito corretamente. Portanto, a ideia é replicarmos o que estamos fazendo aqui mesmo no anexo da lista de transações Queremos começar com a lista de transações não vazia, mas com a hora atual bloqueada pelo Bitcoin e o valor a ser mas com a hora atual bloqueada pelo Bitcoin adicionado Vou simplesmente copiar isso e colar aqui. Mas em vez do valor a ser adicionado, vou ter o saldo. Isso deve fazer sentido. Se eu escrevo, clique e eu corro, veja isso. 100 depositados nesta data, 100 depositados nesta data e 150 retirados nesta Agora, se alguém vê sua declaração de Bitcoin ou olha para a cadeia de blocos para ser mais preciso, verá, ok. Então, houve um depósito de 100%. Depósito de 100 e, em seguida, você retirou 150. Tudo bem. Então 50 é o saldo restante que essa pessoa tem. Ótimo, parabéns. Mas ainda há um grande problema aqui que não abordamos ou não tentamos resolver. Se eu fizer o seguinte, eu digo, saldo de Michael com sublinhado da carteira é igual a 360, então a carteira Michael mostra o saldo, veja o que obtemos Onde está? Onde está? Ah, hein. Olha isso aqui. Pouco antes de mostrarmos as transações, eu realmente tenho 360. E se eu duplicar esse código e tentar executá-lo após as transações, é ainda pior Porque olha isso. Eu fiz um depósito de 100%. Outro depósito de 100, retirei 150 e, de alguma forma criei 360 Bitcoins. No final das contas, louco, isso definitivamente não é algo que gostaríamos de ter Não queremos que as pessoas possam acessar facilmente nosso saldo e alterá-lo. A pior parte ainda é que eu posso fazer esse -360 , que é como quebrar completamente tudo o que sabemos sobre dinheiro, sobre tudo Então, obviamente, não queremos que isso aconteça. Precisamos garantir que ninguém possa acessar esses atributos por meio de nenhuma instância. E para fazer isso, precisamos fazer uma pequena mudança. E isso é adicionar um sublinhado atrás da balança aqui Feito isso, obviamente, você pode ver que há muitos lugares em que precisamos fazer alterações antes de eu ir e fazer as mudanças. Para cada um, clicarei duas vezes na balança e pressionarei Control. Ou você verá que agora todos os saldos em todos os lugares estão selecionados Agora vou simplesmente copiar isso, colar aqui e fazer um sublinhado Agora eu posso selecionar, substituir tudo, mas há alguns deles que eu quero excluir. Como essa e essa. Esse, por exemplo. Essa. Essa. Essa. É isso mesmo. Lá vamos nós. Agora eu posso substituir tudo, bum, vamos lá. E todos eles têm um sublinhado. Você pode estar pensando, bem, como isso nos ajuda? Bem, primeiro de tudo, vou removê-los. Esquecemos de excluir esses e agora , digamos que alguém esteja tentando acessar nosso saldo e modificá-lo Ele fará como Michael e depois digitará de forma equilibrada. Ele não vê que temos o saldo de sublinhados. Vamos fazer isso de novo. Ele tenta sublinhar o equilíbrio. Ele acha que é inteligente, mas, novamente, nada aparece. Agora, obviamente, se ele fizer isso, ele eventualmente quebrará nosso código. Essa não é uma solução perfeita. Lá vamos nós. Então, se eu clicar com o botão direito do mouse e correr, pronto. Você pode ver que eles ainda podem acessar. Mas pelo menos esse sublinhado tem a capacidade de esconder nossos atributos Agora, alguns de vocês podem estar rindo neste momento. Eu tive estudantes que zombam dessa estratégia de se esconder porque, sim, isso não vai parar como um hacker incrível Obviamente, existem outros freios e contrapesos neste momento que podem ser usados por um desenvolvedor para garantir que uma pessoa ou uma pessoa mal-intencionada não acesse o código Mas essa é uma solução rápida e fácil que oculta as funções ou os atributos que você tem Os atributos confidenciais que você não quer que outras pessoas acessem. Como o sublinhado por trás da hora atual. Então eu prometi que lhe diria o que isso faz, e aí vamos nós. Você pode ver que, na hora atual, temos o sublinhado. Tem o mesmo significado que aquele que está por trás da balança. Por exemplo, você pode começar a adicionar vários sublinhados. Três ressalta a pessoa que está tentando acessar. Quantos sublinhados essa pessoa tem? Louco? Então, vamos lá. Espero que você goste. Espero que você tenha entendido a importância de ter um sublinhado De agora em diante, provavelmente teremos muitos de nossos atributos sensíveis, todos com sublinhados por trás deles. Muito obrigado por assistir. Espero que você goste. E nos vemos no próximo vídeo, onde importaremos e manipularemos dados usando getters e setters Talvez eu ainda não tenha certeza se estou brincando com o curso, verificando o que é bom, verificando o que não está. Muito obrigado por assistir e nos vemos no próximo vídeo. 93. 8. Importando dados de manipulação: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, vamos nos aprofundar e ver o verdadeiro poder da programação orientada a objetos ao fazer com que vários arquivos se comuniquem entre si A primeira coisa que precisamos fazer é criar um novo projeto, que será nosso jogo no arquivo, eu vou para um novo projeto, vou para o próximo. E aqui eu vou chamar isso de jogo oop. E certifique-se de selecionar o arquivo adequado. E, em seguida, clique em Concluir. Sim, essa janela. Lá vamos nós. A primeira coisa que vou fazer é criar um novo arquivo Python Esse será o jogador. Pressione Enter, vamos lá. Certifique-se de chamar esse arquivo de Player com um P pequeno porque vamos criar uma classe dentro que tem um P grande que é o player. Mas também vamos nos certificar de digitar o objeto aqui. Agora, se você não digitar o objeto, isso não causará nenhum erro, não causará nenhum problema em seu código. Mas precisamos nos acostumar a ver isso. Isso é chamado de herança. E veremos mais de perto a herança em vídeos posteriores, mas, por enquanto queremos apenas herdar o jogador do objeto Mas, para dizer a verdade, cada classe que criamos até agora herda do objeto de classe Isso não é necessário, mas eu só queria mostrar como será a herança e começar a trabalhar com ela Você pode até mesmo conferir a classe do objeto mantendo pressionado controle e clicando nessa classe para ir até o objeto da classe. E essa é a classe base da hierarquia de classes. Quando chamado, exceto nenhum argumento, etc., etc. Você pode ver funções como a in it dentro dessa classe e de outras funções ou outros métodos que usamos. Vamos fechar isso e voltar para o player. Aqui, vou criar o construtor, definir o It, e o jogador simplesmente terá um nome Então, teremos um nome próprio e será igual ao nome vidas iguais a três. O jogador terá três vidas. O nível próprio será igual a um e o Self Xp será igual a zero. Vamos lá, com isso resolvido. Agora que estabelecemos esse player de classes, vou criar outro arquivo Python que chamarei de principal E esse será o corpo principal do nosso código. Não vamos escrever nenhuma classe neste arquivo aqui, mas vamos importar as classes de fora Deixe-me mostrar o que quero dizer com isso. Primeiro de tudo, vou importar, importei o reprodutor de arquivos. É por isso que era muito importante garantir que o nome do arquivo estivesse com um P minúsculo ou P minúsculo e o nome da classe estivesse com um P grande . Estou importando o arquivo aqui, então vou dizer player, sublinhado Michael E, novamente, você pode nomear seu jogador como quiser. Você não precisa chamá-lo de Michael. E nós vamos dizer, eu vou mandar Michael. Lá vamos nós. O que fazemos aqui a partir do arquivo, estou pegando o player da classe e enviando Michael que será o nome exigido no construtor aqui Então eu vou dizer que quero imprimir o nome do jogador. Para fazer isso, o jogador Michael duplique esse nível de jogador E isso não funciona a menos que eu diga, porque eu acredito. Você pode me permitir fazer isso? Sim, nível do jogador. Lá vamos nós. E eu vou remover a arte porque o nível é um número inteiro, é um número É por isso que precisaremos de um campo substituto. Se eu escrever, clique, aí está. O nome do jogador é Michael, nível do jogador é um. Estabelecemos algumas coisas. Mas também podemos mudar a forma como importamos o arquivo digitando o seguinte Em vez de importar apenas o player, posso fazer o seguinte Posso dizer pela importação do jogador. Jogador. Agora, não preciso digitar isso toda vez, quero criar um novo player. Posso apenas dizer jogador Michael. Agora, o que podemos fazer é começar a criar classes massivas em arquivos separados e, em seguida, simplesmente executá-las no arquivo principal, que nos economizará muito espaço Em seguida, queremos modificar alguns dos nossos atributos. Aqui, vou imprimir o seguinte. Vou ter uma estrela multiplicada por 50. Vou imprimir as vidas dos jogadores deixadas em pontos, no campo de substituição e, em seguida, o jogador Michael vive Então eu vou dizer que meu jogador Michael vive menos igual a um E então eu vou duplicar isso, controle de linha D, shift Alt Mova-o para baixo para que possamos ver o que está acontecendo quando eu clico com o botão direito do mouse e pronto. vida dos jogadores à esquerda é três, então a vida dos jogadores à esquerda é duas. Mas o problema com isso é que, se eu fizer isso muitas vezes, se eu selecionar essas duas ou três linhas e duplicar algumas vezes, você provavelmente sabe o que vai acontecer nesse momento Se eu escrevo, clico e corro, boom, olha só, eu ganho vidas menos duas Obviamente, não é algo que queremos, algo que gostaríamos de consertar. Algo que poderíamos corrigir, por exemplo, com um sublinhado por trás de vidas, que impedirá a pessoa que está tentando acessar nossas Mas há uma maneira muito melhor de lidar com isso, e essa forma é usando a propriedade. Portanto, em Python, ao contrário de outras linguagens, você tem a capacidade de acessar atributos sem getters ou setters Em outros idiomas, isso é mal visto. Mas em Python, você é considerado um adulto responsável Então eles pensam, ok, mesmo que o usuário tenha acesso às lives, não vai passar por isso. Mas às vezes o usuário passa por isso, ele usa os atributos diretamente. Eles não são adultos responsáveis, então temos uma maneira de mitigar isso Essa forma será por meio de propriedades, coletores e definidores Antes de tudo, vamos entender o que é uma propriedade. As propriedades são uma forma de definir métodos que são acessados como atributos. Assim como estamos acessando vidas agora, podemos criar métodos que nos permitam acessá-las da mesma forma que acessamos vidas. Eles permitem que você defina um método que é invocado quando um atributo é acessado e outro método que é invocado quando um atributo é Quando digo invocado, quero dizer chamado ou você chama uma função, mas um método, mas nessa situação ele se chama invoke, called Podemos ter dois métodos, um para acessar o atributo e outro para definir o atributo. O atributo acessado é chamado de getter. E um atributo definido é chamado de setter. As propriedades são definidas usando a função de propriedade incorporada. Vamos ver como isso funciona. E eles são atribuídos a um atributo de classe usando o decorador de propriedades do anúncio, semelhante ao decorador estático que vimos antes Também temos o decorador de propriedades artísticas por exemplo, em nosso jogo Faria sentido criarmos um criador e um vencedor para nossas vidas, porque nunca queremos adicionar muitas vidas ao nosso jogador, nem queremos ter vidas negativas Um setter, nesse caso, nos permitiria definir os valores corretamente Então, a primeira coisa que precisamos ter certeza é que nosso valor para o criador e o fornecedor, que são as vidas, está um pouco escondido em nosso código no player. As vidas terão um sublinhado por trás, então estão um então E, novamente, como eu disse, essa não é uma forma de impedir que alguém acesse o atributo. Isso apenas impede que apareça facilmente para o usuário ou outros programadores A próxima coisa que precisamos fazer é criar os setters. E os que entram aqui, eu vou definir vidas de sublinhado para sublinhado e eles só terão o eu e retornaremos vidas de si mesmos , Em seguida, também definiremos o conjunto de sublinhados. Underscore mora aqui. Vamos ter o eu e também as vidas. Agora posso dizer que as vidas de self dot underscore são iguais. Para vidas. Agora precisamos criar a propriedade. Depois de fazermos essas duas definições aqui, vou dizer que vidas são apenas vidas, não sublinhadas Vidas. Vidas justas são iguais à propriedade. A propriedade tem esses parênteses e obteremos vidas e definiremos vidas Agora você notará aqui que temos um aviso. E isso é um aviso sério porque não queremos ter esses parênteses, precisamos removê-los Agora, por que às vezes temos esses parênteses e às vezes não? Como regra geral, sempre que você tem esses parênteses, isso significa que você está realmente Nessa situação, não estamos chamando a função, estamos definindo a propriedade. Estamos dizendo que sempre que o usuário tenta usar vidas, na verdade está usando o get lives e o set lives se estiver tentando receber as informações que está usando no get lives. Se eles estão tentando definir as informações, estão usando o set lives, o setter e o getter Vamos testar isso. Se olharmos para trás em nosso código, você verá que não temos um erro, embora tenhamos mudado isso de uma vida para uma vida de sublinhado E vimos que, quando fazemos isso, isso não deve mais funcionar. Mas isso acontece no código principal, ainda temos tudo funcionando. Se eu escrevo, clique e corro, veja só, tudo funciona perfeitamente bem. Mas há medidas extras sendo tomadas para chegar a esse ponto. E eu vou provar isso para você. Em primeiro lugar, vou remover alguns deles. Eu só vou ter essas três linhas aqui. Eu vou dizer que eu quero imprimir, ei, eu estou no ganhador Ei, eu sou D setter. Quando eu escrevo, clique e corro, veja o que eu recebo aqui. Primeiro de tudo, vamos linha por linha. Quando eu disse que o jogador impresso vive para a esquerda, jogador Michael ou o jogador sublinhado Michael vive. Em primeiro lugar, quando chego a esse ponto e disse vidas, entramos na classe de jogadores, rolamos para baixo e descobrimos que ela vive como uma propriedade e estamos tentando obter as informações Então ligamos para o Get Lives e foi assim que obtivemos, ei, estou ganhando Recuperamos as informações, as enviamos de volta e conseguimos imprimir as três vidas dos jogadores que sobraram Então, fizemos com que esse jogador destacasse Michael dot lives menos igual a um. O que aconteceu aqui? Bem, o que aconteceu é que temos um Getter Setter. E então pegamos o getter e colocamos as vidas do jogador à esquerda . Essa linha de código pertence ou tem essas duas Mas as vidas dos pontos precisavam dessas duas linhas. Então, primeiro precisou do getter e depois do setter. Por que isso? Bem, porque antes de tudo precisávamos obter essa informação. Quando definimos o sublinhado para o jogador Michael Lives, obtivemos as informações, fomos até o coletor e recebemos as E então fizemos um menos igual a um e enviamos para o setter aqui Ok. Eu sei que é um pouco confuso Esse não é um conceito fácil de entender. Eu até me lembro de ter tido problemas com isso anos atrás quando comecei a aprender sobre decorações e montadores. Eu fico tipo, ok, isso não faz sentido. Como isso funciona? Quando você faz isso uma, duas, três vezes, você finalmente se acostuma. É muito importante saber como essas coisas funcionam. É por isso que eu tinha essas impressões para fins de depuração, mas por enquanto vou comentá-las com uma barra de controle Mas lembre-se de que isso funciona perfeitamente bem se eu tentar duplicá-los várias vezes. Como você pode ver, tudo funciona perfeitamente bem. Agora temos um aviso aqui, não pode ser configurado. É um pouco confuso, porque mesmo que nosso código ainda seja o mesmo, ele está um pouco confuso. Mas não se preocupe, tudo funciona perfeitamente bem. Mas ainda há o problema de ter menos uma e menos duas vidas e até zero. O jogador deveria ser isso. Neste momento, tenho um desafio para você definir o setter. Certifique-se de que as vidas nunca fiquem abaixo de zero. Teste-o de forma principal, basicamente isso é tudo. Onde você deve se certificar disso? Você deve se certificar disso nas vidas do set, no setter real que criamos Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você pode ver aqui, temos a definição de nosso setter. O que vou fazer é, antes de tudo, mover essa para o fundo. Na verdade, eu só vou deletá-lo. Eu não quero mais isso aqui. Eu vou dizer que se as vidas que estamos tentando estabelecer sublinham vidas, se as vidas são maiores que zero, então eu vou definir as vidas estritamente maiores que zero Quero dizer, você poderia dizer maior ou igual a porque em zero você está realmente morto. Mas não contabilizamos isso. Mas tudo bem por enquanto. Vamos apenas dizer mais do que qualquer outra coisa, o que significa que, se estamos definitivamente no negativo, vou imprimir que vidas não podem ser negativas e vidas pessoais são iguais a zero. Lá vamos nós. Observe que eu disse viver sozinho. Estou me referindo às vidas que estão aqui. Estou configurando isso. Se você voltar à nossa página principal e clicar com o botão direito do mouse e corrermos, veja o que obtemos. Vidas não podem ser negativas, vidas não podem ser negativas duas vezes. Quando tentamos fazer menos um e menos dois, isso não funcionou e recebemos uma impressão impressa cuja vida útil não pode ficar abaixo vida útil não pode A última coisa que eu quero fazer aqui, mesmo que este vídeo seja muito longo, obrigado por ter paciência comigo. E esse é o sublinhado SDR. Então, se quisermos imprimir tudo sobre nosso jogador de uma forma coesa, como o nome, as vidas, o nível e tudo mais, podemos fazer algo assim Você pode criar o SDR de sublinhado. Boom, aqui podemos devolver o que quisermos. Vou retornar o nome para pontos, campo de substituição. Eu vou te mostrar algo que é um pouco estranho Eu vou dizer zero nome estranho, não é? Isso vai fazer sentido. Então eu vou dizer vidas em pontos, campo de substituição de zero vidas Então eu vou dizer nível zero do campo de substituição de nível E então P, campo de substituição de dois pontos, zero Xp. E então, no final, vou dizer formato e eu. Isso é simplesmente o substituto do eu. O self é substituído aqui e, em seguida, estamos usando o nome do ponto. O zero representa o eu aqui todas as vezes. Isso é só um pequeno atalho, algo que eu queria te mostrar. Se cobrirmos o SDR, podemos examinar a documentação É basicamente sempre que você quer imprimir algo. Agora, por exemplo, em vez de dizer todas essas coisas ou tentar imprimir o nome e o nível em linhas separadas, posso simplesmente fazer o seguinte. Imprima o jogador Michael. Estrondo. E veja a saída. Ok, qual é o problema? Duas vidas, sem XP de atributo. Como é chamado? Xp, p pequeno que eu escrevo em Big XP. Eu peço desculpas. Vamos executá-lo novamente. Ok, sem problemas. Então aí está. Nomeie vidas, nível e XP. Senhoras e senhores, espero que tenham gostado, espero que não tenha sido muito confuso. Desculpe pelo longo vídeo, mas essas são coisas muito importantes que estamos investigando Eu vou te ver no próximo vídeo. Espero que, se seu cérebro não explodiu até agora, analisaremos gerenciamento e a estruturação de dados, que significa que nos aprofundaremos nas propriedades e Te vejo no próximo vídeo. 94. 9. Gestão e estrutura de dados: Bem-vindos de volta, meus desenvolvedores favoritos de Python. Neste vídeo, analisaremos mais detalhadamente o gerenciamento e a estruturação de dados , como você viu antes. Agora temos vidas definidas e ganhamos vidas que nos permitirão evitar certos problemas. Vou removê-los por enquanto porque já sabemos que tudo funciona. Mas, novamente, como dissemos, isso não impede que alguém faça o seguinte. Fazendo o sublinhado de vidas, por exemplo, e configurando para -13 Então, se imprimirmos Michael, lá vamos ver que lives é -13. Novamente, isso é um problema, mas apenas para alguém que quer realmente invadir isso é um problema, mas apenas para alguém que quer realmente invadir Ao ver um sublinhado ao tentar obter um atributo, você deve perceber que o desenvolvedor o colocou lá para protegê-lo E se usado diretamente, pode causar problemas em algum lugar no código. Mas agora vamos criar mais propriedades para nosso jogador para tornar a classe mais dinâmica. E quando digo que vamos criar algumas propriedades, quero dizer que você deve começar a criar algumas propriedades obtendo e configurando o XP. Crie um getter e um setter para o XP. Para quem define o XP, queremos aumentar o nível toda vez que o XP chegar a 100 Certifique-se de adicioná-los à propriedade e testá-los em sua página principal. Ok, pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, como você conseguiu fazer isso? Então, a primeira coisa que precisamos fazer é voltar ao player, deixe-me encerrar isso. O XP deve se tornar XP sublinhado. Precisamos proteger nossa experiência. E então eu vou rolar para baixo, aqui até o final, e definir o sublinhado, sublinhado P e retornar self Xp Em seguida, vou definir o conjunto de sublinhados. Sublinhado xp, ele só terá o eu, o xp, sublinhado dois Sublinhado, eu vou ter self xp plus igual ao Agora, se self dot underscore xp for maior que 100 do que self self level, defina o nível mais igual a um e o self x será menos igual Agora, por que fazemos o menos igual a 100? Porque, obviamente, queremos remover 100 P. Então, aqui, vamos fazer o seguinte. Eu vou dizer que X P, big X e Big são iguais à propriedade na propriedade. Sublinhado obtenha X P. Conjunto de sublinhados P. Pronto. Criamos o getter e o setter para nosso XP O primeiro simplesmente retorna o XP que temos. O segundo pega um argumento, que é o XP a ser adicionado, e o adiciona ao XP com sublinhado automático Agora você notará que esses dois setters são um pouco diferentes, enquanto aqui, simplesmente definiríamos as vidas do sublinhado como iguais às vidas diretamente enviadas Enquanto estiver aqui, o XP com sublinhado automático é feito com um plus igual ao Além disso existem duas maneiras diferentes de criar um setter. Por exemplo, aqui, se o jogador sublinhar Michael vive, teríamos menos igual Na verdade, obteríamos a propriedade e, em seguida, removeríamos menos um dela e a enviaríamos para as vidas definidas, e isso definiria as vidas sublinhadas Mas agora vamos fazer as coisas de forma um pouco diferente. Primeiro de tudo, deixe-me, vou comentar isso, tudo aqui, vou comentar tudo aqui, vou comentar e mover para o final. Então, aqui, vou começar a remover o Xp. Eu vou dizer que Michael Xp. E, na verdade, sei o que é ter um X grande, um pouco complicado aqui, x pequeno, vamos torná-lo pequeno Acho que é melhor aqui. Teremos Xp igual a 20, depois imprimiremos Michael. E então teremos uma impressão digital. Se eu clicar e observar aqui, eu não disse mais igual ou menos igual, como fiz Eu disse que é igual. Agora, esses 20 serão enviados para o XP. Para adicionar, ele será adicionado ao sublinhado P e, em seguida, verificaremos se o sublinhado XP é maior que 100. Para que possamos subir de nível. Quando eu escrevo, clique e deixe-me adicionar isso aqui no lado direito. Lá vamos nós. Em primeiro lugar, podemos ver sublinhado do jogador Michael x é igual Não preciso imprimir isso, só quero que tudo faça sentido. Pronto, p. 20. Agora, se eu duplicar isso três vezes, talvez adicione um pouco mais. Então, aqui 32. Vamos duplicar isso novamente. Aqui vou adicionar 88. Se escrevermos, clique e corramos, veja o que obtemos. Como você pode ver, em primeiro lugar, adicionamos os 20. Aqui estão os 20. Adicionamos mais 20, então agora temos 40. Adicionamos 32, temos 72. Então, quando adicionamos 88, tivemos os seguintes 72 mais 88, boom, 160, e então -100 subimos de nível e ficamos com Então, tudo parece estar funcionando corretamente para nós. Então, vamos lá. Senhoras e senhores, também criamos o XP e vimos uma maneira diferente de criar o setter Vamos agora ver uma maneira diferente de realmente criar o getter e o setter Se eu voltar aqui, obviamente quero ter certeza de que o nível também está protegido com um sublinhado E então eu vou rolar até aqui e vou dizer na propriedade, este é o decorador de propriedades que eu te contei antes Vou definir o nível self, que retornará o nível de autosublinhado aqui Eu vou dizer que no definidor de níveis, eu estou criando o setter eu estou criando o setter Defina o nível do nível aqui. Eu vou dizer que o nível de sublinhado automático é igual ao nível A razão pela qual estou vendo igual aqui e não mais igual é por causa da forma como estamos aumentando o nível e aqui com mais é igual a um, da mesma forma que fizemos com as vidas Ok, espero que isso faça sentido. É um pouco diferente aqui. Agora, observe que são os mesmos get que retorna que e para o conjunto são os mesmos. Lembre-se de que, quando estávamos tentando acessar uma propriedade como P, simplesmente dizíamos player Michael e, automaticamente, o programa saberia se nosso Python saberia se deveríamos usar o getter e o setter O mesmo princípio é válido aqui. Temos o mesmo nome para nosso criador e nosso coletor, mas eles fazem coisas diferentes com base no que é fornecido a eles ou em como são usados Agora, se voltarmos ao código principal, clicarmos com o botão direito do mouse e executarmos, teremos a mesma saída se tentarmos fazer o seguinte. nível de Michael é igual a seis, por exemplo, imprima Michael, clique com o botão direito , execute e pronto. Então, na verdade, estamos configurando isso diretamente e não precisamos da impressão aqui. Lá vamos nós. O nível é seis. Então, na verdade, estamos configurando isso. Nós não o aumentamos. Na verdade, nós o configuramos. Senhoras e senhores, espero que tenham gostado deste vídeo. Desculpe se aquele aplauso foi muito alto. E no próximo vídeo, veremos a herança e como ela funciona, por que funciona, por que é necessária e por que é tão importante E vamos continuar construindo o projeto que temos atualmente. E você verá no final que esse projeto pode realmente ser expandido. Estamos apenas fazendo coisas superficiais para entender tudo corretamente, mas você sempre pode aumentar seu conhecimento, expandir os projetos, expandir tudo. Muito obrigado por assistir e nos vemos no próximo vídeo. 95. 10. Herança 101: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, veremos a herança, que é uma parte muito importante da compreensão da programação orientada a objetos Você vai ver herança o tempo todo. Agora, neste vídeo, não vamos criar herança, vamos entender a herança e E no próximo vídeo, criaremos as subclasses e assim por diante Mas, por enquanto, o que é herança? E Python É um mecanismo que permite que uma classe herde propriedades e métodos de uma classe mãe Se você criar determinadas propriedades, certos métodos, certos atributos em sua classe inicial, poderá então atribuí-los a um filho ou a uma subclasse no futuro Então você pode herdar, veja, é daí que vem a palavra Uma classe secundária é definida herdando de uma classe principal usando a sintaxe da classe mãe da classe filha Semelhante à forma como criamos o player. Se você se lembra, dissemos entre dois parênteses que herdamos O mesmo vale quando se trabalha com qualquer relacionamento entre pais e classes infantis. A classe filha também pode definir novas propriedades e métodos, ou até mesmo substituir aqueles que eles herdaram da classe principal Então, digamos que a criança herde da, da classe dos pais Eles herdam o nome da família, por exemplo, mas podem substituir o nome, certo Eles podem ter outro nome. Esse é apenas um exemplo muito simples. Eles podem herdar o dinheiro, mas podem substituir ou adicionar métodos na forma como gastam esse Esse é apenas um exemplo amplo. Veremos muito mais sobre isso mais tarde. A herança permite a reutilização do código e reduz a quantidade de duplicação do Então, digamos que você tenha uma aula em que, eu não sei, talvez mais tarde veremos um exemplo daqui a pouco. Então, digamos que você tenha uma classe que é um mamífero, por exemplo, que um mamífero dá à luz Qual é a forma normal de um mamífero dar à luz? Em vez de ter que criar o método para os gatos darem à luz, por exemplo, você pode transformar o gato em filho da classe dos mamíferos e depois herdar o Esse exemplo é muito estranho, mas continuarei neste momento investindo. Neste exemplo, o gato herda o método de nascimento da classe dos mamíferos E agora, em vez de recriar o código, em vez de duplicar o código para o gato, podemos simplesmente herdar da classe principal de mamíferos E a classe principal também é conhecida como superclasse ou classe base Você verá essas duas definições para uma classe principal em vários lugares. E a classe filha também é conhecida como subclasse ou classe derivada Com isso resolvido, vamos dar uma olhada em uma estrutura comum para herança Então, por exemplo, começamos com um animal. Esse animal teria um nome e uma espécie, correto? O cachorro ainda teria um nome e sua espécie seria cachorro. O gato teria um nome, uma espécie e a raça. Agora, obviamente, os cães também têm uma raça. Mas só por causa deste exemplo, vamos imaginar que apenas gatos, neste caso, teriam uma raça e observariam como eles herdam de um animal Então temos cavalos e pássaros. Todos eles têm nomes e todos têm espécies. Mas o gato também tem uma raça. Então, agora podemos criar uma subclasse do gato. Por exemplo, o gato siamês, que tem um nome, uma espécie, sua própria raça E o Ames tem um método especial que lhe permite pular, o que é diferente de todos os outros. Novamente, por causa deste exemplo, eu sei que cavalos podem pular. Além disso, temos o gato de Bengala, que pode miar Então você tem a Esfinge que pode atacar. Como você pode ver, essa é uma estrutura de herança em que os gatos herdam dos animais e o CM é Bengala e Sphinx E os cavalos também teriam suas próprias subclasses e assim por diante Espero que você tenha entendido como isso funciona. Caso contrário, recomendo que você leia os slides novamente. Depois de fazer isso, você tem um desafio à sua frente. Você precisará criar um inimigo. Primeiro de tudo, crie um novo arquivo Python, chame-o Novamente, minúsculas por dentro. Crie a classe inimiga com os seguintes atributos: eles devem ter nome, saúde e vidas. Esses são os atributos um método causa dano com um argumento, dano sofrido. Remove o dano sofrido da saúde. E se a saúde ficar abaixo de zero, tire uma vida e imprima tudo usando um sublinhado e sublinhado Pause o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Vou entrar em um novo arquivo Python e criar um novo arquivo Python que vou chamar Dentro do inimigo, vou definir um inimigo de classe. Não vai herdar de nada. Um inimigo não é escrito assim. Lá vamos nós. É assim que você lê inimigo? Sim, acho que sim. Em seguida, vamos definir o em que ele terá um nome. Vamos apenas definir um valor padrão para o nome caso alguém não o forneça. A saúde é igual a zero. Deixe-me remover isso aqui. A saúde é igual a zero e a vida é igual a uma. Então eu vou dizer que o nome do ponto próprio é igual ao nome. Autosaúde é igual a saúde. O eu vive igual a vidas. Lá vamos nós. Em seguida, definiremos o dano sublinhado e faremos com que o sublinhado do dano seja Em primeiro lugar, vamos calcular o sublinhado de saúde restante. A saúde é igual à autosaúde menos os danos sofridos E vamos verificar se a saúde restante é maior ou igual a zero, que significa que ainda estamos vivos. Vamos dizer que a autosaúde é igual à saúde restante e simplesmente imprimiremos uma pequena coisa aqui. Danifique dois pontos, campo de substituição, dano sofrido. Em seguida, diremos que a saúde permanece em dois pontos, campo de substituição E vamos dizer autosaúde. Lá vamos nós. Se você quiser, você pode até mesmo adicionar novamente aqui. Talvez seja bom voltar, eu não sei. Veremos a aparência da saída e ajustaremos de acordo. Mas também precisamos verificar se a saúde é menor que zero, então o eu vive menos um E vou definir um SDR onde retornarei campo de substituição do meu nome zero Nome, vá lá, vive substituindo o campo zero. Talvez eu devesse ter dito a saúde primeiro. Não sei saúde, dois pontos, campo de substituição zero. Formato de saúde próprio. Vou apenas pressionar Tab ou pressionar Enter. Pressione Enter aqui para que possamos ver tudo. E aperte duas abas ou duas entradas. E aí está, temos a classe inimiga, que faz com que o construtor sofra danos, tire uma vida e também tenha o STR de volta à nossa posição principal, e também tenha o STR de volta aqui no topo do inimigo importado O que temos aqui? Na verdade, vou comentar tudo isso também. Vou comentar até este ponto. Estrondo. Apenas mantenha Michael lá para o caso de precisarmos dele. Em algum momento, vou criar um monstro de sublinhado inimigo e vou dizer que é igual ao inimigo O inimigo será apenas um monstro genérico por enquanto. Claro que você pode se divertir com essa saúde, eu acredito. O que há no construtor? Eu posso ver? A saúde será 12 e as vidas continuarão em uma. Por enquanto, vou imprimir o monstro. Vamos pegar um, aí está. Nós sabemos o que? Vamos sofrer oito danos aqui. E uma impressão seria boa quando eu clicasse com o botão direito do mouse e corresse. Vamos dar uma olhada na saída que eu recebo. Tudo bem, parece bom? Saúde restante. O que é esse monstro inimigo? Ok, acho que não precisamos disso. Como estamos imprimindo, podemos imprimi-lo no final. Então, clique com o botão direito e execute. Vamos ver o que obtemos. Hm, leve danos à saúde restante. Deixe-me verificar novamente. O que eu fiz aqui? Parece um pouco estranho. Não temos, também não entramos em uma nova linha. Vamos tentar essa saída agora mesmo. Saúde restante zero, você pode ver aqui, saúde zero. Talvez porque estamos exatamente quando é maior ou igual a zero, ok, então talvez devêssemos matar nove vidas aqui. O que acontece? Tudo bem, lá vamos nós. Então, saúde zero ou vidas são zero. E nem mesmo imprimimos os danos sofridos e a saúde restante, porque não os temos aqui. Não tenho certeza sobre essa saída, honestamente. Quer saber, eu só vou removê-los. Eu acho que não é muito bom. Talvez adicione como um pipeline. Lá vamos nós. Parece muito melhor com o gasoduto, na minha opinião. Como você pode ver, o monstro inimigo vive um. E esquecemos de adicionar os dois pontos. Pequenas coisas que precisamos ajustar aqui. E eu estou apenas mostrando o processo de criar coisas. Às vezes você precisa voltar, basta ver o que aconteceu, o que podemos melhorar. Note que ainda temos um problema aqui em que a saúde não foi tomada. Porque quando o removemos, não o ajustamos. Ainda temos saúde, mas não temos nenhuma vida. Novamente, esse não é um programa perfeito. O que você pode fazer é , por exemplo, definir a autosaúde como igual a zero. Se você quiser isso, talvez faça mais sentido. Mas, novamente, você também deve levar em consideração que, ao remover uma vida, deseja recuperar toda a saúde original? Você quer armazenar essa saúde? Talvez em algum lugar em algum tipo de variável do inimigo. Portanto, muitas perguntas, muitos pequenos detalhes que precisam ser resolvidos antes que essa seja uma verdadeira classe inimiga ativa para um jogo real Mas, por enquanto, isso é o que temos e vamos continuar com isso. Muito obrigado por assistir. No próximo vídeo, vamos criar Orcs. Vamos criar ônibus de succo como subclasses para nosso inimigo E eles terão seus próprios métodos e uma mudança nas propriedades. Muito obrigado por assistir. Espero que gostem e nos vemos no próximo vídeo. 96. 11. Criando subclasses: Bem-vindos de volta, meus programadores de Python favoritos. Neste vídeo, vamos criar subclasses e sobrecarregar algumas funções Vamos começar e entender do que se trata tudo isso. Primeiro de tudo, vamos criar uma subclasse do inimigo em vez de apenas ter inimigos genéricos Na verdade, teremos um orc aqui. Vou seguir em frente e criar uma nova classe Orc. E vai herdar do inimigo, como você pode ver, assim como fizemos anteriormente, acredito que com o jogador aqui Então, o jogador herda do objeto, o Orc herda do inimigo Vou simplesmente adicionar um passe aqui. Portanto, o passe nos permitirá não escrever nenhum código porque eu ainda não quero definir nada no Orc Eu simplesmente queria herdar do inimigo, o que agora me permitiria entrar no inimigo principal e do inimigo, importar a classe inimiga e também importar o Orc Agora vou rolar para baixo e aqui mesmo onde estamos criando o monstro inimigo. Eu também vou criar o Orc. Ou, na verdade, você sabe o que, vamos criá-lo aqui. Orc um é igual a Orc. O nome dos Orcs será Saga. Serão 16.2 Você notará que temos saúde e vidas. Para a saúde e a vida , e depois imprimiremos um. Se eu ler um clique, vejo o que recebo. Aqui, eu tenho o nome do inimigo que é Saga com duas vidas com saúde 16 Mas o que está acontecendo ou o inimigo que você pode ver aqui não tem nada nele. Mesmo que não haja nada na classe Or, ainda podemos criar um objeto do tipo Or e imprimir com o formato. Por quê? Porque Orc herda de um inimigo aqui Quando dizemos Or saga 162, basicamente o que acontece é que criamos o objeto Or e ele pega todas essas informações e as envia para dentro Mas e se a Orc tivesse um construtor próprio? Isso vai ser um desafio para você. Você precisa criar outro Orc no Maine, criar outro Orc e chamá-lo de Zc e adicionar 22 pontos de vida E eu não sei quantas vidas. Talvez você possa simplesmente deixar as vidas abertas. Mantenha a transmissão ao vivo. Lá vamos nós. Às vezes, preciso revisar meus desafios. Mantenha o campo de vidas vazio para obter o valor padrão. Agora crie um in It ou um construtor na classe Orc e mantenha-o vazio Significa simplesmente passar, adicionar um passe. Pause o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta. Como você conseguiu lidar com isso? O primeiro elemento do desafio foi criar outro Orc com 22 pontos de vida no principal Aqui eu vou criar Orc two. E eu vou dizer que Orc two é Orc 0.22 E então eu vou imprimir um ou dois quando escrevo, clique e corro até lá, chamado Azog lives Agora, o que não é tão útil aqui é que poderíamos ter feito desses orcs apenas inimigos e teria sido o mesmo resultado Obviamente, queremos ter mais funcionalidades na subclasse que acabamos Vamos voltar ao arquivo do inimigo. E sob o Or, vou definir sublinhado, sublinhado nele E eu simplesmente vou ter um passe aqui. E vamos ter apenas um atributo ou um parâmetro e salvá-lo. Agora, observe imediatamente que algo estranho é que a chamada It to it for superclass Algumas coisas aqui são um pouco estranhas. Mas se você voltar para a rede principal e corrermos, mesmo antes de corrermos, você pode obviamente ver que há problemas aqui por causa de todos os avisos Mas vamos tentar clicar com o botão direito do mouse e executar de qualquer maneira e ver o que obtemos. Lá vamos nós. Recebemos um erro. Estávamos esperando isso, menos. Então você pode ver que tudo estava funcionando bem até começarmos a criar o Orc aqui mesmo Podemos ver que na linha 18, podemos até clicar aqui. Linha orc igual ou interna. São necessários dois argumentos posicionais, mas quatro foram apresentados O que está aqui leva o eu e o nome, mas nós lhe fornecemos 44. Primeiro, um será o objeto, que seria o eu, e depois o nome, a saúde e a vida erram imediatamente. Qual é o problema? Isso ocorre porque o Python não encontra mais o método init da classe inimiga e só pode usar aquele fornecido ao Que, se voltarmos aqui, não tem atributos suficientes esperando ou argumentos suficientes para serem para passá-los aos atributos. Há duas maneiras de mitigar esse problema. Ou, para ser mais preciso ao chamar o construtor do inimigo que está no topo O primeiro é fazer o seguinte. Aqui, vou simplesmente digitar um inimigo.in. Ele pressionou Tab, e você verá que aqui eu posso passar pelo Self. Posso passar o nome e dizer que nome é igual a nome. E então eu posso dizer que vidas são iguais a uma. E esses são apenas valores padrão e a saúde é igual a 20. E deixe-me fazer isso um pouco maior. Podemos ver agora que tudo será passado para o topo. Mas ainda temos algum aviso? Não, isso deve ser bom. Então, no início, quando escrevo clique e executo, ainda tenho alguns erros aqui, mas quando escrevo clique e executo, opa, aí Ainda temos um erro aqui. E a razão para isso é que ainda não fornecemos os argumentos aqui no, nele do. Para tornar esse evento ainda mais simples, o que eu posso fazer é dizer super aqui Essa é a maneira mais comum de usar isso em vez de si mesmo. Podemos simplesmente removê-lo. E agora podemos usá-lo assim. Se voltarmos para a execução principal com o botão direito do mouse, ainda teremos um erro. O que basicamente fazemos aqui é remover esses dois e remover este. E agora, quando escrevo Click e corro, veja isso. Eu criei Shaga e criei Azoc. E eles têm uma saúde de 20 e vidas de um. E, obviamente, se você quiser ter controle real sobre a quantidade de saúde e a quantidade de vidas, precisará adicioná-las aqui mesmo aos argumentos apresentados ao int. Mas é basicamente assim que a herança funcionaria. Como chamamos a superclasse, sempre use super com parênteses Usar o inimigo aqui não é a maneira mais comum. Agora vamos continuar e criar um método que esteja somente dentro do Or. Aqui, vou definir um método. Essa será a cobrança, defina a carga. Simplesmente pegará a si mesmo e imprimiremos aqui o campo de substituição. Vamos cobrar o nome próprio, você acusou. Lá vamos voltar para o Maine. Vamos imprimir aqui algumas estrelas multiplicadas por 50 E vamos ter Orc um e duplicar isso e vamos Or dois Quando eu escrevo, clique e pronto, Sag. Muito bom. Agora, para o último exemplo, vamos tentar algo um pouco diferente. Eu vou criar um inimigo. Apenas um inimigo aleatório que estará fora da classe inimiga. Não vamos mandar nada. Então eu vou dizer inimigo, uma carga. Veja isso quando tento clicar com o botão direito do mouse e correr. Veja esse rastreamento de carga inimiga. O atributo inimigo não tem carga de atributo, carga de método ou qualquer coisa relacionada à carga. A carga não pode ser usada por um objeto inimigo. Essa é uma distinção muito importante a ser feita. Não podemos subir. Quando se trata da hierarquia, só podemos ir para baixo O inimigo não pode usar a carga, o Or pode usar a carga e o Orc também pode sofrer danos Aqui, se eu tentar dizer Ou um sofrer dano, aí está, você pode ver que eu posso realmente danificar o Orc E quando escrevo Click, ainda tenho esse problema aqui. Vou comentar isso. Boom, lá vamos nós. Danos, cuide da saúde. E a saúde restante é 18. Posso usar métodos da classe que eu herdei, ou seja, como Orc herdado Ou pode usar métodos que estão no inimigo. Mas o inimigo no inimigo não pode usar métodos da classe. Ou muito obrigado por assistir. Espero que você goste. No próximo vídeo, veremos a implementação de métodos dinâmicos, onde nos aprofundaremos em como todo esse uso de métodos funciona Te vejo na próxima. 97. 12. Implementação de método dinâmico: Bem-vindo de volta aos meus desenvolvedores favoritos de Python. Neste vídeo, veremos a implementação de métodos dinâmicos. E também significa que vamos mudar o comportamento de certos métodos. Mas antes de começarmos, começaremos este vídeo com um desafio em que você precisará criar sua própria subclasse Crie uma classe pycobus que obviamente será herdada da classe inimiga, o que significa que o sucobus será filho Adicione um construtor a ele e chame a superclasse importada do, ou seja, importada para a principal E crie um objeto saccopus chamado astarroth. É basicamente isso. Pause o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta. Como você conseguiu lidar com isso? Basicamente, não deve ser muito difícil. Aqui, estamos apenas criando uma classe que será a súccabus que ela herdará do inimigo interno Vamos definir o que está nele. Simplesmente terá um nome. E então vamos fazer dentro do super, também podemos fazer o seguinte. Podemos dizer “súcubo” nela. Então diremos que nome é igual a nome, vidas são iguais a três e saúde é igual a dez. Lá vamos nós. Agora que temos o súcabo, vamos voltar para o principal Vou imprimir apenas uma linha vazia, e vou copiar isso, colar aqui. E então basta ter outra linha vazia. E eu farei o mesmo. E isso porque eu quero começar a diferenciar entre diferentes seções do nosso código, porque a saída está começando a ficar muito longa aqui, eu vou ter o succobusecup Antes de tudo, é claro, precisamos importá-lo de succobus. Então, aqui, eu vou dizer que eu tenho o súcoco igual ao súcoco Lá vamos nós. Eu disse que vai ser astro. É asosaroth? Sim, exatamente. Vou imprimir sacobuswe. Vamos ver o que obtemos quando escrevo. Clique e eu corro. Estrondo. Lá vamos nós. O nome do inimigo Astaroth vive três pontos de vida. Então, aqui eu vou dar a Saco um dano e nós vamos sofrer o dano de três e vamos imprimir um de súcopo Deixe-me copiar isso e fazer mais algumas vezes. Lá vamos nós. E então trocaremos três e também teremos acho, nove e depois nove e talvez, não sei, outros nove. Acho que se eu clicar com o botão direito do mouse e correr, veja o que eu recebo, sofro dano três pontos de vida restantes sete e depois vou viver três, saúde sete, vidas duas , saúde zero, saúde zero. Mas isso é porque tínhamos essa proteção aqui onde dizíamos a saúde zero sempre que a saúde restante não fosse maior ou igual a sete. Se tentarmos fazer isso de novo, eu ainda o tenho na cópia na base? Lá vamos nós. Vou mudar isso para mais nove e mais nove. Quando escrevo Click e corro, veja só, estou tendo vidas negativas. Mesmo viver em zero não é algo bom. Isso é um problema no nosso jogo. Precisamos modificar um pouco nossa classe no inimigo. Vou criar um atributo extra aqui que será o eu que é sublinhado Em primeiro lugar, isso será igual a falso. Essa variável mudará sempre que morrermos para uma verdadeira. Agora, ao sofrer dano, vou adicionar uma coisa extra aqui dentro de, em outro lugar. Vou verificar se a vida pessoal é maior que zero, depois vou imprimir, ok. Não, obrigado. Vou imprimir o seguinte. O nome Self Dot está morto, senão. Vou imprimir o nome. Se vidas ainda forem maiores que zero, vamos imprimir o nome próprio, vida. Então aqui vamos dizer que aqui vamos dizer que morto é igual a, lá vamos nós. Agora, aqui, quando escrevo Clique e corro, lá vamos nós. Astroth, a última vida, a última vida está morta. Está morto. Mas ainda estou ganhando vidas menos uma Portanto, esse problema ainda não foi corrigido. Então, se voltarmos para o inimigo sob ataque de dano, o que vou dizer aqui é que vou adicionar uma condição extra. Se não, underscore dead. Ok, precisamos que o eu esteja morto. Se não estivermos mortos, sofreremos todo o dano. Caso contrário, neste nível, cuidado com a indentação, caso contrário, imprima o nome do ponto próprio já está morto. Lá vamos nós. Então ele já está morto. Não continue como se estivesse destruindo ele. Você deve saber a essa altura que o inimigo já está morto. E eu executei o arquivo errado. Então, quando eu clico com o botão direito do mouse e corro aqui, lá vamos nós. Perdeu uma vida, perdeu uma vida, perdeu uma vida, e então ele já está morto. Então, as vidas, não estamos mais morrendo. E você notará que isso foi muito mais fácil do que entrar em todas as classes A. Digamos que mude os individuais. Agora podemos simplesmente mudar um, sofrer dano e ele é aplicado a todos. Por exemplo, o succopus agora imprime o nome do scecabus e diz que é isso, veja como nosso código é veja como Em vez de sofrer danos em cada classe e depois ter que mudar isso, certificando-se de que tudo funcione. Podemos fazer isso na classe principal, na classe alta, na classe dos pais. Note também que temos esses símbolos estranhos, esses discos e setas apontando para baixo, e esse disco e uma seta apontando para esse disco e uma seta E falaremos sobre isso no próximo vídeo, quando falarmos sobre a substituição de métodos de subclasses Te vejo em alguns segundos. 98. 13. Substituindo métodos de Subclass: Bem-vindo de volta aos meus desenvolvedores favoritos de Python. Neste vídeo, veremos a substituição de métodos de subclasses e entenderemos o que são substituição de métodos de subclasses e entenderemos esses anéis estranhos com flechas A primeira coisa que queremos fazer é dar aos nossos orcs a habilidade de realmente bloquear um ataque. Então, se eu rolar até aqui até os Orcs, vou definir o método bloqueado Só vou importar um módulo aleatório, vou importar um módulo aleatório, então você deve saber qual é o módulo aleatório neste momento. E eu vou dizer que se rand aleatório de 1 a 9 for maior ou igual a seis, então vou imprimir o seguinte Eu vou dizer que self dot name bloqueou um ataque. Também vou retornar true, assim como aprendemos na seção anterior, em que os métodos ou funções que usamos para chamá-los de funções porque estavam fora da classe. Mas as pessoas o usam de forma intercambiável, então não se preocupe com Você pode chamá-las de classes, você pode chamá-las de funções. Mas, como regra geral, quando está dentro de uma classe, é um método Quando está do lado de fora do código da janela , é uma função. Assim como as funções, os métodos dentro das classes também podem retornar o valor. Isso retorna verdadeiro. Se realmente bloqueamos outra coisa, retornaremos false e adicionaremos um espaço extra aqui. Agora que temos essa mensagem bloqueada, desculpe, método, vou voltar para o Maine e vou comentar tudo aqui porque queremos mantê-la limpa e fresca, sem nada dentro. Eu quero uma coisa aqui. Eu só quero um que seja, aí está, vou imprimir esse Orc quando eu escrever, clicar e correr Pronto, Enemy Name Saga Lives One Health 20. Agora, o que vou fazer é criar o seguinte. Eu vou dizer Or Do está morto, enquanto o Or não está morto, eu vou dizer Or Damage e o dano será um. Agora, se eu escrever, clicar e pronto, vamos lá. Continuamos sofrendo danos até que Saga morra. Mas não queremos que a sálvia morra. Bem, pelo menos não queremos que ele morra tão rápido. Queremos que ele use a nova habilidade que fornecemos, que é o bloqueio. E isso vai ser um desafio para você. Você precisará ajudar um orc. Certifique-se de que Snagaor Saga, ou o que quer que você tenha chamado seu Orc, para ser honesto com você, só sofra danos quando não tiver bloqueado um ataque Uma pequena dica, mesmo que eu não a tenha escrito. Isso deve acontecer depois de passar pelo vídeo agora mesmo e começar o desafio Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Isso é bem simples. Dentro do loop Y, vou dizer que se não estiver ou estiver bloqueado, boom. Ou sofra danos. Agora, se eu escrever, clicar e correr, devo ver o seguinte: bum, aí está. Dano sofrido após dano sofrido, então Saga bloqueou, sofreu dano, dano sofreu dano E então bloqueamos, depois sofremos um pouco de dano, e depois bloqueamos até que finalmente Saga está em dívida Como você pode ver, alguns dos ataques foram bloqueados. Agora, está tudo bem, mas não queremos que isso aconteça do lado de fora, ou seja, de forma geral. Queremos que esse comportamento mude enquanto ainda estamos dentro de nossas aulas. Para fazer isso, precisamos ignorar o método de sofrer dano no Orc e fazer com que ele faça algo um pouco diferente em nossos inimigos, aqui mesmo, dentro do Vou rolar para baixo e vou criar ou definir o dano do sublinhado E você verá imediatamente que recebo sugestões em. Eu pressiono Tab e vou imprimir, ou vamos colocar em maiúsculas, esse dano está no Orc, Inimigo. Agora sabemos que, se sofrermos dano, estaremos sofrendo danos dentro do Orc Observe que quando eu defino isso de sofrer dano, eu tenho esse círculo com uma seta apontando para cima. Se eu passar o mouse sobre ele, ele diz que substitui o método Se eu chegar ao topo e sofrer dano, você verá que eu também tenho esse disco com uma seta branca apontando para baixo dizendo que o Orc está sobrecarregado Então, basicamente, o que isso significa, sobrescrito significa que foi escrito ou modificado de uma maneira diferente em uma subclasse É quando temos uma seta apontando para baixo aqui, podemos ver que ela é substituída pelo Orc e a sacabusca pelo inimigo Nós temos o dentro, no saccobus, temos um nele. Então, foi anulado em dois lugares. E também podemos ver aqui uma subclasse de Orc e do súcopo, que nos mostra uma subclasse, nos mostra quando algo foi superado , etc., etc Agora, a questão é por que temos uma seta vermelha apontando para cima Isso não significa que o sublinhado STR Sim, ele substitui o método no objeto. Lembre-se de que cada classe que criamos herda do objeto. Mantenha pressionado o controle. Clique em sublinhado e sublinhado STR e não estou aceitando, nenhum uso foi encontrado. Ok, muito bom. Vamos tentar encontrar o objeto nós mesmos. Objeto, mantenha pressionado o controle, vá até o objeto e role para baixo até encontrar o sublinhado Será que ele vai achar mais rápido se eu fizer isso? Não. Nos embutidos, sublinhe o sublinhado SDR. Lá vamos nós. Então, como você pode ver agora o SDR foi substituído do objeto, mas nem precisamos dizer que o inimigo herda do objeto, cada classe sempre herdará Tudo bem, então eu espero que você tenha entendido o que está acontecendo e aqui eu espero que você tenha entendido por que temos esses discos. É bem simples. Nada muito complicado. Agora, se voltarmos para o Maine clicarmos com o botão direito e corrermos. Uh hein, interessante ver isso. Então, parece que criamos um loop infinito. Então, se eu pausar isso e voltar ao topo, você verá que Haga bloqueou Então, Haga está bloqueando alguns dos ataques, mas continuamos sofrendo danos sem parar. Por que isso? Bem, porque agora, quando sofremos dano, quando chamamos o Orc de sofrer dano, na verdade estamos causando dano ao Orc porque o estamos usando em um objeto Orc Então, está usando o dano causado por esse Orc. E você verá que causar dano ao Orc simplesmente imprime isso e não faz mais nada. Precisamos modificar isso em nosso dano sofrido para que ele realmente cause dano ao inimigo. Eu vou dizer que, se não for o que é chamado de bloqueado, aí está. Eu vou dizer super. Abra parênteses, Orca sofrerá danos, desculpe-me, peço desculpas. Sofre danos porque estamos chamando o supervisor e precisamos enviar o dano sofrido. O dano sofrido é igual ao dano sofrido. Agora, no geral, eu não preciso mais dessa linha. Eu posso removê-lo, deslocar, e quando escrevo, clique e corro, bum, aí está. Você pode ver que temos todos esses ataques, ou alguns desses ataques sendo bloqueados. E isso está acontecendo dentro da classe, em vez de ter que fazer isso do lado de fora. Como você pode ver, alguns dos ataques estão sendo bloqueados, o que é ótimo. Nosso jogo está realmente entrando em jogo. Mas digamos que, neste momento, queremos mudar todos os nossos atributos e torná-los protegidos ou privados. Bem, o que podemos fazer é ir até o inimigo e mudar cada um deles. Ou podemos fazer isso de uma maneira muito melhor. Posso, por exemplo, clicar duas vezes no nome, manter pressionado o controle R e, em seguida, alterá-lo para sublinhar o nome em todos os lugares em que ele aparece E eu posso clicar em Substituir, todos, exceto alguns deles, você talvez não queira substituir. Então você pode clicar neste e excluir este. E eles devem ser alterados. Você pode, o que mais temos? Eu acho que esse você pode excluir. E essa. E observe que eu tenho a opção de excluir pressionada aqui. Esse também. Isso torna nossa vida muito mais fácil. Agora, aperte o botão de substituição, pronto, aí está. Tudo foi substituído. Você o fecha com o pequeno x aqui no topo. E olha isso. Agora, o nome está protegido, exceto por uma discussão inesperada. Oh, nós deveríamos ter excluído esses também. Eu peço desculpas. Agora você pode ver que está muito melhor. Vamos tentar executá-lo e ver se funciona. Sim, é verdade. Agora vou te dar um pequeno desafio. Não é um desafio oficial, mas certifique-se de que tudo aqui também esteja protegido contra interferências externas com um pequeno sublinhado Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, veremos as aninhadas, o que significa que serão subclasses dentro de outras subclasses dentro de Uau, eu vou te ver em alguns segundos. 99. 14. Subclass aninhados: Bem-vindos de volta, meus colegas programadores de Python. Neste vídeo, aprenderemos sobre subclasses aninhadas Ou, para ser mais preciso, aprenderemos como criar subclasses a partir de outras subclasses Então, vamos começar. Primeiro de tudo, vamos criar uma subclasse do Or. Aqui temos os inimigos, temos o scopus, mas tanto esses orcs quanto os succobuses herdam do esses orcs quanto os succobuses herdam Agora vamos criar o Orc, vamos criar uma classe, que é o uruk Oi, é assim que está escrito. Eu pesquisei no Google. Vou enviar o Orc para dentro do, para dentro do Or Eu vou definir o que está nele. E nós vamos ter um nome, esse nome será enviado. Eu vou dizer que super abra os parênteses em boom. E diga que o nome é igual ao nome. Lá vamos nós. Também vou dizer que a autosaúde é igual a 140. Qual é o problema de digitação na palavra k? Tudo bem. Ninguém sabe escrever corretamente. Chi, é um nome inventado. Uma coisa a ter em mente é que quando você liga para o supervisor, não é o original que é chamado, ou seja, o original está no inimigo. É o que está na classe Or, aqui mesmo. Isso está sendo chamado quando eu faço o super. E você pode até mesmo verificar novamente passando o mouse sobre isso e verá que ele foi substituído em Ork. Lá vamos nós. É aqui que foi sobrescrito. Em seguida, gostaríamos de anular também o dano sofrido para que não seja tão ruim para o Or In. Aqui vou definir o dano sofrido Também vou me certificar de ligar para a superclasse e sofrer danos. Mas a única diferença é que vou dividir o dano sofrido dividido por dois. Ou seja, lembre-se de que a divisão garantiu a remoção de qualquer coisa após o ponto flutuante. O dano recebido é basicamente dividido por dois e depois enviado para o dano recebido. Então, com isso resolvido, podemos até rastrear, até mesmo olhar para isso. Agora isso é interessante. Veja agora, ao sofrer dano no Orc, temos duas flechas, 1.1 apontando para baixo A parte inferior significa que o dano da estaca foi sobrescrito no Ork, enquanto o apontar para cima indica que ele substitui um método do inimigo E se você estiver confuso sobre onde o dano da aposta está sendo sobrescrito, mantenha pressionado o controle e clique em Take Damage Sim. Ok, isso não é o que eu queria. Vamos ver. Segurando o controle e clicando no método real. Uma espera. Você pode clicar no disco. Lá vamos nós. Esse é o dano sofrido que foi sobrescrito dentro do Orc. Muito bom. Agora, onde isso anula o dano causado ao inimigo E também podemos usar isso descendo e olhando porque temos duas substituições No entanto, acima disso, ele é substituído no Or e no Or Vá para o Or, Ou vá para o Or. Como você pode ver, estamos superando. Agora, há um desafio que você precisa fazer, que é ajudar Sauron. Se você não sabe o que é Lord Ring, provavelmente está pensando no que diabos está acontecendo nessas aulas. Mas Sauron é o homem mau por trás de todas essas travessuras, as orchis e tudo mais, mesmo que isso não seja baseado mesmo Mas de qualquer forma, na importação principal da classe Orch, crie um novo chi, crie um novo chi, chame ele de blurts e imprima Aplique algum dano a ele, mas, por favor, não o mate ainda, porque precisamos imprimir os objetos novamente. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Em geral, adicionarei a e adicionarei o chi aqui também. Vou comentar essas linhas porque quero mantê-las limpas. Estamos testando o chi. Eu direi que um é igual ao. O nome vai ser lets. Vou imprimir um, depois fico com o dano, 12, imprimo. Se eu escrever, clique e corro, primeiro lugar, o nome do inimigo alerta vive uma vida, 140. Lembre-se de que isso não afeta apenas a saúde, como normalmente acontece aqui. Na verdade, queremos ter uma saúde de 140. Isso é muito importante. Então aqui imprimimos a varanda, desculpe, já fizemos isso Então, sofremos danos. Então, você pode ver que sofremos o dano, consumindo seis pontos de vida restantes (134) E então imprimimos e essa é a saída que notamos, embora o dano devesse ter sido 12, removemos apenas seis. Isso porque, como dissemos antes, pegamos o dano, dividimos por dois e enviamos para o topo. O dano sofrido, que é chamado no arquivo, é dividido por dois enviados para o dano sofrido. Boom, é enviado aqui. Chamamos o que estiver no topo. E observe que também temos a chance de bloquear. Esse é outro desafio não oficial para você tentar bloquear ou tentar fazer vários ataques Tente danificar os alertas ainda mais vezes e veja se ele pode realmente bloquear alguns desses ataques. Seria muito interessante saber isso. Pronto, ele realmente bloqueou, e você pode ver que a saúde dele permaneceu a mesma. Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, aprenderemos sobre polimorfismo, afastando do jogo atual que estamos criando Mas o polimorfismo é muito importante, um pouco mais complexo Mas definitivamente vale a pena. Muito obrigado por assistir. Espero que você goste. E nos vemos no próximo vídeo. 100. 15. Polimorfismo: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, veremos o polimorfismo. O que diabos é mesmo polimorfismo em Python? Não é só em Python. Outras linguagens de programação que possuem programação orientada a objetos têm polimorfismo Nem todos, mas a maioria deles. Polimorfismo. Polimorfismo é um conceito em programação orientada a objetos que permite que objetos de classes diferentes sejam tratados como objetos de uma classe mãe comum Ele permite que uma única interface seja usada para representar objetos de vários tipos diferentes. Um exemplo de polimorfismo e Python é o uso do operador plus para adição, mas ele só pode ser usado para mas ele só pode ser usado É o mesmo operador, é o sinal de mais. Pode ser usado para adicionar dois números, ou pode ser usado para cateinar duas cadeias Ou pode ser usado para criar uma única lista grande a partir de duas listas. Aí está. Esse é um ótimo exemplo de polimorfismo. Ele permite um código mais flexível e extenso. Vamos testar o polimorfismo no meu código. Aqui, vou abrir um de nossos projetos recentes, que foi a programação orientada a objetos. Nesta janela, se você se lembra, estávamos trabalhando com a carteira Bitcoin. Vou criar um novo arquivo Python que vou chamar H ou HP Hp significa Harry Potter. Lá vamos nós. Entrar. E, como sempre, o Intellij simplesmente congela por Vou usar a magia da edição para ver você mais tarde, quando isso funcionar. Aqui estamos. Primeiro de tudo, vou criar uma classe de feiticeiro. Vou defini-lo e teremos apenas um nome e diremos que o nome sublinhado automático é igual ao nome Em seguida, definiremos speak e retornaremos Hello, meu nome é then. Além de autodidata, nome sublinhado, além de eu ser um mago Agradável. Em seguida, definiremos uma classe que é qual, e definiremos uma nela que também terá nome. E diremos que o nome do sublinhado automático é igual ao nome. E definiremos falar. Vamos voltar e eu escrevo olá com um W aqui. Eu vou dizer, bem conhecido, eu sou um plus. Self underscore name plus and I am am, no qual fiz um pequeno ajuste que dirá que foi bem atendido Depende de onde você está neste mundo, talvez você não saiba. Mas essa é uma forma de cumprimentar as pessoas. Acho que é a maneira britânica de cumprimentar as pessoas. Eu posso fazer o sotaque, especialmente com meu nariz escorrendo É por isso que, nos últimos dois vídeos, posso parecer estranho e estou começando porque não consigo respirar pelo nariz Só consigo respirar e falar pela boca. Então, é difícil. Mas de qualquer forma, sei que o nome e depois o fazem uma pequena diferença. Então, sabemos bem a diferença. Em seguida, vamos criar uma função. Essa função estará fora de nossas duas classes. E vou simplesmente remover o espaço aqui. Eu gostaria que fosse mais apertado aqui. Vou definir a introdução introdutória. Vou enviar o personagem que gostaríamos de apresentar e simplesmente retornaremos a fala do personagem. Lá vamos nós. Adicione algumas linhas extras aqui. Eu vou dizer que Harry é igual a um feiticeiro, e ele tem o nome de Harry Potter Harry Potter. Em seguida, imprimiremos a introdução. Em seguida, enviaremos Harry. Em seguida, vou selecionar isso e duplicá-lo ou colar aqui também Outra tirará a mina do joelho e ela será uma bruxa. O nome dela, algumas pessoas pensaram que o nome dela era Hermione antes do lançamento dos filmes, o que é engraçado Também teremos e o nome dele será Ronald Weasley. Precisamos também imprimir Hermione e executar Wesley, aparentemente está Quero dizer Weekly Wiley. Eu não sei Acho que é assim que você escreve Wesley Mas de qualquer forma, aqui se eu escrever Click e executar, veja isso mesmo que estejamos chamando a mesma função. Deixe-me arrastar isso para o lado. Não está me permitindo. Lá vamos nós. Mesmo que eu ache que está bem, parece bom. Olha isso. Embora estejamos chamando a mesma função em nossos personagens, estamos obtendo resultados diferentes Isso é basicamente um polimorfismo em que estamos usando a mesma função mas obtendo comportamentos diferentes Chamamos o mesmo método, que é falar, mas obter comportamentos diferentes a partir disso fala. Acabei de notar mudanças em um pequeno W. Vamos lá. Então, como você pode ver, fala usada em Harry, usada em Hermine, mas tem saídas diferentes E esse é o básico do polimorfismo. Nada muito complexo, obviamente, quando você começa a usá-lo em cenários do mundo real, pode ficar um pouco complicado, mas, como conceito, é fácil. Antes de continuarmos, deixe-me oferecer um pequeno desafio para adicionar trouxas Adicione outra classe que será trouxa. Deve conter um nome que você deve fornecer e um método para falar. Em seguida, crie um objeto trouxa e apresente o novo trouxa. E adicione um método extra que seria lançar feitiços em todas as nossas classes Passe o vídeo agora mesmo e vá fazer o desafio. Ei, bem-vindos de volta, meus colegas programadores de Python. Aqui vamos criar uma nova classe que será Mule. Vamos definir o in, definir o que está nele. Teremos o nome e diremos nome com sublinhado automático é igual ao nome e definiremos a fala Vou apenas copiar isso. Espere, espere, copie isso com base aqui. Muitos espaços. Bem conhecido. Eu sou e sou um trouxa. Boom, lá vamos nós. Ele é só um trouxa aqui embaixo. Vou criar uma nova mugele, que será Emma, que será Emma, e diremos que ela é igual a uma classe trouxa, e ela Imagine com uma caixa maiúscula grande. Vou imprimir uma apresentação, mãe. Se eu clicar com o botão direito do mouse, deve ficar óbvio que, aí está, temos uma outra, oh, deixe-me mudar isso. Eu tenho um olá. Ok, eu vou dizer oi, meu nome é just. Portanto, temos uma saída um pouco diferente, uma palavra diferente. Assim, podemos distinguir facilmente entre as classes usando o método speak. Lá vamos nós. Isso é polimorfismo. Agora dissemos que há também a parte do desafio em que precisamos adicionar um método extra, que é lançar um feitiço para o mago Vou definir o feitiço de sublinhado de lançamento. Ele simplesmente absorverá o eu e retornaremos o nome próprio lançaremos um feitiço quando, não tenho ideia se é assim que você o escreve, mas tenho certeza de que é, é o Laos De qualquer forma, vamos copiar isso e dar para a bruxa também. Na verdade, vamos fazer algo divertido. E aqui vamos dizer dois grandes S. Ok? E então vamos copiar isso e dar também para o trouxa O que o trouxa deve fazer com o lançamento de um feitiço? Só dirá que deve lançar feitiços O que é o certo aí, voltamos. Transforme-o em um caractere especial. Não precisamos da devolução. E o que diz aqui? O feitiço pode ser estático Tudo bem, isso não é um problema aqui. Vou ter uma impressão, vou fazer o seguinte. Vou imprimir, e precisamos definir o elenco aqui. Envie o personagem. Elenco de personagens. Personagem. Ok. Qual é o problema aqui? Por que não está lançando o feitiço de sublinhado? Ok. Sem sugestões. Não é um problema. Talvez seja simplesmente não reconhecer que o personagem é um desses Está tudo bem. Aqui, quero imprimir o seguinte. Vou imprimir o elenco de Harry, seu Ron. Se eu clicar com o botão direito do mouse e correr Harry Potter, escale Leviosa quando Guardian Leviosa foi escalada E então Ron Weasley escolheu outro Leviosa porque ele é um mago, então ele não tem ideia de como Então, infelizmente, Emma também tentou lançar um feitiço, mas ela é uma mula e não consegue fazer isso Espero que você entenda como o polimorfismo ou tenha entendido como o polimorfismo funciona Não é muito complicado. É apenas uma forma de usar ou nomear nossos métodos da mesma forma em classes diferentes Quero dizer, essa é a compreensão superficial aqui. Mas é um conceito muito importante de se conhecer quando se trata de programação orientada a objetos. Muito obrigado por assistir, espero que você goste. E no próximo vídeo, veremos a composição. Então, vamos ver a diferença entre um e tem um relacionamento. Nos vemos no próximo vídeo. 101. 16. Composição: Bem-vindos de volta, meus colegas desenvolvedores de Python, a um novo vídeo em que falaremos sobre composição em Python E a composição obviamente também está disponível em qualquer outra linguagem de programação que tenha programação orientada a objetos. É por isso que eu disse que esta é uma seção muito importante. Depois de entender a programação orientada a objetos, você poderá se aprofundar em qualquer outra linguagem, se precisar no futuro O que é composição? Em primeiro lugar, a composição em Python é uma forma de criar objetos complexos combinando objetos mais simples O que queremos dizer com isso? Basicamente, é uma classe composta por outras classes em seus atributos. O que significa que um objeto de uma classe contém objetos de outra classe. Leia isso novamente. Ouça isso. Novamente, entenda isso corretamente. Porque herança é um relacionamento. O que significa que o Orc é um inimigo. Mas a composição tem uma relação. É por isso que o componente de classe de outra classe, uma classe, tem seu atributo como outra classe. Vamos ver o que é isso basicamente. Digamos que tenha um inimigo ou tenha um clube. Isso seria uma relação de composição. É ou nos permite modelar relações do mundo real entre classes e objetos. E também ajuda a tornar o código mais fácil e dinâmico. Vamos voltar ao nosso exemplo mágico aqui e ver o que podemos fazer para criar um relacionamento Então, vamos adicionar uma classe de títulos às nossas classes. Por exemplo, como temos um feiticeiro e cada feiticeiro ou que tem um desejo, vamos entrar aqui e eu vou criar uma classe aqui. Eu vou dizer varinha de classe. E eu adicionei seriamente parênteses? E eu vou definir o que está nele. E não vamos ter nenhum nome, não vamos tornar isso muito complexo, vou apenas dizer que o ponto próprio sublinhado w é igual a Holly e, em seguida núcleo do sublinhado automático é igual à Aqui, vou definir o sublinhado na verdade, basta usar porque esse é um que pode ser usado E retornaremos feitos de mais madeira própria com núcleo próprio. Lá vamos nós. Vamos adicionar um espaço extra aqui. E então voltaremos ao mago aqui com o nome, eu vou usar a varinha de sublinhado Essa varinha será igual à classe da varinha. Nós podemos lançar um feitiço. Nós podemos, também podemos usar want com apenas um eu aqui. E então eu vou retornar o nome próprio antes de tudo. Está bem? Ou use um desejo ou usos, porque o desejo escolhe o mago, não o contrário, o desejo próprio Lá vamos nós. Vou voltar ao nosso código principal. Temos o código principal aqui. Vou adicionar uma impressão mesmo que essa saída esteja ficando um pouco longa, mas tudo bem. Onde temos Harry, vamos imprimir Harry quer. Então, quando eu escrevo, clique e eu corro, isso é o que eu recebo. Harry Potter usa carneiro ou desejo feito de madeira como madeira, com núcleo de penas de fênix. Então, como você pode ver, temos uma classe want e um atributo no assistente que é do tipo want. Então isso é um tipo de relacionamento onde estava a herança, é um tipo de Se você ainda não tem certeza, pense que tem um, é um tipo de relacionamento. Vou lhe apresentar um pequeno desafio que pode ajudá-lo a entender isso melhor. Então, os magos também precisam de uma casa. Portanto, crie uma classe doméstica para as quatro casas em Hogwardshd Eles devem ter apenas um atributo, que é o nome da casa, e fazer o nome Griffin Door. Basta definir um nome. Se você quiser se aprofundar novamente, se quiser expandir este exemplo, eu adoraria e, por favor, envie-o para mim Mostre-me como você expandiu a lição. Mas, por enquanto, basta torná-lo Griffin Door e criar um coletor que devolva a Mãe, ele. Se você se lembrar do que é isso, adicione um atributo house à classe feiticeira e tente imprimi-lo, se quiser. Então poste o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Se quiser novamente, aqui vou criar uma classe que é casa. Defina o que está nele. Nada estará aqui. E diremos que o nome próprio é igual a griffin. Faça. Lá vamos nós. E vamos definir get, underscore house, underscore name Esse é o getter de que te falei. Não é o ganhador, no sentido que é um ganhador muito complicado, apenas um ganhador muito fácil e normal Retornaremos o pensamento próprio, aí está, de volta ao mago, teremos uma casa autosublinhada, que será igual a casa Agora o mago tem uma casa e definiremos um método que nos fornecerá as informações da casa. Simplesmente retornaremos self dot name plus belongs to house plus self dot house. E isso está correto? Defina dot house dot get house name. Claro, porque precisamos devolver o nome da casa também. Lá vamos nós. Tudo aqui está pronto. Então, vou rolar até o final e imprimir aqui informações sobre Harry dot get house ou Harry dot house house. Sim, lá vamos nós. Então, se eu escrever Click e correr, veja o que recebo. Deixe-me ter certeza. Ok, vamos expandi-lo. Harry Potter pertence à porta da Casa Griffin. Então, como você pode ver, essa é uma composição em que um mago tem uma varinha. Onde um feiticeiro tem uma casa. Então, tem um relacionamento lá. Não temos nada demais aqui. Então, senhoras e senhores, acho que esse pode ser o fim do vídeo da seção Mais tarde, acredito que vou expandir isso porque realmente adoro programação orientada a objetos. Vamos nos aprofundar. Aprenderemos mais tarde, quando eu atualizar o curso. Mas, por enquanto, espero que tenham gostado. Espero que você tenha entendido. Quero parabenizá-lo por assistir a este vídeo. Você completou o número da seção, eu não sei. Então, parabenize-se. Agora você é de primeira linha. Você sabe como criar classes, você sabe como manipular objetos, você sabe como criar herança Você conhece subclasses, implementações dinâmicas e métodos de substituição Você se aprofundou nos atributos, nos métodos e nas classes Você entendeu muitas coisas. Métodos estáticos, quero dizer, você sabe muito mais do que quando começou na próxima seção. Acredito que vamos passar a entender mais ferramentas de tratamento de dados , como dicionários e conjuntos Estou muito animado para começar com essa seção. Muito obrigado por assistir e nos vemos mais tarde. Tchau tchau por enquanto. 102. Seção 8 - Dicionários e conjuntos | 1. Dicionário 101: Bem-vindos de volta, meus colegas programadores de Python a um novo vídeo e a uma seção totalmente Nesta seção, vamos explorar dicionários e conjuntos Vamos começar com os dicionários primeiro. O que são dicionários? Um dicionário é uma coleção de pares de valores-chave. É muito importante entender isso. Temos chaves e valores. E eles são emparelhados e colocados dentro dos dicionários para criar os itens Cada par de valores-chave em um dicionário é separado por uma coluna e todos os pares estão entre colchetes . Assim como aprendemos listas em que tínhamos colchetes ao redor da lista nessa situação ou com tombadas quando tínhamos Nessa situação, temos colchetes encaracolados. E, obviamente, teremos muitos exemplos mostrando isso, mas você precisa saber isso primeiro. E eles são separados por dois pontos. A chave e o valor são separados por uma coluna. Por exemplo, se tivermos meu dicionário, que é um dicionário igual a colchetes, o que eu disse aqui, ele está entre colchetes Nós temos a chave. Olha isso. A chave pode ser uma string, pode ser um número inteiro, pode ser qualquer coisa Nesse caso, é uma string porque temos aspas duplas Então temos a coluna e, em seguida, temos o valor um. chave um valor um cria o par de valores-chave e é o primeiro item no dicionário. Então temos uma vírgula e, em seguida, temos a chave dois, valor dois separados por uma coluna também E a chave nessa situação também é uma string. O valor também pode ser o que você quiser. Pode ser um número inteiro, pode ser uma string, pode ser qualquer objeto que você quiser A chave é como um rótulo que você pode usar para recuperar o valor correspondente Por exemplo, digamos que eu posso ou tenho esse dicionário, meu **** um, valor 12, valor dois Eu posso usar a chave um para recuperar o valor um. E você verá que essa é uma forma muito útil de recuperar informações É muito mais eficiente e muito mais rápido do que usar listas e tupples As chaves devem ser exclusivas e imutáveis. Essas são duas palavras-chave muito importantes aqui, únicas e imutáveis Por exemplo, as teclas precisam ser sequências de caracteres, números ou podem até ser derrubadas Embora os valores possam ser de qualquer tipo de dados, o valor pode ser o que você quiser. A chave deve ser única e imutável. Eu poderia ter dito que poderia ser o que você quisesse, peço desculpas por isso Ela precisa ser única e imutável, que significa que você não pode fazer com que a mesma chave apareça duas Você não pode ter a chave um e depois ter a chave um. Novamente, isso não causará um erro, mas veremos em alguns exemplos que isso arruinará a eficácia do dicionário Finalmente, você pode acessar o valor de uma chave específica usando os colchetes sobre os colchetes com a Por exemplo, meu dicionário abre os colchetes, envia a chave um e, em seguida, você deve receber o valor um em troca Eu sei que isso é um pouco complicado, especialmente se for a primeira vez lê dicionários Não se preocupe Concentre-se nas ideias principais. Como escrevemos nossos dicionários. Que temos pares de valores-chave, que as chaves são exclusivas e imutáveis e que podemos recuperar os valores usando o rótulo da Esses são os quatro pontos principais nos quais você precisa pensar. Mas basta olhar, chega de teoria, vamos entrar em nosso código e começar a realmente praticar dicionários Vou voltar ao meu código aqui e da última vez que paramos nas aulas, talvez tenhamos parado em algo diferente. Vou continuar atualizando este curso. Não sei o que acontecerá no futuro, mas, por enquanto, vamos arquivar e criar um novo projeto. Em seguida, será o Python. Isto é, antes de tudo, precisamos mudar a localização disso. Estará em nosso curso de Python dentro do código. Sim, lá vamos nós. Vou adicionar outro e vamos chamá-lo apenas dicção, dicionários dicionários Se eu escrevi isso incorretamente, desculpe-me. Sim. Vamos em frente e criemos. Vamos abri-lo nesta janela e devemos estar prontos para ir. Lá vamos nós. A partir daqui, vou criar um novo arquivo Python que vou chamar de underscore Então, vamos encerrar os projetos e começar. Primeiro de tudo, vamos criar nosso primeiro dicionário. Nosso primeiro dicionário vai conter alguns de nossos alunos brilhantes. Teremos as chaves como os nomes das sequências de nossos alunos. Por exemplo, Alice terá uma nota de 90. Então temos Bob, que, ou quem terá 85, terá Charlie, 92, David, 78. E, na verdade, vou copiar isso. Lá vamos nós. Observe que, como David apareceu várias vezes, imediatamente recebemos destaque e graça. Ou antes mesmo de colocarmos a graça, deixe-me copiar isso e depois devolvê-lo para David. Se passarmos o mouse sobre ele, veremos que o dicionário contém chaves duplicadas, David Ok, vamos lidar com isso mais tarde. Mas, por enquanto, vamos devolvê-lo à Grace. David terá 78, Frank terá 88 para Grace. Este é o nosso dicionário. Como você pode ver, temos pares de valores-chave. As chaves são os nomes dos alunos. O valor é a nota que esse aluno tem. A chave deve ser única, como vimos um pouco antes, a chave também deve ser imutável, ou seja, uma string e um número inteiro, qualquer que seja o valor, o que você quiser Vamos tentar acessar algumas de nossas notas aqui. Eu vou dizer que minha nota de sublinhado será igual às notas Abra os parênteses dentro do Bob e depois imprimiremos minha nota. E imprimiremos a nota de David se dois pontos aparecerem nas notas David, o que estamos fazendo aqui, assim como dissemos, estamos tentando recuperar a nota de Bob usando o rótulo desse valor-chave, que é a chave Estamos usando a chave. E lembre-se de que essa é uma referência de string e estamos usando esse rótulo exato, letras maiúsculas e minúsculas aqui. Se simplesmente clicarmos e olharmos para isso, há um erro chave, o que significa que não há nenhuma parte interna das notas. Mas se eu usar maiúsculas, aí está. Você pode ver que recuperamos a nota de Bob, que é 85. Nós o imprimimos. E também recuperamos a nota de David, que é 78. E eu adicionei um espaço extra aqui porque estou usando dois argumentos nesta impressão. Tenha isso em mente. Não estamos usando o tipo F para os campos de substituição. Como você pode ver, os dicionários são algo novo, mas não completamente Se você entendeu como as listas funcionam antes, isso não deveria estar muito longe da mesma lógica. A única coisa que pode ser um pouco complicada são os pares de valores-chave. Veremos que há muito mais coisas interessantes acontecendo abaixo da superfície que podemos usar para manipular. Mas, por enquanto, tenho um desafio para você, e seu desafio é entender nossos valores de forma diferente. Primeiro de tudo, acesse a nota de Charlie. Queremos obter a nota de Charlie, usar o método get. E eu recomendo que você passe por três escolas para conseguir isso. Entenda. As lagoas são infinitas aqui. Oh, tudo bem. Pesquise on-line e verifique a diferença que isso faz nas três escolas W. Por que precisamos do get se já temos os colchetes normais Eu quero que você me diga o porquê. Por que usar um ou outro. Pause o vídeo agora mesmo e vá fazer o desafio, ok? Como você conseguiu lidar com isso? Espero que tenha entendido como usamos a entrada aqui. Vou tirar outra nota de sublinhado. Se eu conseguir digitar, outra nota será igual às notas. Pegue, e eu vou tirar a nota do Charlie. Vou imprimir outra nota. E se eu escrever, clique na verdade, vamos usar isso. Deixe-me copiar isso. Cole aqui. Adicione uma vírgula e veremos que Charlie é ótimo. Clique com o botão direito, Executar. Estrondo. Pronto, 92. Se olharmos para as notas, isso está correto. Mas antes de prosseguirmos, precisamos entender a diferença entre esses dois métodos. E espero que você tenha feito o possível para entender por que usamos o get. Lembre-se de que as teclas aqui diferenciam maiúsculas de minúsculas. Já abordamos isso porque essas são referências de string para nossas chaves. Lembre-se de que nossas chaves são exclusivas, portanto, precisam ser diferentes umas das outras, o que significa que a distinção entre maiúsculas e minúsculas aqui desempenha um papel importante. O que quero dizer com isso é se eu mudar isso de um Charlie com C maiúsculo para um Charlie com C H. E qual você acha que será o resultado? Agora, se você já passou pelo teste e entendeu o que ele faz, você saberá que ele simplesmente não retorna nenhum. Como isso é útil? Bem, porque lembre-se de que quando mudamos de um B grande para um Bob pequeno, não obtivemos nenhum. Na verdade, recebemos um erro. Basicamente, o que acontece com o get, o get nos permite tentar acessar esses pares de valores-chave sem criar erros , caso não encontre a chave apropriada em nosso dicionário. Além disso, lembre-se de que a indexação pode ser um pouco mais rápida do que usar a chave Quando digo indexação, quero dizer usar colchetes porque não envolve nenhuma chamada de método Não vai importar muito em nosso caso porque essas são pequenas mudanças nos milissegundos. Se você estiver acessando uma chave várias vezes em um loop ou em uma seção crítica de desempenho do código, indexação pode ser a melhor opção Mas também pode vir com isso. Desvantagem, caso exista, ou se a chave que você está procurando não esteja disponível Se você sabe qual é a chave, usar a indexação é melhor do que o dot get, mas dot get é mais seguro e é assim que a vida funciona Se você quer se livrar de riscos, precisa ser mais lento Se você é um grande tomador de riscos, então você vai mais rápido, você escolhe seu caminho Eu sei que tem Phil, muito filosófico por algum motivo, de qualquer forma, muito obrigado por assistir. Espero que você goste. E no próximo vídeo, vamos repetir e repetir os dicionários Espero que você esteja empolgado com esta seção tanto quanto eu. Honestamente, é meio chato, mas aprender a manipular dados usando dicionários Então, eu vou te ver no próximo vídeo. Tchau por enquanto. 103. 2. Iterando sobre um dicionário: boas-vindas de volta aos meus desenvolvedores favoritos de Python em um vídeo totalmente novo E este, como eu disse, será repetido ou iterado em dicionários Agora, esta seção vai ser um pouco difícil. Vai ficar um pouco seco, mas, como eu disse, é muito imperativo Então, decidi melhorar o clima. Vou começar esta aula com um desafio. Imediatamente. Quão legal é isso? Certo? Você provavelmente está me odiando agora, mas ainda precisa criar um loop for simples que repita no dicionário de notas Então, ainda estamos no mesmo arquivo. Ainda vamos repetir o dicionário de notas e imprimir o valor de cada iteração Por um segundo, tente imaginar que as notas são apenas mais uma lista e você está tentando iterar. E você está tentando imprimir o que está sendo dado para nós, testá-lo, ver como funciona, e eu vou te ver daqui a pouco. Ok. Como você conseguiu lidar com isso? Espero que não tenha sido muito difícil. Primeiro de tudo, vou levar Bob Bob de volta para um Big B. Muito bom. Vou adicionar uma impressão aqui. Eu vou dizer quatro notas fundamentais. Imprima a chave. Eu sei qual será a saída, é por isso que chamo a variável que estamos usando para iterar sobre a chave O que vamos conseguir e o que você provavelmente também tem são todas as nossas chaves. Observe que quando você itera em um dicionário, você está iterando sobre suas chaves Se você quiser obter os valores, você precisa fazer o seguinte. E é bem simples. Precisamos adicionar um comum, depois notas, e então podemos simplesmente usar a chave. Observe que eu posso usar a chave diretamente. Claro, não vou adicionar essas duas aspas ao redor dele Porque isso ou isso significa que estamos tentando procurar a nota que tem a chave chave, como literalmente a chave de string como chave. Se eu fizer isso, receberei um erro porque não há nota com a tecla chave, é um pouco confuso Só sei que precisamos fazer isso quando eu leio, clico em, boom. Lá vamos nós. Veja o que recebemos. Mas isso não está claro, então vamos usar o Sp igual a Isso adicionará um separador entre os diferentes argumentos que fornecemos à nossa função de impressão E esta é a saída que nós, como você pode ver, imprimimos nosso dicionário. Muito simples, não há nada demais em que pensar aqui. Mas há uma maneira melhor de trabalhar com dicionários e obter informações desses dicionários sem precisar, antes de tudo, pegar a chave e depois usá-la para obter as para obter as Podemos fazer isso de uma forma muito mais eficiente. Em primeiro lugar, vou comentar essas duas linhas, selecionar as duas e pressionar control forward slash Então aqui eu vou dizer quatro valores-chave em notas, itens dentro, eu vou imprimir o valor-chave p. Então, ok, vamos lá. A impressão deve ser bem simples aqui. Estamos simplesmente usando a chave, o valor, e estamos adicionando um separador para obter a mesma saída que tivemos aqui A única coisa estranha, mas não deveria ser estranha para você porque já examinamos todas essas seções, é como estamos criando isso para a luz Como você pode ver, temos o valor chave nos itens do lote de notas. O que estamos fazendo aqui? Eu posso ouvir todo mundo dizendo que estamos desempacotando exatamente uma tombada. Então, isso se parece exatamente com quando estávamos usando o enumerate E a enumeração retorna dois itens para nós. Ele retornou o índice e, em seguida, retornou o valor associado a esse índice quando estávamos trabalhando em uma lista ou em duas. Mas agora ele retorna a chave e, em seguida, retorna o valor. Se você se lembrar, se voltar e aprender o que fizemos na enumeração, talvez se lembre de que eu não disse que ela retorna Eu disse que retorna um número. Eu fui muito específico sobre isso, e é por isso que fui específico sobre isso, porque nem sempre devolve o item. Pode devolver uma chave. E essa chave pode ser uma string, pode ser um número, pode estar em qualquer coisa. Oh, desculpe. Essa chave deve ser algo único e imutável. Basicamente, o item de notas retorna um objeto que contém uma lista dos pares de valores-chave no dicionário. Quando escrevo, clico, escrevo e corro, aí está, recebo a mesma saída sendo impressa. Então é basicamente isso. É assim que você pode iterar em um dicionário usando os itens Ou você pode simplesmente acessar as chaves e depois usá-las para acessar os valores do dicionário. Mas, obviamente, os itens com pontos são muito mais eficientes. Espero que tenham gostado. No próximo vídeo, anexaremos itens ao nosso dicionário, então veremos como podemos adicionar um item ao nosso dicionário Espero que tenham gostado e nos vemos no próximo vídeo. 104. 3. Anexando itens a um dicionário: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E este anexará itens ao nosso dicionário, que significa que adicionaremos itens ao nosso dicionário de várias maneiras E veremos como ter duas chaves iguais pode afetar o comportamento do nosso dicionário Em primeiro lugar, vimos que podemos criar um dicionário usando um significado literal que podemos literalmente configurá-lo com elementos Por exemplo, aqui, eu posso entrar e adicionar, digamos, Philip. E Philip teria uma nota de 12. Philip não está estudando. Bem, mas também podemos adicionar notas, pessoas com notas ou alunos com notas de uma maneira diferente. Por exemplo, aqui na parte inferior, ou não na verdade na parte inferior. Vou adicioná-lo diretamente acima de Bob. Aqui, vou dizer notas, abrir os colchetes e vou dizer Henry igual a 83 Agora, quando eu escrevo Click and I run, você verá que na parte inferior eu pego Henry. Portanto, lembre-se de que adicionamos Henry no final. Então, quando adicionamos a um dicionário, ok, fora do dicionário real, a ordem de inserção é preservada Ou a ordem de inserção é preservada, o que significa que adicionamos somente no final Agora você verá aqui que temos algum tipo de aviso se passarmos o mouse sobre ele. O que diz isso? criação deste dicionário pode ser reescrita como um dicionário literal, então significa este Agora, vamos tentar mostrar a ação e substituir a criação do dicionário. Uh hein. Ok, vamos lá. Então você verá que ele criou ou tornou o dicionário horizontal e adicionou Henry no final aqui. Vou devolvê-lo porque estamos tentando mostrar a você, ou estou tentando mostrar como podemos adicionar itens de várias maneiras ao nosso dicionário. Mas vamos continuar. Vamos ver o que acontece se tentarmos alterar um valor sob Henry. Vou tentar dizer notas, abrir os colchetes e depois Axis, David E então eu vou dizer que a nota de David agora é 88. Então, lembre-se de que a nota de David foi 78. Podemos até ver isso aqui. Mas agora, se eu escrever, clique e eu corro, veja isso. A nota de David é 88. Então, algo a ter em mente é que cada chave é única. Caso contrário, como saberíamos qual deles estamos mudando? E se tivéssemos dois David lá dentro? Qual deles mudaria? Bem, essa é a pergunta para a qual você precisará encontrar a resposta ao fazer o seguinte desafio. Quero que você adicione um Charlie no topo do nosso dicionário, ou seja, dentro do nosso dicionário literal Você precisará adicionar outro Charlie. Já temos um, acrescente outro. Dê uma nota diferente da segunda, dê a Charlie uma nota diferente. E o que eu quis dizer é que, no topo do nosso dicionário, é por isso que eu disse dar uma nota diferente da segunda, porque Charlie é como a terceira ou quarta pessoa de qualquer maneira, dê a ele uma nota diferente. E o que acontece quando realmente executamos o código? Primeiro de tudo, eu quero que você pense no que aconteceria, e depois eu quero que você teste. Então passe o vídeo agora mesmo e vá fazer o desafio aqui. Vou até o topo e vou adicionar Charlie, deve ser uma corda, Charlie, dois pontos. E eu vou dar a Charlie uma nota de 50. Observe que, imediatamente, temos avisos aqui nos dizendo que a criação desse dicionário poderia ser reescrita como um Esse é o velho aviso. Se passarmos o mouse sobre esse aviso, ele dirá que o dicionário contém chaves duplicadas. Charlie, se executarmos isso, não vamos receber um erro, obviamente, porque funciona. Mas temos algo acontecendo aqui. Temos Charlie no topo, que é onde adicionamos Charlie, mas ele tem uma nota de 92 em vez da 50 que fornecemos. O que está acontecendo aqui? Em primeiro lugar, é muito óbvio o que está acontecendo. A chave preserva sua localização, mas o valor é alterado A posição-chave é preservada, mas o valor muda. Se tivermos duas chaves iguais no dicionário, ela se comportará como se a tivéssemos alterado fora do literal, como fizemos com Do jeito que você pode imaginar, como um pequeno robô examinando as notas e tentando imprimir coisas. Ele encontra Charlie. É ótimo, Charlie está na posição número um. Imprimimos Charlie e são 50. Desculpe-me, na verdade não imprimimos nada. São 50. Então vamos até Alice, classificamos Alice na posição número dois Bob está na posição número três com 85. Espere, Charlie. Charlie novamente. Oh, tudo bem. Bem, eu já vi Charlie. Ele tinha uma nota de 50, mas agora eu posso ver que é 82. Então, alteramos o valor e depois imprimimos. É assim que o dicionário é interpretado. E observe que aqui chega a 92. Então, o dicionário meio que tem uma alma própria. Mesmo antes de imprimir, ele já mudou a nota de Charlie porque detectou que havia outro Charlie. E veremos que esse Sol Sol entre colchetes, é claro, será muito útil no futuro quando tentarmos criar coisas diferentes e usá-las para propósitos diferentes Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, veremos como remover itens de um dicionário. E veremos como tudo isso funciona. Te vejo em alguns minutos. 105. 4. Removendo itens de um dicionário: Bem-vindo de volta aos meus desenvolvedores de Python favoritos neste vídeo. Conforme prometido, removeremos itens de um dicionário. Agora, existem várias maneiras de remover itens de nossos dicionários, então vamos dar uma olhada em algumas delas Em primeiro lugar, excluir de um dicionário é muito parecido com o que fizemos nas listas Mas nos dicionários usamos a chave para indicar o que queremos excluir Em listas e tombamentos, costumávamos indicar em qual índice gostaríamos de excluí-lo Para excluir em ou dos dicionários, precisamos indicar a chave Por exemplo, aqui, logo antes imprimir a chave e os valores, vou excluir as notas em Bob. Agora, quando escrevo Click e corro, olha, tínhamos Bob. Agora, quando escrevo Click e corro, não temos Bob. Tchau, Bob. Como você pode ver, quando executamos, o item é excluído. Se isso funciona tão bem, por que precisamos de outros métodos? Bem, para demonstrar, vou tentar excluir alguém que não está em nossa classe, por exemplo. E quando digo classe, quero dizer a turma que tem todas essas notas. Não é uma aula como nas aulas que aprendemos na seção anterior. Só para esclarecer isso, vamos tentar deletar Kalen Se eu escrever, clicar e correr, recebo um erro. É um erro fundamental porque Kalin não existe em nossas notas O que devemos fazer sobre isso? Bem, temos outras formas de excluir. Na verdade, não se chama excluir, é chamado de estourar. Por exemplo, aqui posso dizer que notas pop podem fornecer Kalin novamente. Agora, se eu escrever, clique e execute, ainda há um erro. Eu recebo Kalen ou um erro de chave que Kalin não está disponível. Espere, espere, espere. Não acabamos de cobrir isso? Isso não deveria ser a solução para todos os nossos problemas? Bem, é, mas você precisa fornecer outro argumento. Por exemplo, aqui você pode dizer que, caso não encontre kalen ou um item com a chave kalen, você pode simplesmente não devolver Agora, quando escrevo, clique e corro, você pode ver que não há erros aqui, o que é perfeito. Mas não precisamos apenas não devolver nada, caso não encontremos nada, podemos devolver absolutamente tudo o que quisermos. Por exemplo, posso devolver um nove. Lá vamos nós. Bem, na verdade, não é impresso porque precisamos realmente imprimir. Ou podemos dizer, por exemplo, Lens ou Kalin. Nota de sublinhado igual à nota aparece aqui. Podemos imprimir o grau de kalen. Na verdade, vou adicionar uma pequena letra aqui para que possamos separá-la. Pronto, temos nove ou poderíamos ter imprimido nenhuma. Pronto, não temos nada ou podemos pedir desculpas, ninguém. Ninguém. É assim que você escreve? Ninguém. Ninguém com esse nome em nossas notas. Clique com o botão direito, corra, desculpe. Ninguém com esse nome em nossas notas. Tudo bem, então usar o pop é uma ótima maneira de evitar erros e também ser fácil de usar, caso o usuário esteja, digamos, procurando a nota do filho ou algo assim, ou um aluno procurando a nota. Você pode usar o pop para enviar uma mensagem a eles. Você nem está aqui ou eu não sei, talvez esteja procurando uma aula diferente. Você pode fazer o que quiser usando o pop. Agora, é hora de um pequeno desafio para descobrir dois valores. Quero que você insira dois valores já presentes em nosso dicionário, por exemplo, Alice ou Bob Você pode tentar colocar esses nomes no segundo pop. Apresente uma string alternativa a ser impressa caso não encontremos a chave. Digamos que você tente matar David. Você também pode fornecer uma string caso não encontremos David aqui. Ok, então vamos ver o que acontece nessa situação. O que acontece se tentarmos estourar alguma coisa e ela estiver lá. Mas nós fornecemos string alternativa ou algo alternativo para ser gerado. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui na impressão, vou adicionar outra impressão aqui. Eu vou dizer que a nota de sublinhado de Alice é igual às E teremos Alice e imprimiremos, oh meu Deus, nota de Alice Também teremos a nota de sublinhado de David. E será igual às notas do Pop David. Mas no meu segundo pop, vou dizer que não temos um David aqui, uma barra invertida e uma dessas Você se lembra dos caracteres especiais? Espero que sim, porque eles podem ser úteis em situações como essas E então teremos apenas a nota de David. Agora observe o que vai acontecer aqui. Muito importante quando escrevo. Clique e eu corro. Lá vamos nós. Você pode ver que obtemos 90, que era de fato a nota de Alice, e obtemos 88, que era de fato a oito de David O que fizemos, David? O que temos, David? Oh, isso é porque nós o trocamos aqui. Muito bom. Honestamente, eu não planejei isso, mas é bom É bom que realmente tenhamos conseguido encontrá-lo tão rápido. Então, como você pode ver Alice e David, mas lembre-se de que eles foram destruídos, então você não consegue encontrar Alice e não consegue Quando tentamos imprimir o valor da chave usando os itens de notas, observe que agora os valores que acabamos de exibir não aparecem mais na parte inferior. Porque enquanto eles foram estourados. Embora eu tenha dito isso antes, estou apenas reiterando, certificando-me de que entendemos o que está acontecendo Espero que não tenha sido muito difícil. Remover itens não é algo muito complicado quando se trata de dicionários No próximo vídeo, veremos a iteração de chaves de dicionário usando o N. E voltaremos a um de nossos projetos anteriores, em estávamos construindo um carro com rodas, luzes, janelas e assim por diante, e o tornando muito melhor usando nossos novos poderes de dicionários Então, muito obrigado por assistir. Espero que tenham gostado e nos vemos no próximo vídeo. 106. 6. Construtor de informática: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos começar a construir vários computadores. Que tal isso? Antes de tudo, precisaremos de uma lista de peças e dos diferentes modelos de computador que podemos criar com elas. Abaixo deste vídeo, em algum lugar, não sei, nos recursos, onde quer que você esteja, onde quer que esteja assistindo isso ou em qualquer configuração diferente em que esteja acontecendo, você encontrará um arquivo que pode ser baixado onde temos todas as peças e modelos do computador. A primeira coisa que precisamos fazer é criar o arquivo de conteúdo das peças do computador. Vamos arquivar New. Criaremos a pontuação do computador, sublinharemos o conteúdo, puxaremos, pressionaremos Enter e pronto. Estamos aqui. Então, vou copiar e colar uma lista muito longa aqui. E não se preocupe, nós o teremos disponível para você. Depois de fazer isso, você verá que, em primeiro lugar, temos o armazenamento de peças do computador. Portanto, temos dez CPUs, sete GPUs, 50 Rams, três placas-mãe, 30 SSDs, seis monitores, etc., etc E então temos os modelos de computador. Por exemplo, temos o PC para jogos aqui, que requer GPU, CPU, RAM, SSD Temos o laptop comercial, que requer uma CPU, sem GPU, RAM, SSD e assim por diante Um desktop doméstico, um media center e uma estação de trabalho. Agora, mais tarde, tornaremos essa lista um pouco melhor, onde, por exemplo, o laptop comercial exigirá duas CPUs ou 15 Rams e assim por diante Mas, por enquanto, só queremos trabalhar com o que temos. Vamos manter esse arquivo como o local de conteúdo onde temos todo o conteúdo que temos, mas vamos criar um novo arquivo Python que chamaremos de Construtor do computador Dentro desse construtor de computadores, vamos importar do conteúdo das peças do computador do conteúdo das peças do computador. Importe o armazenamento de peças do computador e os modelos do computador. Tudo bem, agora, se tentarmos imprimir o armazenamento de peças do computador e tentarmos imprimir os modelos do computador, veremos algo assim. Estrondo. Use CPU, GPU, RAM, placa-mãe, etc., etc. E então veja isso. Temos o PC para jogos, e você verá aqui que também temos o laptop comercial e assim por diante. Algo que acabei de notar e esqueci de mencionar é que temos os modelos de computador como um dicionário, que tem as teclas como strings E então os valores são listas. Nunca vimos isso antes. É uma lista de cordas. O valor é uma lista. Não é um número inteiro ou uma string, é uma lista real Veja até que ponto podemos nos aprofundar no tratamento de dados usando dicionários Aqui, o armazenamento de peças do computador é um dicionário, sendo o item ou a peça chave sequências de caracteres. E então o valor é a quantidade desses itens que temos. Então, de volta ao construtor de computadores, vou arrastar isso e colocá-lo na parte inferior. Talvez pareça melhor. Então vamos lá. Temos a CPU GPU, etc., etc. Mas agora você tem um desafio pela frente, e seu desafio é exibir todos os modelos. Crie um loop for. Use-o para enumerar os modelos de computador e imprimir o índice e a chave Deveríamos ter algo assim. Lá vamos nós. Lembre-se de que agora quero que você não use os itens que quero enumerar nos Porque queremos ver o que temos e queremos obter esse tipo de saída. Certifique-se de fazer isso. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Em primeiro lugar, vou comentar essas duas linhas. Eles eram simplesmente para depuração, garantindo que obtivéssemos os Então eu vou dizer quatro chaves de índice na enumeração. Estamos enumerando novamente os modelos de computador aqui. Quando eu disse para pegar todos os modelos, tenho certeza de que alguns de vocês estão muito animados. Mas acontece que não, não somos esse tipo de modelo. Vou imprimir o separador da chave de índice, e o separador será os dois pontos É basicamente isso. Isso é o que queríamos agora. Quando escrevo, clico e corro, é isso que eu recebo. Zero para jogos, PC, um, laptop comercial, doméstico, desktop, media center, etc Mas, na verdade, queremos ter um dicionário separado que exiba os diferentes modelos que podemos criar. Eu vou te dizer, eu não vou te dizer por que isso se tornará mais evidente mais tarde. Por esse motivo, quero fazer o seguinte. Quero criar algo chamado dicionário de sublinhado de exibição, que será igual a esse dicionário vazio Então eu vou ter, ou realmente sei o que, vamos movê-lo. Eu queria excluí-lo, mas vamos movê-lo para cima aqui. Em vez de imprimir isso, vou comentar isso. Vou criar ou dizer o display dict STR. E isso não fazia parte do desafio, aliás, índice mais um é igual à chave. Que diabos está acontecendo aqui? Em primeiro lugar, deixe-me clicar com o botão direito e executar. Nada acontece bem porque se quisermos simplesmente imprimir o ditado de exibição, clique com o botão direito em um. Veja o que acontece. Agora temos um sendo o PC para jogos, dois sendo o laptop comercial, três sendo o desktop doméstico para media center, cinco, a estação de trabalho. O que está acontecendo aqui? Como você viu antes, talvez eu não devesse ter comentado isso. Só para você ver que o índice é zero. Para o PC para jogos, usamos esse índice. Adicionamos mais um a ele e depois o transformamos em uma string. E então usamos tudo isso aqui que criamos como uma chave para adicioná-lo ao dicionário de exibição. Ao dizer que é igual à chave, estamos chamando isso de chave porque era uma chave aqui, PC para jogos era uma chave e agora se tornou o valor. Observe novamente, se for confuso, vamos pensar sobre isso novamente. Tínhamos os modelos de computador, o PC para jogos era a chave, o laptop comercial era a chave no dicionário de modelos de computador. Então, o que fizemos foi enumerar os modelos de computador, tínhamos um PC para jogos na posição zero ou no índice zero Laptop empresarial no índice um, desktop doméstico no índice dois. Centro de mídia no índice três, estação de trabalho no índice quatro Mas sabemos que, em um dicionário, não precisamos que eles comecem do zero. Preferimos que o PC para jogos comece do zero. Pela mesma razão pela qual usaríamos zero aqui para terminar. Talvez queiramos usar zero para terminar. O que fizemos foi criar um dicionário de exibição em que a chave agora é o índice do dicionário anterior que tínhamos. Olha isso. Agora, o PC para jogos está em um, laptop comercial está em dois. Agora, mais tarde, se quisermos construir um PC, podemos dizer que queremos um PC para jogos. Ao clicar em um, obteríamos o PC para jogos. Usaríamos isso no dicionário dos modelos de computador para obter, por exemplo, quais peças de computador o laptop comercial precisa. Se você ainda estiver confuso, recomendo que você revise isso mais algumas vezes para entendê-lo adequadamente. A coisa mais importante que você precisa saber é por que usamos a enumeração, que era para obter os índices, e depois como criamos o dicionário de exibição, que Que é isso aqui. Seu tempo. Não se preocupe, isso não é muito simples. Sei que estamos abordando as partes mais complexas, mas é muito importante entender o tratamento de dados usando dicionários Mas agora também queremos imprimir nossas opções aqui, vou dizer que, em primeiro lugar, vou comentar isso e não quero imprimir o dicionário exibido. Eu vou comentar isso também. Aqui, direi que, embora seja verdade, isso será para exibir o menu. Por que recebo um erro? E então esperado. Ok, ok, ainda não escrevemos nada aqui. Quando eu imprimo, isso deve desaparecer. Bom. Então, direi que, por favor, escolha o modelo do seu computador. Isso foi parte do seu desafio. Mesmo que você não precisasse fazer isso como eu fiz, você não precisou criar um dicionário de exibição. Mas você deveria ter obtido essa saída aqui. Escolha o modelo do seu computador e aqui vou imprimir os traços que indiquei, multiplicados por 20 e direi quatro valores-chave nos itens do dicionário de exibição Vou imprimir campo de substituição, chave, valor do campo de substituição. Deveria ser isso. Então eu vou ter a escolha, digamos que escolha é igual Eu vou dizer sua escolha assim. Talvez adicione um espaço, ou talvez possamos adicionar uma coluna. Eu não sei. Você seleciona o que quiser e diremos que, se a escolha for igual a zero, quebraremos. Porque lembre-se de que estamos em um verdadeiro ciclo. Agora, se eu clicar com o botão direito e correr, deixe-me mover isso aqui. Boo, aí está. Talvez pudéssemos adicionar uma impressão aqui apenas para separar a verdade, ou talvez pudéssemos adicionar uma barra invertida D. Parece bom Nem tanto, honestamente. Acho que a parte de trás nos serviria melhor aqui. Vamos ver, eu não sei. Honestamente, eu não sei. Sim, lá vamos nós. Eu acho que isso é bom. Eu não sei. Não tenho certeza. De qualquer forma, aqui, qual é a sua escolha? Um jogo. PC. Boom. 23. Ok, ainda não estamos recebendo nada útil, mas pelo menos está funcionando. Espero que você tenha entendido, espero que não seja muito confuso Novamente, no próximo vídeo, veremos vários dicionários Portanto, é muito importante que você entenda o que fizemos aqui. Porque no próximo vídeo, vamos usar o que fizemos aqui. Se você está preocupado com quem isso está ficando muito complexo, Michael, o que diabos está acontecendo? Não se preocupe. Respire, respire fundo. As coisas só vão ficar mais difíceis a partir daqui. Não, estou brincando. Tudo será fácil, desde que você se concentre, desde que entenda, faça as coisas passo a passo e construa lentamente. Além disso, estamos sempre disponíveis. Você provavelmente tem meus números em algum lugar. Você provavelmente tem o número de um instrutor em algum lugar. Não hesite em contatá-los e nós o ajudaremos. Nos vemos no próximo vídeo. 107. 5. Iterando sobre chaves de dicionário usando `in`: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos iterar sobre as chaves do dicionário usando O objetivo principal aqui é entender como podemos iterar em entender como podemos iterar dicionários usando o n. Mas o outro objetivo é também entender qual estrutura de dados devemos usar, um dicionário ou uma lista, um dicionário ou uma lista quando nos deparamos com uma situação Quando digo isso, quero dizer algumas seções atrás, alguns vídeos atrás, criamos uma concessionária de carros onde tínhamos uma lista de peças disponíveis e tínhamos números anexados a essas Bem, eram os índices, e adicionávamos rodas, luzes, assentos dianteiros e assim por diante Espero que você se lembre do que quero dizer. Infelizmente, neste projeto atual, eu volto e o encontro. Desculpe por isso, mas você definitivamente pode encontrá-lo nas listas e nos filhotes. Ou talvez eu o tenha chamado de construtor de automóveis, eu o chamei de concessionária de automóveis Talvez eu tenha ligado de carro. Se não me engano, foi de carro. Mas, em qualquer caso, tente voltar e encontrá-lo nesse projeto. Primeiro de tudo, usamos quatro loops para criá-lo. Em seguida, nós o atualizamos usando listas. Fizemos com que fosse melhor usando uma lista. Agora vamos fazer a mesma coisa torná-la ainda melhor, mas desta vez usando dicionários Primeiro de tudo, vou entrar no arquivo novo e criar um novo arquivo Python Isso será o by underscore car, underscore dict, indicando que estamos usando dicionários Vou criar as partes de sublinhado disponíveis e elas serão iguais às seguintes Primeiro de tudo, teremos 12 pontos. Então as rodas duplicam isso, teremos luzes duplicando isso, teremos a asa dianteira duplicando Teremos, oh meu Deus. Teremos os assentos. Duplique isso E teremos a janela, janela. E duplique isso novamente. E teremos o aparelho de som. Obviamente, não podemos ter chaves duplicadas. Todos eles devem ser únicos e devem ser imutáveis. 56. Lá vamos nós. eu vou criar a escolha atual. Teremos a opção de sublinhado atual igual a nenhuma, enquanto a escolha atual é diferente ou igual a zero, porque lembre-se de zero é onde terminamos Vamos dizer que, se a escolha atual estiver na peça disponível, a peça escolhida será igual às peças disponíveis na escolha atual. E também imprimiremos adicionando a peça escolhida no campo de substituição. Lá vamos nós. Além disso, é claro que precisamos obter a escolha atual de, a escolha atual será igual a uma entrada que será a parte escolhida, dois pontos. E então vamos selecionar um número. Agora, se eu clicar com o botão direito do mouse e correr aqui, você pode ver que a peça escolhida, se eu clicar em uma, por exemplo e pressionar Enter, você pode ver que estou adicionando rodas. Se eu pressionar seis e pressionar Enter, você verá que estou adicionando estéreo Você se lembra de como foi difícil chegar a esse ponto quando estávamos usando listas? Veja como é fácil. Agora, simplesmente criamos as peças disponíveis. Cada peça tem sua própria chave anexada a ela. E, por exemplo, se eu pressionar nove aqui e pressionar Enter, aí está, nada acontece. Então, quão legal é isso? Mas uma coisa muito importante a perceber é que, quando usamos o em um dicionário, estamos examinando suas chaves. Por exemplo, se eu tentar adicionar janelas ou janelas, veja só, não funciona. Se eu tentar adicionar rodas, isso não funciona quando estamos usando o com um dicionário. Ao contrário das listas, estamos examinando apenas as teclas. Essa é uma distinção muito importante, não por meio dos valores. Espero que você tenha entendido. Eu recomendo que você leia o código algumas vezes para ter certeza de que está recebendo tudo corretamente. E quando você faz isso, você tem um desafio pela frente. Você precisará imprimir todas as peças. Crie um L para quando a escolha atual não estiver nas opções disponíveis, repita sobre as peças disponíveis usando os itens E pegue a chave e a peça, ou seja, o valor da chave, e imprima-as. Explique-os de uma forma que o usuário entenda. Basicamente, no momento, você verá que não estamos exibindo aos usuários quais opções eles têm quando desejam adicionar um carro ou item do carro ou qualquer peça do carro. Portanto, você precisa fazer isso usando os itens do nosso novo dicionário, que é a parte disponível. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Não deve ser muito difícil. Aqui, vamos dizer L, ou seja, se a escolha atual não estiver nas partes disponíveis, vamos dizer L, quatro partes principais. Nas peças e itens disponíveis, vou imprimir a peça-chave e depois separar usando a coluna. E também precisamos imprimir aqui zero para terminar. Basicamente, o que estamos fazendo de novo, lembre-se de que os itens nos fornecem uma lista de quedas, que são a parte principal E então os desempacotamos na chave e na peça. E imprimimos as coisas com o zero para terminar. Agora, quando escrevo um clique e corro, olha só, tenho uma roda, duas luzes, três asas dianteiras, etc., etc Eu recomendo que você volte a esse código e verifique como foi difícil fazer todas essas coisas. Veja como é fácil agora. Outra coisa a ter em mente antes de prosseguirmos são essas duas linhas aqui. Não estamos preocupados em usar a opção de corrente errada dentro de nossas peças disponíveis. Porque lembre-se de que, se usarmos uma chave que não está em nosso dicionário, podemos causar um erro. Mas porque estamos usando a opção if current nas peças disponíveis. Então, primeiro de tudo, estamos verificando se nossa escolha é uma das chaves que estão em nosso dicionário. Então, se for 12345 ou apenas seis, tentaremos acessar um dos valores dentro dele Isso é algo muito importante a se ter em mente. Em resumo, quando você deve usar uma lista e quando usar um dicionário? Bem, obviamente, isso depende da situação em que você está. Você deve usar listas quando precisar manter a ordem dos elementos e acessá-los por posição e usar dicionários quando precisar acessar os elementos por chaves ou armazenar pares de valores-chave Se você tem algo em que é muito importante manter a ordem, use listas quando tiver algo um pouco mais complicado e quiser ter pares de valores-chave do que os dicionários Finalmente, antes de prosseguirmos, precisamos realmente adicionar os itens que tentamos. Bem, entre aqui, a parte escolhida que imprimimos e que estamos adicionando. Isso não é verdade porque antes de imprimirmos o que estamos adicionando, não vou deixar isso de lado. Temos que verificar se a escolha atual já está nas peças do carro. Antes de tudo, precisamos criar essas peças automotivas. Vamos criar partes de sublinhado e diremos que é igual a um dicionário vazio aqui Quero dizer, parte escolhida, não a parte atual. Se a peça escolhida estiver nas peças do carro, vou imprimir removendo a peça escolhida. Como removemos um item? Como removemos um item? Ao usar o pop, mesmo que neste caso ele esteja sempre dentro das peças do carro, mas com muito cuidado, nunca machuque ninguém. Também aqui vamos adicionar um L e vamos dizer que queremos, vamos adicionar então peças de automóveis. A escolha atual é igual à peça escolhida. O que mais precisamos fazer? Também gostaríamos de talvez imprimir nossa lista. Vamos imprimir seu dicionário que agora contém, vamos apenas imprimir tudo. Então, vamos imprimir as peças do nosso carro. Clique com o botão direito e execute. Vamos adicionar rodas. Estrondo. Agora temos uma roda para explodir, luzes para estourar e luzes foram adicionadas em cima dela. Isso é porque, oh, eu peço desculpas. Essa deve ser de fato a escolha atual porque, novamente, esse foi um erro que eu cometi. Eu poderia ter editado isso, mas gostaria de mantê-lo porque no começo eu fiz isso corretamente, então minha mente ainda estava na parte das listas aqui. A escolha atual deve ser usada em vez da peça escolhida. Porque lembre-se de que, quando usamos in, estamos iterando sobre a chave Estamos verificando se a chave já estava lá. Agora, quando escrevo clique e corro, por exemplo, adiciono rodas, adiciono luzes. Eu quero remover as luzes. Eu bati também, e lá vamos nós. Agora ele é removido. Quando estávamos tentando usar a peça escolhida, era um valor, a peça escolhida eram luzes. Então, examinamos nosso dicionário e não encontramos luzes aqui, então não as removemos. Então, espero que você tenha entendido, por exemplo, três asas dianteiras quatro. Se eu tentasse adicionar outros quatro, você pode ver que ele foi removido. Nós adicionamos assentos. Em seguida, removemos os assentos. Então eu espero que você tenha gostado. Espero que você tenha entendido. Espero que tenham gostado de ter mantido o lado errado, porque talvez alguns de vocês tenham feito isso, talvez alguns de vocês não tenham entendido por que passamos de uma escolha atual para a parte escolhida e depois voltamos Acho que vale a pena guardar isso. Espero que você entenda. Espero que você aprecie a transparência que estou tentando mostrar aqui. E nos vemos no próximo vídeo onde aplicaremos esse conhecimento para criar um projeto de construção de computadores. Te vejo então. 108. 7. Uso de vários dicionários: Bem-vindo de volta aos meus programadores de Python favoritos. Neste vídeo, usaremos vários dicionários juntos para obter os dados de que precisamos Em primeiro lugar, queremos exibir o item que o usuário selecionou. Aqui, você pode ver que sua escolha é pressionar dois e depois obter nossos modelos de computador. E se quiséssemos realmente mostrar ao usuário o que ele selecionou? Vamos seguir em frente e fazer exatamente isso. Abaixo de onde nossa escolha é verificada. Se for igual a zero, adicionarei um L. Se estiver aqui, desculpe, adicionarei um L. Se estiver aqui LF, a escolha está no dicionário de exibição. Vamos seguir em frente e dizer que o item de sublinhado selecionado será o dicionário de exibição ou a opção ao lado Em seguida, simplesmente imprimiremos o campo que você selecionou e, em seguida, o campo de substituição e o item selecionado, pronto. Quando escrevo, clico e corro, e talvez eu também queira adicionar algo aqui, talvez como um espaço extra. Talvez um espaço aqui. Imprima apenas uma impressão vazia, clique com o botão direito e eu executo sua escolha. Vamos com os três. Lá vamos nós. Você selecionou a área de trabalho inicial. Talvez dois pontos aqui sejam bons. Então, se eu acertar um jogo. Se eu acertar seis, lá vamos nós. Eu não recebo nada. Acabei de exibir tudo para mim novamente. Se eu chegar a zero, saio perfeitamente. Nosso programa está funcionando perfeitamente bem. Agora, antes de prosseguirmos, queremos fazer mais uma coisa, que é quando realmente selecionamos um computador, digamos, o PC para jogos . Queremos imprimir todos os componentes necessários para criar ou construir esse computador. Então, estou me sentindo cansado, com preguiça. Eu gravei por muito tempo hoje. É por isso que estou apresentando isso a você como um desafio em que, sim, você precisará exibir os componentes necessários. Antes de tudo, imprima os componentes necessários. Bem, isso é apenas um grande desafio. Você precisará usar o dicionário de modelos de computador que importamos e obter o componente usando o modelo de computador selecionado como chave. Se você se lembra, criamos o item selecionado. Isso pode ser usado como uma chave no dicionário de modelos de computador para obter todos os componentes. Boa sorte Isso não é fácil. Mas confie em mim, se você conseguir resolver esse desafio, você está no caminho do domínio completo do tratamento de dados usando dicionários Então, por favor, tome seu tempo, faça o seu melhor, e eu vou te ver em alguns segundos. Bem-vindo de volta. Como você conseguiu lidar com isso? Nosso objetivo é obter os componentes necessários. Aqui, vou imprimir o seguinte. Eu vou dizer que estamos verificando os componentes. Componentes necessários, três pontos. É como se todos estivéssemos verificando. Estamos passando por muitas coisas. Agora, os componentes são iguais aos modelos de computador. Vamos usar o item selecionado depois imprimiremos os componentes. Se eu escrever, clicar e executar o Choice One, veja isso, veja isso, seu PC para jogos, verificando os componentes necessários. CPU, GPU D, HDD, refrigeração da placa-mãe e um estojo, se eu quisesse uma estação de trabalho , precisaria de CPPD, HDD, fonte de alimentação, placa-mãe, tudo igual ao PC para jogos, mas também preciso de um monitor, mas também preciso e um estojo, se eu quisesse uma estação de trabalho , precisaria de CPPD, HDD, fonte de alimentação, placa-mãe, tudo igual ao PC para jogos, mas também preciso de um monitor, teclado e mouse. Espero que você tenha aceitado o desafio. Espero que você tenha feito o seu melhor. Antes de partirmos, deixe-me explicar novamente o que realmente fizemos aqui, explicar novamente o que realmente fizemos porque alguns de vocês ainda podem estar confusos. Em primeiro lugar, isso já deve estar óbvio A maneira como criamos um dicionário de exibição, onde obtemos o seguinte , o usuário seleciona um desses computadores que temos, um dos modelos de computador, por exemplo, eles selecionam quatro Quando eles selecionam quatro , aqui, a escolha é quatro. Verificamos se a escolha é ou é igual a zero e depois partimos. Caso contrário, verificamos se a opção está no dicionário de exibição. Caso contrário, voltamos pelo laço de arame e o imprimimos novamente. Se for, então criamos algo chamado item selecionado, que será o dicionário de exibição na escolha atual. Por exemplo, se eu pressionar dois , o item selecionado será laptop comercial. Se eu pressionar quatro , o item selecionado será o media center. Foi assim que criamos o dicionário de exibição. Se você não tiver certeza de como isso funciona, volte ao vídeo anterior. Então dizemos que queremos imprimir que você selecionou etc., etc É aqui que obtemos a saída, verificando os componentes necessários e é aqui que os obtemos. Agora, a parte mais importante é quando usamos o item selecionado como uma chave nos modelos de computador para ter acesso a todos os componentes. Por exemplo, se selecionarmos o media center , usaremos o media center. O selecionado, digamos que selecionamos quatro. O item selecionado agora é o media center. Usamos esse centro de mídia, o inserimos no dicionário de modelos de computador aqui mesmo nos modelos de computador. Descemos a central de mídia e obtemos CPU, RAM, SSD, fonte de alimentação, Blue Ray Drive, TV Turner. O que? Sintonizador Tv Turner. Sintonizador de TV e controle remoto. Ok, então acho que expliquei da forma mais detalhada possível. Se você ainda não tiver certeza, assista novamente ao vídeo, certifique-se de entender tudo Porque no próximo vídeo, procuraremos ou verificaremos as peças do computador. Vamos expandir nosso armazenamento. Expandindo o que cada modelo precisa. Por favor, volte, certifique-se de entender tudo, mesmo que leve mais tempo do que você acha que vale a pena, confie em mim. Depois de entender isso, as habilidades de manuseio de dados aumentarão. É imperativo entender os dicionários. Nenhuma carreira pela qual você passará exigirá que você não use dicionários Você sempre terá que usar dicionários de alguma forma Muito obrigado por assistir. Espero que tenham gostado e nos vemos no próximo vídeo. Onde verificaremos e até mesmo nos aprofundaremos nas peças do computador. 109. 8. Verificando as partes de informática: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos verificar os componentes reais. Quer dizer, temos as peças necessárias para essa construção específica, para esse modelo de computador específico, quero dizer, ou não temos essas peças? E então atualizaremos nosso dicionário para que também possamos ver quantas peças precisamos, que significa que talvez não precisemos apenas de uma RAM, talvez precisemos de dez Rams ou 60 SSDs ou qualquer Então, basicamente, o objetivo deste vídeo será expandir nosso projeto. E, ao fazer isso, expanda nossa capacidade de lidar com dados usando os dicionários que acabamos Então, vamos começar. Antes de tudo, precisaremos digitar o código a seguir que nos dirá se o item que estamos procurando está disponível ou não. Alguém aqui, vou dizer que quatro componentes ou componente sublinha parte em componentes, estamos examinando cada componente Se o componente estiver no armazenamento de peças do computador, pronto. Vamos imprimir a parte traseira, o computador de campo de reposição está disponível e, caso contrário, imprimiremos a parte traseira, você não tem a peça necessária, diremos a eles qual peça eles não têm. Boom, lá vamos nós. Talvez eu deva mover isso mais para o lado direito para que possamos ver claramente o que está acontecendo aqui. Temos nossos componentes do último vídeo. Agora usamos esses componentes, iteramos sobre eles e verificamos se esses componentes estão no armazenamento do computador Lembre-se de que o armazenamento do computador é esse, aqui está a chave. Lembra, quando o fazemos, examinamos as chaves? Aprendemos isso no vídeo número cinco, talvez. E se o componente estiver lá, dizemos que está disponível. Se não for, dizemos que não temos essa parte necessária. Se eu escrever, clique e deixe-me aumentar isso. Então, um boom, vamos ver, a CPU está disponível, GPU está disponível, tudo está disponível, ótimo para um PC para jogos Vamos experimentar o notebook empresarial. Lá vamos nós. Você pode ver que não temos bateria, não temos uma tela e não temos o touch pad. Algumas coisas estão faltando aqui, mas agora está funcionando. Mas, obviamente, eu disse muitas vezes, mas obviamente isso não é suficiente. Também precisamos verificar as quantidades. A primeira coisa que precisamos perceber é que os modelos não especificam quantos componentes precisamos para criar o modelo de computador que queremos. O que significa que não sabemos quantos Rams um notebook corporativo precisa Ele requer mais RAM do que o PC para jogos? Provavelmente não. Então, precisamos verificar essas coisas também. Então, adicioná-los será fácil. Muito fácil, é claro, porque aqui podemos simplesmente adicionar um item extra ou fazer alguma coisa. Não sei, adicioná-los será fácil. A parte difícil é saber como e qual ferramenta de tratamento de dados usar. Por exemplo, gostaríamos de colocar isso ou transformar isso em uma lista de casais, você sabe, com a CPU tendo um número próximo a ela. Talvez queiramos transformá-lo em uma lista em vez de uma lista. Podemos transformá-lo em um dicionário. Talvez queiramos usar conjuntos. Então, o que gostaríamos de usar nesse caso? Vou atualizar essa lista e vou usar dicionários Você terá um arquivo com todas as informações necessárias. Vou apenas copiar isso e colar aqui. Lá vamos nós. Você pode ver o modelo do computador. O dicionário de modelos de computador. Você pode ver que é feito das teclas que são os modelos de computador. Cada chave do modelo tem um valor que é um dicionário. E esse dicionário contém as chaves como componentes, com o valor sendo a quantidade necessária de componentes definidos. Por exemplo, precisamos de duas CPUs. Para nosso PC para jogos, precisamos de quatro GPUs Para nosso PC para jogos, precisamos de 16 RAM, precisamos de dois SSDs, dois HDDs, etc., etc Agora, por favor, alguns de vocês podem ser. Ponto branco? Não, não precisamos de CPUs. Existem diferentes tipos de modelos, seja o que for. Ouça, vamos continuar com isso porque precisaremos criar uma maneira de lidar com os dados que temos. No momento, não nos importamos com a precisão. Nós nos preocupamos mais com nossa capacidade de acessar esses dados e trabalhar com eles. Agora que temos isso, você o terá em algum lugar abaixo do vídeo ou em qualquer lugar ao redor. Se você tiver problemas para encontrá-lo, entre em contato comigo. Se você não conseguir baixar o arquivo ou tiver algum problema , entre em contato comigo ou com seu instrutor local Agora que temos isso, a próxima coisa que queremos fazer é mudar isso. Como não queremos apenas imprimir os componentes necessários, também queremos imprimir as quantidades. Temos a parte de quatro componentes. Agora vou dizer a quantidade de sublinhado necessária em componentes, itens Então, lembre-se agora de quando usamos o item selecionado para acessar o modelo do computador, por exemplo, digamos que seja o laptop comercial. O valor que obtemos é outro dicionário. O outro dicionário agora são os componentes. E agora podemos usar o item para acessar o par de chaves e valores que estão nesse dicionário. Podemos analisá-los ou descompactá-los em componentes e quantidade necessária se o componente estiver no armazenamento de peças de computador Isso é bom. Mas isso não é suficiente, porque também queremos ver se temos quantidade suficiente. Ou seja, aqui mesmo, se tivermos as quantidades necessárias. Por esse motivo, vou desafiar você a obter a quantidade armazenada. Portanto, use o método dot get para obter a quantidade que temos armazenada. Não, para obter a quantidade que já temos armazenada, coloque o valor que obtemos em uma variável. E se não tivermos o componente, queremos verificar o retorno zero. Então, passe o vídeo agora mesmo e vá fazer o desafio. É apenas uma linha de código. Ok, bem-vindo de volta. Espero que não tenha sido muito difícil aqui. Depois de obtermos a peça componente e exigirmos a quantidade, o que vou fazer é dizer que a quantidade em quantidade de armazenamento sublinhado O armazenamento de sublinhado será igual à quantidade sublinhado será igual à de peças de computador que o armazenamento E eu vou usar o componente parte zero, basicamente estamos simplesmente cortando partes do computador usando a parte do computador, porque lembre-se de que a parte do computador aqui é uma CPU ou GPU ou uma RAM ou SSD ou qualquer outra Estamos indo para o armazenamento, estamos verificando isso aqui, estamos retornando o valor dessa chave. Se não houver uma chave com esse nome, retornaremos zero. Por que isso? Porque agora não basta que o componente esteja no armazenamento de componentes. Temos outra coisa mais importante aqui. Precisamos verificar o seguinte. Precisamos verificar se a quantidade necessária é menor ou igual à quantidade armazenada. Se estiver, significa que está disponível. Mas se não for, o que faremos é fazer algo um pouco diferente e configurar as coisas para o próximo vídeo. Vamos dizer que a quantidade sublinhada dois, sublinhado y é igual à quantidade necessária menos a quantidade Em vez de dizer que você não tem a peça necessária, diremos que você precisa comprar quantidade de campo de reposição para comprar a peça componente. Agora vamos ver o que podemos verificar aqui. E antes de tudo, quero que você veja o código. Eu quero que você inspire, expire, compreenda completamente o que está acontecendo Os pontos principais são os itens componentes, como isso ficou disponível para nós, porque agora temos um dicionário de dicionários em seus valores, como acessamos a quantidade armazenada usando a parte componente E também como estamos comparando a quantidade necessária com a quantidade e o armazenamento. Todas essas coisas são muito complicadas. Talvez se você ainda for iniciante, provavelmente seja como bobagem Reserve um tempo, pause o vídeo, assista novamente, refaça, teste suas próprias coisas por conta própria Certifique-se de entender o que está acontecendo. Porque é muito importante para o próximo vídeo em que criaremos listas de compras Vamos testá-lo. Antes de entrarmos aqui, vamos voltar para o computador. Vamos ver, temos dez CP usados. Temos qualquer coisa que não podemos conseguir. Vamos ver, placas-mãe, todas elas exigirão apenas uma placa-mãe O que? Vamos tentar alguma coisa. Digamos que a RAM para o PC para jogos seja 16. Digamos que temos apenas dez Rams. Ok, então quando escrevo clique e corro, opa, executei o incorreto , clique com o botão direito e execute Então, sua escolha. PC para jogos. Pressione Enter. A CPU disponível, a GPU disponível, mas então diz que você precisa comprar seis de RAM ou seis Rams Sim, vai ser complicado acertar isso. Talvez apenas 66, qualquer coisa com um S. Vamos tentar isso de novo. 16 carneiros, vamos lá, seis carneiros. O SSD está disponível. Tudo está disponível. Vamos tentar a estação de mídia. Tudo está disponível. O estojo está disponível. Lá vamos nós. Precisamos comprar um sintonizador de TV, uma placa de som e um controle remoto Bom. Vamos ver. Talvez se usarmos o laptop comercial. Uh hein. Precisamos comprar baterias, então não é perfeito. Claro, você pode criar declarações if, mudar isso, mudar aquilo, garantir que tudo isso se encaixe corretamente. Você pode verificar se um ou mais de um. Mas o objetivo aqui não é tornar isso perfeito. O objetivo aqui é que você entenda como isso está funcionando, e espero que tenha entendido. Por favor, leia o código, certifique-se de entender o que está acontecendo e nos vemos no próximo vídeo. Mas uma coisa que eu queria acrescentar que poderíamos ter mudado isso de um dicionário. O valor poderia ter sido alterado de um dicionário para uma lista de tombos. Por exemplo, imagine que todos sejam iguais a este. Agora que poderíamos ter feito isso, teria funcionado. O único problema é que talvez PC para jogos queira ser modificado. Talvez queiramos modificá-lo. Talvez queiramos dar a opção a alguns usuários de aumentar o, aumentar o SSD ou qualquer outra coisa E queremos mudar isso no modelo real aqui. Nesse caso, isso não seria porque são imutáveis, mas os dicionários É melhor ter um dicionário nesse caso, mas alguns funcionariam bem. Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, criaremos uma lista de compras a quantidade necessária para comprar. Alguns de vocês estão muito confusos neste momento. Mais uma vez, como eu disse, respire fundo. Por favor, tente entender isso. Se você conseguir superar isso, é muito, muito simples seguir em frente e você terá uma compreensão muito, muito forte de tudo o que está relacionado ao tratamento de dados usando Nos vemos no próximo vídeo. 110. 9. Crie uma lista de compras: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, continuaremos em nosso projeto de construtor de computadores. Agora, o que faremos é pegar todas as quantidades necessárias dos componentes necessários que nos faltam e adicioná-los a uma lista de compras para que possam ser enviados para Amazon e, em seguida, os componentes possam ser comprados. Não sei se vai ser a Amazon. Só estou dizendo que haverá uma lista de compras criada automaticamente. Então, vamos seguir em frente e fazer isso. Primeiro de tudo, precisamos criar esse dicionário ou inicializá-lo, pelo menos aqui no topo Vou criar algo chamado lista de sublinhados de compras, que será igual a um dicionário vazio Em seguida, criaremos a função que adicionará esses itens à lista de compras. Definirei sublinhado, itens de sublinhado ou o item porque trabalharemos um item por vez Nós vamos ter os dados, vou me certificar de que o tipo é dicionário. Você deve saber como essas anotações funcionam a partir do número da seção, eu nem sei, a função de retorno de algumas seções Então teremos o item, deve ser uma string. E teremos o valor compensado do item que precisamos comprar, que será um número inteiro E garantiremos que essa função retorne nada ou nada aqui. Vou dizer que se o item está nos dados , vou acessar os dados, adicionar esse item e vou aumentar na quantidade. O que isso faz é basicamente examinar todos os dados que temos e verificar se o item já está lá. Porque lembre-se, o item, nesse caso, será a chave e o valor será o valor que precisamos obter. Em primeiro lugar, queremos verificar se essa chave já está nos dados. Se for, adicionaremos o valor a ele. O que significa que, digamos que precisávamos comprar uma bateria, agora precisamos, sei lá, três baterias. Mas a segunda condição será L ou não. A segunda condição, apenas a declaração L, será que simplesmente digamos que os dados desse item-chave serão a quantidade. Obviamente, isso é uma função, então ela precisa de um pouco de espaço na parte inferior e também na parte superior. Lá vamos nós. Agora, criamos o item de compra publicitária. Finalmente, precisamos realmente começar a usar essa função. Mais uma vez, estou me sentindo preguiçoso. Este é um novo dia para mim. Ainda é de manhã cedo. Então, será um desafio para você chamar nossa função. Em primeiro lugar, onde devemos chamar essa função em nosso código? Muito importante, chame a função e forneça o seguinte, a lista de compras vazia, obviamente a parte componente, e adicione a quantidade que precisamos comprar. Por fim, imprima a lista de compras quando sairmos do circuito selvagem. Então, passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, a primeira parte do desafio foi onde devemos chamar essa função? Bem, se você folhear o código, se você entendeu o código dos vídeos anteriores, é por isso que é muito importante que você entenda o que aconteceu no vídeo anterior e siga em frente Não estamos aqui para vencer uma corrida. Isso não é uma corrida de 100 metros. Esta é uma longa maratona na qual precisamos nos acompanhar Onde devemos chamar essa função? Bem, primeiro de tudo, aqui estamos verificando quais são os componentes. Portanto, o componente e a quantidade necessária para ele. E então estamos verificando se a quantidade necessária está disponível no armazenamento. Se estiver, dizemos que está disponível. Caso contrário, dizemos que precisamos comprar esse item, que significa que é aqui que também devemos adicioná-lo ao carrinho de compras. Então, vou adicionar um item de compra e agora preciso fornecer o dicionário ao qual queremos adicionar esse item. Que dicionário é esse? Sim, exatamente. É a lista de compras. Em seguida, precisamos fornecer o item que precisa ser adicionado. O que é esse item? É a parte componente, que está aqui. Esse é o componente que queremos adicionar. E, finalmente, qual é a quantidade que precisamos comprar? É bastante óbvio que é a quantidade a ser comprada. Lá vamos nós. Agora que chamamos nossa função, a última coisa a fazer é realmente imprimir a lista no final. Quando terminarmos com tudo isso, vou imprimir, quero dizer, vou dizer quatro itens na lista de compras, itens, vou imprimir. Itens. Tudo bem, creio que estamos prontos. Vamos testar esse programa. Eu vou correr até aqui. Vamos adicionar um PC para jogos. Tudo bem, então temos tudo o que precisávamos para comprar o Ram. Vamos adicionar uma estação de trabalho. Tudo bem, o que compramos? Deveríamos ter comprado 22 Rams. Compre um IC adicional. Eu não sei o que é isso. adicionar uma central de mídia, certo? Você precisa comprar um sintonizador de V, um controle de som. Tudo bem? Acho que são modelos de computador suficientes. Vamos chegar a zero, sair, e vamos ver, veja o que temos aqui. Temos Ram, IC 111 adicional e os Rams são 28 Vamos fazer uma pequena verificação do que está correto. Então, primeiro de tudo, precisávamos comprar seis Rams, ótimo. Então precisávamos comprar 22, o que dá 28. Pronto, 28 é o que temos. Também precisávamos comprar a NIC. Se você se lembra, verificamos isso, foi uma coisa estranha Eu nem sei o que é isso. Sintonizador de TV, aí está. Olha isso, a placa de som e o controle remoto, olha isso. Curiosamente, são casais está acontecendo aqui é que os dados que estamos recebendo, mesmo sendo um dicionário, mesmo sendo um dicionário, sendo fornecidos aos casais. Se você não tem certeza do porquê e de que tipo de lógica é essa, deixe-me mostrar Vamos tentar imprimir a lista de compras por conta própria. Sem nada, vou clicar com o botão direito do mouse e executar isso novamente. 15,4 e depois zero. Tudo bem, lá vamos nós. Veja o que temos aqui. O que estamos fazendo é imprimir os tombos. Lembre-se de que temos itens e, quando estamos fazendo os itens, ele retorna uma peça que devemos desempacotar Mas, neste caso, não estamos desempacotando, estamos apenas imprimindo. Esse é o básico disso. Como você pode ver, a lista de compras é um dicionário. Estamos imprimindo os itens pontilhados. Espero que você goste, espero que tenha entendido. Eu acredito que essa não é a conclusão do nosso projeto. Ainda temos uma pequena coisa a mudar, que será adicionar itens usando algo chamado set default. E vamos ver onde isso acontece. Espero que você tenha entendido tudo. Espero que você tenha gostado. Espero que você esteja entendendo a complexidade por trás do tratamento de dados usando dicionários Novamente, eu recomendo fortemente que você volte, dê uma olhada, entenda o que está acontecendo. Esses são momentos cruciais em nossa jornada no tratamento de dados usando dicionários E nos vemos na próxima. 111. 10. Adicionando itens usando setdefault: Bem-vindo de volta, meus desenvolvedores favoritos de Python. Neste vídeo, continuaremos trabalhando em nosso projeto. Este será o último vídeo relacionado a esse projeto, então vamos adicionar itens usando o padrão definido. E veremos qual é a diferença entre o set default e o get que estávamos usando antes. Vamos começar. Primeiro de tudo, vou criar um novo arquivo aqui, um novo arquivo, apenas para que possamos testar o padrão definido, ou antes de tudo, para ver o que ele realmente faz e como se parece. Vou criar o conjunto de sublinhados. Sublinhado padrão. Boom, lá vamos nós. Então, direi que, a partir de peças de computador, conteúdo. Importe o armazenamento de peças de computador. Estou apenas trazendo o armazenamento aqui. Deixe-me encerrar isso. Não precisamos disso por enquanto. E então eu vou querer verificar a quantidade de GPU que temos no armazenamento do nosso computador Eu direi que a quantidade de sublinhado da GPU, tudo bem, é igual ao armazenamento padrão do computador definido e então eu vou pegar o P e depois vou dizer também zero e vou querer imprimir P, dois campos de substituição e quantidade de GPU Então, o que fizemos aqui? Não vamos rodar ou talvez vamos apenas rodar e ver qual é a saída, primeiro de tudo, ok, GPU sete Se olharmos para o computador, o conteúdo das peças do computador, veremos que a GPU aqui é de fato sete. Tudo bem, perfeito. Então, se olharmos apenas para ela no nível da superfície, ela retornará qualquer que seja o valor perfeito da chave especificada. Não há nada mais do que isso, pelo menos no nível da superfície. Mas se oferecermos mais do que o padrão definido, vamos ver qual descrição ele nos dá. Ele insere a chave com o valor padrão se a chave não estiver no dicionário E então diz, retorna o valor da chave se a chave estiver no dicionário. Basicamente, o que isso faz é ter um efeito opcional, se você quiser chamá-lo assim. Se a chave estiver em nosso dicionário ou no dicionário a partir do qual estamos tentando acessar a chave de deslocamento de valor Se já estiver lá, acabamos de retornar os valores. Por exemplo, aqui na GPU, queríamos obter o valor na chave da GPU, acabamos de obter o valor sete Se digamos que a GPU não estivesse no conteúdo de peças do nosso computador , a GPU seria adicionada a esse Lá vamos nós. Mais uma coisa aqui é o zero que eu forneci. Então esse é o valor real que seria dado. Por exemplo, digamos que a GPU não existisse. Então, quando usamos a GPU padrão definida como zero, um novo item com a chave GPU seria adicionado com um valor Especificamos o valor que queremos agregar. Vamos tentar isso adicionando uma bateria porque sabemos que não temos uma bateria. Se você se lembra, se você olhar para trás aqui, não temos a bateria. Eu vou dizer que o sublinhado da bateria é um, T é igual ao padrão de armazenamento de peças do computador e adicionaremos a bateria e zero, então eu vou imprimir a quantidade de bateria de dois campos de reposição da bateria Se eu escrevo, clique e corro, veja só, recebo um valor pela minha bateria. Isso parece bom. Isso é algo que esperamos por causa do valor padrão que dissemos, por causa do que exploramos Mas isso se parece muito com algo que usamos antes, que foi o segundo, deixe-me descobrir onde está Então, onde usamos o ponto? Vá para algum lugar por aqui. Onde está? Por quê? Lá vamos nós. Usamos get where Tentaríamos obter o valor do nosso dicionário, mas caso o dicionário não tivesse essa chave, retornaríamos um valor padrão. Isso parece muito parecido, mas como eu disse, a diferença entre esses dois é, espere, eu não vou te contar Vamos testá-lo. Adicionaremos uma quantidade de sublinhado da placa de som porque também não temos uma placa de som E eu direi que é armazenamento de peças de computador. Consiga. Placa de som, vírgula 1. E, na verdade, vamos adicionar duas baterias aqui. Aqui vou imprimir a placa de som. Dois pontos, quantidade de placa de som de campo de reposição. Clique com o botão direito, corra. Lá vamos nós. Agora temos duas baterias e uma placa de som. Mas há uma diferença entre usar o get e o set default. Vamos ver como isso é aqui. Vou imprimir apenas um espaço vazio. Vou imprimir que o armazenamento agora contém três pontos. Estamos reprocessando coisas, examinando o armazenamento Vou dizer que quatro valores-chave são classificados. Quero organizar os itens de armazenamento de peças do meu computador. O sorteio é apenas um pouco extra, não é muito necessário Aqui, imprimirei o valor da chave e adicionarei um separador que será apenas uma coluna, clique com o botão direito do mouse e execute Vamos ver o que temos. Olha isso. Temos uma bateria, mas se eu rolar para baixo, não consigo encontrar uma placa de som em nenhum lugar. Então esse é o básico. A bateria foi adicionada, a placa de som não. Portanto, o padrão definido na verdade é adicionado ao nosso dicionário, enquanto o get simplesmente imprime um valor caso não haja nada lá. Esse é um procedimento muito comum de adição ao nosso dicionário, caso estejamos trabalhando com algo como uma lista de compras. O desafio será atualizar nosso método. Em primeiro lugar, de volta ao nosso script de criação de computadores, não sei por que isso é um ponto por si só. Você precisará melhorar nosso código usando set default. Basta acessar os dados usando a chave do item e usar definir padrão com o item e adicionar o valor a ele. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, como você conseguiu fazer isso? Não é um desafio fácil, mas se você tomar seu tempo, você deve ser capaz de fazê-lo. Vamos voltar ao nosso arquivo do construtor de computadores. E no método em que aplicamos os dados ou aplicamos aos dados as quantidades que estávamos obtendo, vamos alterá-lo para que funcione de uma maneira melhor. Vou comentá-los apenas para guardá-los para mais tarde. Talvez você queira voltar. Você quer ver quais mudanças fizemos como melhoramos nosso código. E eu vou dizer que os dados, esse item, serão iguais aos dados. Mas disse que o item padrão está recebendo zero mais o valor. O que está acontecendo aqui? Por que essa única linha de código, primeiro lugar, é tão complicada? Em segundo lugar, por que ela sozinha substitui essas duas linhas? A primeira coisa que devemos observar é que estamos acessando os dados, que seriam um dicionário no item especificado. Em primeiro lugar, estamos adicionando ou criando um novo item lá. Em seguida, estamos usando o padrão definido nos dados usando o item. O que isso fará é primeiro verificar se esse item já está dentro de nossos dados. Se estiver dentro de nossos dados, se for a chave do item ou se tivermos uma chave que também seja igual ao item, obteremos o valor dela aqui e ele será adicionado ao valor e, em seguida, será definido como o item de dados. E é sempre bom no mundo, mas caso não haja um item nesses dados, vamos defini-lo como padrão e, em seguida, adicionaremos o valor a ele. E isso deve resolver todos os nossos problemas. Vamos continuar escrevendo, Clique e execute, mas antes de esperarmos, acho que aqui é uma boa ideia imprimir o armazenamento de peças do computador. Então, aqui eu vou comprar um PC para jogos. Eu, você sabe o que, vamos pegar o pacote inteiro. Compraremos todos os cinco. E agora vou chegar a zero e veremos que a bateria Ram 28 , um touch pad 11111, tudo é um E adicionamos tudo ao nosso dicionário, então a saída é a mesma que tínhamos antes. Mas agora, em vez de usar duas condições, tenha em mente que isso não é algo necessariamente menosprezado. Evitar usar uma condição aqui pode nos ajudar muito. Simplesmente chamamos uma função, agora é discutível, qual é a mais eficiente? O que é mais elegante? Definitivamente, usar essa linha é mais elegante, parece mais profissional, mais aprofundado. E isso ajuda a evitar certos problemas que podem surgir ao usar algo assim. Isso é semelhante à escolha entre dot get e os padrões Dos O padrão é simplesmente mais avançado. É melhor evitar erros futuros. Então, muito obrigado por assistir. Estamos no final do nosso projeto. Espero que você tenha gostado se ainda não tem certeza de como tudo isso funciona, especialmente essa parte do código. Eu sei que alguns de vocês podem saber, em geral, como esse código funciona, mas se você quiser ler cada linha, você pode ficar confuso. Eu recomendo fortemente que você passe por isso mais uma vez. Certifique-se de entender tudo corretamente e deixe-me uma pergunta, se tiver alguma, em qualquer lugar que puder. Muito obrigado por assistir. Nos vemos no próximo vídeo, onde veremos a criação, a atualização e algo chamado dicionário de valores a partir de sequências Muito obrigado por assistir e nos vemos no próximo vídeo. 112. 11. Criando, atualizando e dicionários de valores a partir de sequências: boas-vindas de volta aos meus desenvolvedores favoritos de Python em um vídeo totalmente novo E neste vamos aprender sobre criação, atualização e algo chamado valores. Vamos começar. A primeira coisa que farei é criar um novo arquivo Python que vou chamar Lá vamos nós. Agora, aqui, vou criar uma lista surpresa de computadores que terá a GPU da CPU A propósito, é claro que não importa se você usa aspas duplas ou simples Eu apenas tento usar os dois de vez em quando. Em seguida, vamos criar um novo dicionário de sublinhado que será um novo dicionário E vou dizer dict dot from keys e depois itens do computador e vou imprimir o novo dicionário. A primeira, há duas coisas novas aqui, o ditado e depois as teclas de origem. Vamos falar primeiro sobre o dict dot. Você verá que este é o dicionário da classe. Podemos manter o controle e clicar nele para ir até onde essa classe foi definida. Você pode ler tudo sobre isso, se quiser. Você pode até mesmo consultar as documentações aqui. Se eu passar o mouse sobre isso, você pode até mesmo acessar todas as documentações sobre os dicionários, como eles funcionam, o que fazem, quais funções eles têm, quais funções eles têm, tudo o que você possa imaginar Você pode entrar aqui, ver a cópia, ver os itens, por exemplo, olhar as chaves, o pop, aí está. Alguns deles, já vimos o padrão definido, a atualização, veremos daqui a pouco os valores que veremos mais tarde e assim por diante. Muitas informações úteis e um dos métodos disponíveis em nosso dicionário são as chaves from. Se passarmos o mouse sobre ele, o que ele diz? Ele cria um novo dicionário com chaves de itteruble e valores definidos como value Mãe, ele. Então, basicamente, o que está dizendo é que ele criará um dicionário com chaves de um itterble Então, o itterbal pode ser uma lista, pode ser uma string, pode ser uma queda. Seja qual for a origem desse itterbal, os itens desse itterbal criarão um dicionário, ou os itens que estavam nesse itterbal se tornarão as chaves no dicionário que se tornarão Vamos ver o que acontece quando escrevemos Click e corremos e olhamos para isso. Então, criamos um dicionário a partir das chaves em nosso uterbulo, que é a lista neste caso E você verá que os valores são todos nenhum. Os itens da lista se tornaram as chaves para diferentes itens no novo dicionário que criamos. Mas também poderíamos ter especificado um valor em vez de não ter nenhum, poderíamos dizer zero. Agora, quando escrevemos Click e olhamos para isso, todos eles têm zero. E a partir daqui, podemos começar a mudar as coisas, atualizar as coisas, e assim por diante. Vamos continuar e analisar a atualização. Vou colocar uma letra pequena aqui e vou dizer que tenho um e é igual a a, depois um, depois 2,3 Eu também terei dois, que será A. Espere quatro, D cinco. Lá vamos nós. Agora temos esses dois dicionários. Você notará que apenas um item tem uma chave em comum entre eles, que é a B. Vou dizer que a segunda atualização de dados, deixe-me dizer qual é a atualização. Teremos ou superaremos e veremos o que é. Mas primeiro, teremos valor nos itens de dados e imprimiremos a coluna de valores-chave. Se passarmos o mouse sobre a atualização, ela não nos fornecerá muita coisa Pelo contrário, ele nos fornece demais por algum motivo. Deixe-me tentar fazer isso de novo. Sim, ainda não está aparecendo corretamente. De qualquer forma, vamos tentar clicar com o botão direito do mouse e executar e ver o que acontece Você verá que estamos imprimindo tudo, desde o primeiro ditado, nos itens, na chave e no valor. Você verá que A é um, B é. Quatro, C é três e D é cinco. Então, neste momento, com seu conhecimento de dicionários, você deve ter certeza do que está acontecendo Assim como vimos antes. Quando tentamos adicionar outra chave em nosso dicionário. A chave não é adicionada como um item separado, apenas atualiza a localização anterior da chave, não a localização do valor anterior da chave. Por exemplo, aqui a única coisa em comum é B. O B vai de 2 a 4 quando atualizamos o dicionário um com o dicionário dois, e então esse item com chave D é adicionado ao dicionário um Não acho que seja muito complicado. Acho que faz muito sentido. Agora vamos continuar e analisar o uso da enumeração em um de nossos dicionários e o que acontece Vou adicionar outra impressão. Vamos continuar a partir daqui. Vou criar três, que serão iguais ao seguinte. Temos zero como chave. Observe que é um número inteiro e as chaves podem ser inteiras Será uma exibição. Oh meu Deus, vá lá. Um. O teclado dois, touch pad três, SSD para o HDD Tudo bem. Lá vamos nós. Este é o dicionário número três. E nós vamos ter feito isso. Vamos atualizá-lo com a enumeração dos itens do computador Essa é uma linha grande, grande e sofisticada. Mas, de qualquer forma, vou copiar isso e imprimir o **** número três Antes de corrermos, quero que pensem no que vai acontecer aqui. Por favor, pare um momento pense no que o enumerador fará E eu sei que há um destaque aqui, mas isso não vai causar nenhum problema. Faça o que Talvez a inteligência esteja apenas nos avisando, você sabe, talvez algo ruim aconteça, mas acho que não. Eu quero que você pense no que o enumerado geralmente retorna, que ele E então, quando for usado nos itens do computador e usado para atualizar o dicionário três, qual será a aparência da saída. Pare um momento e pense nisso, obviamente depois do vídeo, quando escrevo, clique e corro, veja o que recebo. Então, meu dicionário três tinha zero, display rodoviário em um, teclado em dois, touchpad em três SSDs e quatro HDD Agora, depois da minha atualização aqui, em zero, tenho CPU, em uma tenho GPU e, em duas, rodei Então, o que aconteceu aqui? Bem, o que aconteceu é que, a propósito, o 3.4 permaneceu o mesmo E isso deve ser uma grande indicação para você, os itens do computador são a lista que criamos aqui no topo, temos CPU, GPU e RAM, e eles foram convenientemente colocados em suas posições Por que isso? Bem, porque lembre-se de que o enumerate retorna o índice e valor associado a esse Temos zero CPU, uma GPU e duas RAM Quando fazemos a enumeração, obtemos a CPU zero, 12 Ram obtemos a CPU zero, E então, quando atualizamos o dicionário três, ele apenas olha para ele e diz, ok, então zero era tela, mas agora é CPU, um era teclado, mas agora é GPU e três ou dois era Touchpad, e agora é RAM E então, no SSD e no HDD, nada mudou porque não temos elementos extras Se tivéssemos um elemento extra aqui, isso também mudaria o SSD Ok, espero que tenha ficado claro. Vou tentar fazer algo para talvez deixar isso ainda mais claro. O que você acha que aconteceria se eu mudasse isso 2-6 Pense nisso. Não tenha pressa. Pense em como seria a saída se eu escrevesse, clique e corresse, veja o que eu fico um pouco estranho Vamos diagnosticar isso. Em primeiro lugar, a CPU e a GPU passam pelo mesmo processo Onde temos os itens de computador 01.201, mas não há dois, o 0.1 Então temos o touchpad. Correto? O touchpad permanece o mesmo Três SSDs permanecem iguais. Quatro HDD permanecem iguais. Agora a pergunta é: como o Ram chegou aqui? Bem, lembre-se de que ainda temos o Ram. Ainda enumeramos toda a lista de itens do computador, temos 01.2. A única diferença é que os 0.1 foram substituídos usando a CPU e a GPU, mas a RAM foi adicionada no final, na parte inferior depois de todo o resto Caso você ainda não tenha certeza do que está acontecendo aqui, direi apenas quatro valores na enumeração dos itens do computador e, em seguida, imprimirei o valor itens do computador e, em seguida, imprimirei o imprimirei E o p será, como sempre, esses dois pontos. E deixe-me adicionar uma impressão aqui para que possamos separar as coisas. Olha só, eles estavam acostumados com CPU, GPU , RAM 01.2, eles deveriam substituir a tela e o teclado Eles não conseguiram atualizar o touchpad, o SSD nem o HDD, mas a RAM ainda foi adicionada no final É assim que podemos atualizar nossos dicionários. Antes de prosseguirmos, vamos analisar os valores aqui. Vou fazer outra impressão, vou fazer três valores de sublinhado equivalentes a ditar três valores Vou imprimir três valores. Então, se eu escrever Click e correr, o que eu ganho? Eu recebo valores de dicionário, CPU, GPU, Touchpad, SSD, HDD e RAM Então, o que é isso? Basicamente, ele retorna um objeto de visualização que contém os valores do dicionário. Você pode usar esse método para iterar os valores de um dicionário ou converter os valores uma lista ou talvez em outro tipo de dados É muito útil verificar quais são os valores que estão dentro desse dicionário. Então, veja, temos os valores que são representados. Então, temos como chaves, o 016342, e dentro temos Agora temos essa lista de valores e vamos ver como isso pode nos ajudar. E, na verdade, quando digo nós, quero dizer você porque você tem o desafio de verificar se há um. Então, eu quero que você use os valores dos pontos para iterar no dicionário três, mesmo que eu já tenha feito isso para você Mas eu quero que você imprima todos os valores, e eu quero que você use uma instrução F para verificar se temos Ram em nosso dicionário usando os valores. Pause o vídeo agora mesmo e vá para o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Já usamos os valores. Eu não vou me aprofundar nisso novamente. O que vou fazer é dizer que se Ram, na verdade, Ram em dict valora três. Eu deveria. Desculpe por isso. Ok, o que eu estou fazendo? Mantenha pressionada a tecla shift shift Alt para mover isso para baixo. Faça com que nosso código tenha uma boa aparência. E serão três valores. Se Ram estiver nos três valores ****, vou imprimir, você tem Ram, Ram Parabéns. Se eu escrever Clique e você verá que tem RAM. Pronto, então você tem Ram. Parabéns. Como você pode ver, essa é uma maneira mais rápida de analisarmos os valores. Porque lembre-se, se o fizermos, se Ram estiver no dict three sem os valores que estamos verificando aqui, ele simplesmente iterará sobre as chaves Então, se quiséssemos examinar os valores, teríamos que usar essas chaves e colocá-las em um dicionário e depois extrair as informações. Um processo longo, que nos permite acessar os valores diretamente. Se você ainda está vendo isso, isso é chamado de objeto de visualização. É algo um pouco mais avançado. Eu não quero me aprofundar muito nisso agora, mas se você quiser, o que diabos é até mesmo um objeto são esses valores reais Você pode simplesmente fazer quatro loops, quatro valores em valores ditados e imprimir o valor. Isso deve ficar bem claro agora que estamos iterando os valores Espero que tenham gostado, desculpe pelo vídeo muito longo. Honestamente, eu não esperava que demorasse tanto. Mas aprendemos muito. Aprendemos a criar usando as teclas From. Aprendemos sobre a atualização. Aprendemos sobre enumeração. Aprendemos sobre atualização e enumeração e valorizamos, portanto, muitas informações valiosas No próximo vídeo, veremos a cópia superficial e, em seguida, a cópia profunda, terminaremos com os dicionários e passaremos Muito obrigado por assistir. Espero que gostem e nos vemos no próximo vídeo. 113. 12. Cópia rasa com dicionário: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, veremos textos e dicionários superficiais Ou com dicionários, vamos começar. Antes de tudo, precisamos entender que existem dois tipos de cópia. Há a cópia superficial e depois a cópia profunda. Veremos uma cópia profunda mais tarde. Primeiro de tudo, vamos até o arquivo e criaremos um novo arquivo Python que será a cópia de sublinhado K. Vamos encerrar este Não precisamos disso por enquanto. E criaremos dict one que é igual a um. Oh meu Deus. E feche isso novamente. Deixe-me copiar isso porque, honestamente, estou me sentindo preguiçoso. Base, baseie esse espaço Bc23. Parece bom? Sim, é verdade. Tudo bem, então aqui eu vou dizer que eu tenho **** dois iguais a **** **** um na posição ou na tecla B é igual a 15. Em seguida, vou imprimir **** dois. Veja isso. O que eu fiz foi alterar o valor da chave em **** uma. Como você acha que será a saída? Vou escrever, clique e vou correr, e agora vou receber 15. Hm. Interessante. Mesmo que eu tenha alterado apenas no dicionário 1. dicionários são mutáveis, o que significa que você pode alterar o conteúdo de um dicionário após sua criação É muito importante ter isso em mente, mas o que podemos fazer é realmente criar uma cópia do nosso dicionário sem ter que mudar o segundo dicionário, apenas para manter uma versão antiga do nosso dicionário. Vamos seguir em frente e fazer exatamente isso. Eu vou comentar isso, essa linha. Em vez disso, vou dizer que o ditado dois é igual ao ditado uma cópia. Então, aqui, trocamos o ditado um em B. Vou imprimir **** dois Vamos continuar e também duplicar isso e imprimir o ditado um em kb Qual você acha que a saída será agora? Bem, se você não sabe o que é cópia, ela apenas cria uma cópia superficial de D. Se eu escrever, clique e execute, deve ser bastante óbvio que, antes de tudo, não funcionou Agora funciona. Olha isso. No dicionário número dois, ainda temos B como dois. No dicionário número um, temos 15 porque atualizamos apenas o ditado um. Quando criamos uma cópia superficial, isso significa que é uma cópia completamente diferente, uma cópia completamente separada E vamos ver mais exemplos que explicam isso. Mas isso deve ser bem simples. Não há nada demais aqui em que pensar. Vou adicionar uma impressão e vou continuar aqui. Vou criar o ditado de sublinhado original. Eu vou dizer que o dicionário original será de dois pontos. Abra 111 espaços, copie tudo isso e cole e cole. Vamos ter B e C e ter 2202333. E vamos remover isso, mesmo que não cause erros, porque o Python é incrível, mas é melhor mantê-lo limpo E aqui eu vou ter um sublinhado raso, ditado de sublinhado e será igual à cópia original do Então eu vou dizer o dicionário original na posição em kb. Os velhos hábitos são difíceis de morrer. Anexar e eu acrescentarei até 22. O que está acontecendo aqui? Quero que você realmente pense como será a saída quando imprimirmos o original e imprimirmos o raso Em primeiro lugar, o que o apêndice faz? Por favor, lembre-se do anexo. Anexar, ok? Ou acrescentar significa acrescentar algo a ele. Portanto, lembre-se de que aqui temos dicionários com chaves, strings e os valores Então, aqui está uma lista. Então, quando dizemos acrescentar, estamos adicionando dois a 222 a dois Então, estamos adicionando 222 à lista em B. Isso é o que queremos dizer quando fazemos isso, porque quando extraímos o valor na chave B, temos uma lista que significa que podemos acrescentá-la Então, qual você acha que será o resultado quando imprimirmos a lista original e a rasa? Pense sobre isso. Estrondo. Lá vamos nós. Sim, espere, espere, espere, espere, o que? Espere, isso não é uma cópia superficial? É, não é? Então, por que o original também mudou de forma estranha, mas muito interessante? Vamos aceitar um desafio para entender o que aconteceu. O que eu quero que você faça é criar listas separadas de cada valor-chave. O que quero dizer com essa lista deveria ser 111, lista B, 222 deveria ser 333 Então, no dicionário original, quero que você defina as teclas a, B e C na lista correspondente. O que significa que não queremos dizer literalmente que é 111, é 222, seja o que for Queremos dizer que a é a lista a, B é a lista B, C é a lista. E então eu quero que você anexe uma lista e eu quero que você me diga o que acontece com os dois dicionários e como eles se os dois dicionários e como Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Eu vou ter um igual a isso. Duplique isso duas vezes. Listaremos a lista 2202333. Agora, em vez disso, teremos que listar uma lista. Então precisamos, em vez de fazer isso, eu vou comentar isso. Vou pegar a lista B, anexo 222. Agora, se eu escrever, clicar e executar, a saída permanece a mesma. Mas deveria ser muito mais óbvio como isso também muda a cópia superficial Talvez eu tenha cometido um erro. Eu estava dizendo como a cópia original mudou? Porque na verdade mudamos o dicionário original. O que eu quis dizer é que a cópia superficial mudou? E, como você pode ver, é porque as listas são mutáveis Aqui temos a lista, anexamos a lista E a lista foi anexada não apenas ao dicionário original, mas também à cópia rasa dele Então, a lista realmente foi atualizada. A lista é um objeto que atualizamos e, como é mutável, ela também foi atualizada na cópia superficial e em qualquer outro lugar Então, estamos atualizando uma lista. Está bem? É por isso que a cópia superficial também teve seus valores atualizados Vamos levar isso para casa e garantir que o entendamos completamente no dicionário original. Vou fazer o seguinte original na chave B, e anexar o original adicionado A cópia superficial adicionada por meio do dicionário de cópia superficial. Mesmo que seja uma lista de números inteiros. Estamos anexando-o com sequências de caracteres. Quando escrevo, clique e corro, veja só, recebo os dois. Está bem? Isso ocorre porque quando estamos anexando um dicionário em uma determinada chave, isso significa que estamos anexando essa lista E as listas são mutáveis, o que significa que elas mudam em todo o nosso programa Portanto, independentemente de usarmos o raso ou o dicionário original, estamos anexando uma lista que está mudando E isso mudará em todos os nossos dicionários. Se estivermos usando a mesma lista, espero que faça sentido. Pode ser um pouco confuso, mas se você seguir as etapas e entender que eram apenas listas, fica muito mais óbvio Muito obrigado por assistir. No próximo vídeo, veremos Deep Copy com dicionários e nos vemos em breve 114. 13. Cópia profunda com dicionários: Bem-vindos de volta, meus colegas desenvolvedores de Python a um novo vídeo, e neste vamos dar uma olhada em uma cópia profunda Vamos começar. Primeiro de tudo, vamos criar um novo arquivo Python onde faremos nosso material de cópia profunda Cópia profunda. Pressione enter aqui. Em primeiro lugar, vou criar o ditado de sublinhado original Vai ser igual ao seguinte. Vamos ter dois pontos, 12. E então teremos que fazer, eu continuo chamando-os de dois pontos. São colunas. Eles são chamados de colunas, mas o nome não é tão importante quanto a funcionalidade. E desde que você entenda o que está acontecendo, isso é um dicionário, com as teclas sendo cordas, sendo letras E então temos dentro do valor, que é uma lista. Em seguida, vamos criar uma cópia superficial. Cópia superficial e ditado de cópia superficial, digamos assim. E será igual à cópia original do dicionário. Vimos isso no vídeo anterior e, como funciona, vou imprimir o ID do dicionário original A. Duplique-o e imprima a cópia rasa e rasa Ditado, cópia superficial. Sim, lá vamos nós. Então, estamos imprimindo os dois IDs primeiro do original e depois da cópia superficial O que eu quero que você faça, o que eu quero que você faça é que eu quero que você pense em quais serão as identidades. Agora, obviamente eu não quero que você adivinhe a identificação exata. Eu quero que você adivinhe se eles serão iguais ou serão diferentes. E deveria ser óbvio se você entendeu claramente o que aconteceu no vídeo anterior. Pense nisso antes de correr. E quando corrermos, você notará que eles são iguais. Agora, por que eles são iguais? Bem, isso é porque é uma cópia superficial, se você se lembra Porque a cópia de sublinhado raso ou sublinhado raso, dicionário de sublinhado, é porque a cópia de sublinhado raso, ditado de sublinhado é um dicionário de cópia ditado de sublinhado é um ou sublinhado raso, dicionário de sublinhado, é porque a cópia de sublinhado raso, ditado de sublinhado é um dicionário de cópia superficial do original. O que acontece é que os itens ou o valor dentro dos itens do dicionário original, que são listas, permanecem os mesmos. Aqui, observe que estamos copiando em a na chave a, que significa que estamos nos referindo à mesma lista. Vimos o resultado de ter essa cópia superficial. Quando alteramos uma lista, a outra muda na segunda cópia. Agora vamos analisar a cópia profunda e será um desafio para você criar uma cópia profunda. Primeiro, veja como criar uma cópia profunda de um dicionário. Você pode acessar um site chamado Geeks For Geeks, acho que se chama Você pode conferir como a cópia profunda funciona lá. Crie uma cópia profunda do dicionário original, imprima o ID na chave a e tente anexar o dicionário original para que possamos ver o que aconteceria nesse caso A cópia profunda muda quando você muda o dicionário original? Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Espero que você tenha feito o possível para pesquisar como isso é feito. É muito importante que você também entenda como a pesquisa funciona. Então, primeiro de tudo, vou importar uma cópia. Então, essa é a primeira coisa que precisamos fazer. Há um módulo que precisamos importar que é a cópia. Em seguida, vou criar uma impressão aqui apenas para separar as coisas. E talvez até, vamos fazer algumas estrelas aqui multiplicadas por 50 para que saibamos que agora estamos entrando no mundo da cópia profunda Tínhamos uma cópia superficial, agora estamos trabalhando em uma cópia profunda aqui Eu vou dizer uma cópia de sublinhado. dicionário de sublinhado é igual a copiar uma cópia profunda do dicionário original Vou imprimir, deixe-me copiá-los porque sou preguiçoso. Lá vamos nós. Então, qual você acha que a saída será agora? Agora, eu, obviamente, você já fez isso provavelmente neste momento, você sabe. Mas digamos que você não tenha feito isso, você era preguiçoso. Agora é a hora de parar de ser preguiçoso. Então me diga o que eles vão ser. Eles serão os mesmos ou mudarão? Quando eu escrevo, clico e corro, você verá que eles são realmente diferentes. Por que isso? Bem, primeiro de tudo porque na primeira vez eles eram iguais. Então, obviamente, algumas das mudanças que fizemos devem mudar a forma como elas se comportam. Mas isso não vem ao caso. Isso é psicologia, mas estamos falando sobre ciência real ou ciência da programação. Eu não sei como você quer chamá-lo. Você pode ver que eles realmente mudam. Porque quando você cria essa cópia profunda, deixe-me passar o mouse para ver a operação de cópia profunda. Está bem? Não necessariamente descreve isso, mas se você pesquisar por ele, ele realmente cria itens completamente separados da lista original, do dicionário original. O que significa que as listas são novas, são completamente diferentes, foram copiadas profundamente Se você quiser chamá-las assim, para verificar isso, vamos tentar mudar o dicionário original Assim como o desafio nos disse, o dicionário original em um anexo com 12 Vamos acrescentar 12 e imprimiremos o dicionário original E imprimiremos o dicionário de cópia profunda. E imprimiremos a cópia superficial. Quero que você me diga quais serão os valores antes de executarmos o programa. Deve ser bastante óbvio que agora você verá que a original foi modificada, a cópia profunda não foi modificada e a cópia superficial, de fato, foi modificada Portanto, não há alterações na cópia profunda porque essas são duas listas completamente diferentes. Eles não estão mais ligados em nenhuma forma ou forma por nada. Eles têm identidades diferentes, têm complexidades diferentes Eles trabalham em um campo de jogo completamente diferente. Então, espero que isso seja óbvio, espero que você tenha entendido o que está acontecendo aqui. Quando você está fazendo uma cópia superficial, é uma simples transformação da lista Mas quando você está trabalhando com uma cópia profunda, você tem um dicionário completamente diferente, com listas completamente diferentes, com valores, itens e chaves completamente diferentes. Eles não são nem um pouco iguais. Então, muito obrigado por assistir. Acredito que este seja o último vídeo sobre dicionários. Talvez eu acrescente mais tarde, mas, por enquanto, esse é o fim. No próximo vídeo, faremos uma introdução aos sets, que é muito empolgante. Estou sempre animado para começar algo novo. Muito obrigado por assistir. Nos vemos no próximo vídeo. Tchau tchau por enquanto. 115. 14. Introdução aos conjuntos: boas-vindas de volta aos meus desenvolvedores favoritos de Python em um vídeo totalmente novo E neste, examinaremos os conjuntos. Vou manter dicionários e conjuntos na mesma seção porque eles são, bem, muito Acho que talvez eu os separe. Quem sabe? Vamos continuar e começar. Em primeiro lugar, o que diabos são conjuntos? Um conjunto é uma coleção de elementos exclusivos em Python, ênfase na palavra exclusivo, indicada por colchetes ou pela função Portanto, isso pode ser uma surpresa, mas dicionários e conjuntos são indicados usando colchetes Mas você verá que é bastante óbvio, ou há uma maneira muito fácil de distinguir entre esses dois Em primeiro lugar, vamos ver se os conjuntos são mutáveis e podem ser modificados usando vários métodos Eles são mutáveis, podem ser modificados. Os conjuntos podem conter elementos de qualquer tipo de dados. Você pode ter strings, números inteiros, listas, talvez dicionários, talvez um Até você pode fazer isso. Os conjuntos não permitem elementos duplicados. Isso é muito importante. Ao contrário dos dicionários em que você pode ter a mesma chave e, em seguida, ter alterações no valor Quando estamos trabalhando com conjuntos, não há como ter elementos duplicados Você não pode ter dois elementos iguais em um conjunto. Os conjuntos estão encomendados. Isso é muito novo para nós. Esse é um conceito novo, o que significa que seus elementos não têm posições ou índices específicos Se você se lembra de quando estávamos trabalhando com listas, começamos em 0123 Podemos acessar esses elementos usando seu índice. Quando estamos trabalhando com tombamentos, o mesmo acontece. Podemos usar o índice para acessar certos elementos na queda. E quando trabalhamos com dicionários, também podemos acessar elementos usando seus IDs, usando suas chaves Mas agora, ao trabalhar com um conjunto, você não pode acessar nenhum elemento pelo índice porque eles nem mesmo têm um índice. Eles não estão ordenados, não estão ordenados. Eles não têm uma posição específica. E você verá que toda vez que executarmos o programa, o conjunto terá uma aparência diferente. Os conjuntos podem ser usados para operações como união, interseção e diferença simétrica usando operadores ou métodos Veremos tudo isso nos próximos vídeos. Então, use seus bonés de raciocínio porque vamos dar uma volta procurando cenários Eles não são muito complicados. Na verdade, os conjuntos são muito simples. Tudo o que fizermos será muito fácil. É muito mais fácil do que dicionários. Mas lembre-se de que ele precisa de concentração. Precisa de compreensão. Portanto, este é um conjunto de animais, gatos, cães, cavalos, pássaros, galinhas e répteis Então eu quero que você me diga se neste conjunto ou neste conjunto, qual é o índice número zero? Você não pode porque eles não estão ordenados. Você pode começar do topo e dizer, oh, cachorro é um pouco mais alto que gato, cachorro está em zero, gato está em um. Mas alguém pode argumentar queremos começar da esquerda, o dragão está em zero, o gato está em um, o pássaro está em três. Você entende o que eu quero dizer? Cada vez que for diferente, eles estarão sob isso, por exemplo, uma representação em código de como seria esse conjunto. Temos um conjunto de animais, gato, dragão, galinha, cobra, réptil, etc., etc., o que você quiser que caiba dentro disso que você quiser que caiba Tudo bem, então chega de teoria. Vamos explorar o uso de código. Vou criar um novo arquivo Python aqui que vou chamar de introdução aos sets ou set int int Escreverei clique e fecharei outras guias, podemos escrever Clique aqui e fechar outras guias para que tenhamos uma nova Só para os conjuntos aqui, vou criar frutas e vai ser igual a maçã, banana, por exemplo, laranja, laranja, kiwi e abacaxi E então eu vou imprimir as frutas quando eu escrevo clique e eu corro, esta é a banana de saída. Laranja, maçã, kiwi. Abacaxi. Mamãe, hmm. Interessante Você notou que a banana está na primeira posição e a maçã está na terceira, e depois a laranja está na segunda, enquanto em nossas frutas originais, maçã, banana e depois laranja. Você pode ver que não há mais um pedido para eles se eu clicar com o botão direito do mouse e executar novamente. Agora a maçã está no começo, mas depois não há uma banana, há uma laranja e o kiwi está no final Como você pode ver, eles não estão ordenados. Toda vez que você executa a tela muda e ela pode ser diferente do seu lado, não importa. Você também pode iterar em um conjunto. Por exemplo, aqui eu posso dizer quatro frutas em frutas. Imprima a fruta. Quando você escreve, clica e corre, bum, aí está. Laranja, abacaxi, maçã, kiwi e banana. Você pode iterar sobre isso. Se eu executá-lo novamente, você verá que a ordem muda. E observe como é igual ao conjunto que criamos, ou o imprima aqui. Maçã, kiwi, laranja, banana, abacaxi. Isso deveria ser óbvio. Nada muito próximo. Há algumas coisas que você deve ter em mente ao ter uma lista não ordenada Isso significa que não adianta tentar acessar um elemento de um conjunto, por exemplo. O que quero dizer é que se eu tentar imprimir aqui e tentar imprimir frutas na posição um. Quero dizer fruta, fruta na posição um. Observe que imediatamente temos um destaque. Se passarmos o mouse sobre o destaque, o que ele diz? Conjunto de classes não definido, operador Obter item não pode ser usado nessa instância. Se eu tentar escrever click and run, você verá que recebo um erro e na verdade, um erro de tipo porque o objeto definido não está subscrito, você não pode se inscrever nele Ao contrário do meu futuro canal no Youtube ou do que já está no ar, você não pode usar os colchetes para acessar determinados elementos porque não adianta O que está no elemento um, não sabemos. Não há ordem para isso. Não é como esse pedido aqui. Não fique cheio. Não pense que uma deveria ser banana. Porque se eu escrevo Click e corro, é diferente, agora é laranja. Não adianta tentar acessar. O que podemos fazer com os sets? Bem, podemos pegar dois conjuntos não ordenados e compará-los, por exemplo, vou comentar este Vou criar mais frutas sublinhadas aqui. Eu vou comer laranja. Eu vou comer banana. Eu vou comer maçã. Eu vou comer abacaxi e kiwi. Pronto, você notará que é o mesmo, mas eles têm duas ordens diferentes. Interessante, pelo menos quando os lançamos. Eu vou dizer que frutas são iguais a mais frutas. Vou ressaltar que eles são os mesmos. Eu vou dizer que eles não são os mesmos. O que? Eles não são os mesmos. Qual você acha que será o resultado? Eles serão iguais ou serão diferentes? Pense sobre isso. Me diga o que você acha. Quando eu escrevo, clico e corro, boom, eles são realmente os mesmos, embora sua ordem seja diferente. Porque não adianta fazer um pedido. Eles têm os mesmos elementos dentro deles, o que significa que eles são realmente os mesmos. Se eu mudar isso e, por exemplo, adicionar cereja aqui. Agora, se escrevermos Click e executarmos, você verá que eles não são iguais. Eles podem ser usados para comparação. Vamos continuar e dar uma olhada em algo sobre o qual talvez eu não tenha falado tanto quanto deveria. Você verá que aqui temos algo onde dissemos denotado pelos colchetes ou pela Vamos ver a função definida e como ela funciona aqui. Vou adicionar outra impressão. Vou dizer números, a lista de sublinhados de números é igual a 12.318,9 Então vou imprimir o conjunto da Antes de corrermos, vamos dar uma olhada no conjunto que tenho aqui, novo objeto de conjunto vazio criou uma coleção não ordenada de itens exclusivos Se eu escrever, clicar e correr, aí está. Você pode ver que criamos um conjunto desses números e notamos que eles não estão ordenados Mesmo que sejam 12.3, eles estão ordenados, se você quiser chamá-los da mesma forma que a ordem do número inteiro, que significa Talvez se adicionarmos cinco aqui, ele também deva ficar na posição correta. Lá vamos nós. Mas isso é apenas por padrão. Não é porque o conjunto é ordenado, você não pode acessar elementos dentro dele. Então, espero que você tenha entendido que isso não é muito complicado. Os conjuntos são bastante fáceis. Agora eu tenho um desafio para você. Seu desafio será definir uma string, criar uma variável de string, qualquer variável de string que você quiser, convertê-la em um conjunto usando o método set, imprimir a saída e me dizer como ela se parece. Ok, então pause o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Então, como você conseguiu lidar com isso? Não deve ser muito complicado. Simplesmente aqui, vou imprimir apenas uma linha vazia. E eu direi que string underscore var é igual a Hello World. E vou imprimir o conjunto de cordas antes de executarmos. Se você não fez o desafio, mesmo que eu ficasse muito decepcionado se você não tivesse feito, precisamos clicar com o botão direito do mouse e executar e você verá que esse é o resultado que obtemos Temos o espaço, obviamente, porque também é um personagem, o ponto de exclamação W, etc., etc Porque lembre-se também de algo muito importante aqui que você pode ter esquecido Quantos L's nós temos? Temos três L's em nossa string var. Quantos L's temos em nosso conjunto? Só um. Por que isso? Porque dentro de um conjunto, você não pode ter elementos duplicados Espero que você tenha entendido. Muito obrigado por assistir. Lembre-se de que esse é um intervalo que significa que cada caractere é um item na string, assim como temos uma lista aqui, é por isso que temos cada caractere sendo um item em nosso conjunto Muito obrigado por assistir. Espero que você goste. No próximo vídeo, veremos a adição em conjuntos e duplicatas Então eu vou te ver então. 116. 15. Adicionando em Conjuntos e duplicatas: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, veremos como adicionar itens a um conjunto e verificar duplicatas, ou seja, remover duplicatas de um Vamos começar. Primeiro de tudo, vou criar um novo arquivo Python aqui que vou chamar adicionar sublinhado, dois conjuntos de sublinhados aqui vou criar números, então vou inicializar números, então vou inicializar números, mas o problema é isso é um conjunto ou é um dicionário Mamãe, hmm. Não vamos tentar imaginar isso. Vamos tentar realmente testá-lo. Vamos verificar qual é o número do tipo. Se eu escrever, clique em Executar, você verá que a classe é a de um dicionário. Bem, isso porque, para inicializar um conjunto, precisamos defini-lo como essa função Agora, quando eu escrevo click run, você verá que eu realmente recebo um conjunto. Então, como podemos adicionar ao conjunto? Bem, vou seguir em frente e fazer o seguinte, dizendo esse número e adicionarei 42, a resposta para o universo. E também imprimirei números, clique com o botão direito do mouse em Executar. E aí está. Você pode ver que eu tenho 42 dentro dos números. Adicionar simplesmente não acrescenta nada demais aqui. Vamos criar um loop que continua sendo adicionado ao nosso conjunto. Aqui, vou adicionar uma impressão e, em seguida, vou dizer que, embora o tamanho dos números seja menor que seis, vou criar o valor sublinhado dois O anúncio sublinhado será entrada inteira e, por dentro, eu vou dizer, insira o valor para adicionar o valor Deixe-me tornar isso maior. Aqui, eu vou dizer números, valor. Em seguida, imprimirei os números no final. Clique com o botão direito e execute. Vamos receber insumos. Não acho que esse código precise ser muito explicado neste momento. Você sabe exatamente como os loops funcionam, sabe exatamente qual é o comprimento, sabe exatamente como acessar suas entradas Agora, acabamos de aprender a adicionar. Acho que não tem muita coisa aqui. Vamos usar bombas 1216, 4089, 0230, 2605. Eu estava olhando para o meu teclado, como você pode ver, temos esses números diferentes. Todos eles foram adicionados e estão definidos. E observe que eles não têm a mesma ordem os adicionamos quando estávamos inserindo. Isso é muito bom e é uma indicação da classe ou de como nossos aparelhos operam. Agora vamos tentar isso de novo, mas desta vez vou adicionar 122 vezes. Lá vamos nós. Você pode ver que agora temos um 12 aqui. E, a propósito, se você estiver contando os números e ainda houver seis, tenha em mente que adicionamos 42 aqui no topo. Tenha isso em mente. Você pode ver aqui que temos 42. I 12 adicionei apenas uma vez, embora tenhamos adicionado várias vezes ou tentado adicioná-lo várias vezes. Vamos adicionar 12 vezes. Pronto, olha isso. Se eu continuar adicionando 12 mesmo antes de fazermos isso, ele continuará tentando obter entradas porque o comprimento dos números nunca ultrapassará seis Porque continuamos tentando adicionar 12 e a duplicata está sendo removida Portanto, essa é uma boa funcionalidade de ter conjuntos, caso você queira ou não ter duplicatas em seu código ou em suas listas ou conjuntos, ou em qualquer conjunto de dados que você tenha Você pode colocá-lo em um conjunto, ele apenas removerá as duplicatas Portanto, é uma ótima ferramenta. Vamos continuar e agora vamos examinar remoção de duplicatas de várias maneiras Vou criar um novo arquivo Python que vou chamar de remover o sublinhado Eu vou ter uma lista de pedidos. Surgirá um? E algumas vezes eu vou pedir 234567. Acho que é o suficiente, mas quero misturá-los. O que quero dizer com isso é que eu quero 132. Vamos manter 45 em 83123456 E vamos ter um sete aqui e um cinco aqui. Ok, então, como você pode ver, há um problema aqui. O problema é que temos o pedido dois aparecendo duas vezes, correto? Sim, só duas vezes. Portanto, isso é um problema e talvez o usuário ou o programador não tenha percebido isso ou tenha havido um bug no programa para fazer o pedido não intencional Para garantir que não tenhamos duplicatas em nossos pedidos, podemos convertê-los em um conjunto E quando eu digo nós, você sabe o que fazer, quero dizer você, porque você precisa criar um conjunto, você precisará criar um conjunto a partir das listas de pedidos que podemos ter. Use a função set e imprima o resultado. Pause o vídeo agora mesmo e vá para o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Vou ter pedidos exclusivos, e será igual a um conjunto de pedidos, e pronto. E agora, quando tentei imprimir os pedidos exclusivos, você verá que eles são todos diferentes e não temos duplicatas. Quão legal é isso? Agora, é claro, você poderia ter examinado essa lista e tentado verificar se fez dois pedidos várias vezes. Mas e se você tivesse o pedido sete aparecendo três vezes, pedido 25 vezes, pedido 310 vezes Levaria muito tempo para garantir que não houvesse duplicatas, muitas declarações, alguns quatro loops, alguns loops y. Usando isso, você pode simplesmente inserir sua lista que tem duplicatas na função set e ela simplesmente retorna um novo conjunto sem Isso nos poupa muito tempo. Também poderíamos fazer o seguinte. Em vez de apenas ter esses pedidos, poderíamos classificá-los em vez de serem aleatórios e espalhados por todo lugar Se eu escrever, clique em Lá vamos nós, você pode ver que eles realmente estão classificados. E observe algo muito importante também. Quando você usa o sorted, ele o converte em uma nova lista Agora você também tem uma lista ordenada de seus pedidos, sem duplicatas Mas e se você quisesse manter o mesmo pedido? Podemos fazer o seguinte. Em vez de usar o sorted, podemos dizer que queremos ter, na verdade, deixe-me duplicar Deixe-me levar isso de volta à sua forma original e depois comentar. E duplique isso também. E comente agora, para que você possa ver todas as fases do nosso projeto, programa ou exemplo. Podemos fazer o seguinte. Podemos dizer que ditamos isso a partir de chaves, pedidos. Agora, quando escrevo, clique e corro, veja o que recebo, recebo o pedido 13247865 OK. Isso é muito longo. OK. Deixe-me colocá-lo aqui. Ou, na verdade, eu poderia ter usado o bar. Por que eu não usei o bar? Você verá que a ordem dois aparece apenas uma vez e a ordem três está na posição correta. Usando o dicionário, o que você poderia fazer é me deixar duplicar isso e transformá-lo em uma lista Lá vamos nós. Agora você tem uma lista que ainda tem a mesma ordem de pedidos. O conjunto, infelizmente, não preservará o pedido para você. Esta é uma visão geral de como você pode adicionar, converter, criar conjuntos, e estamos começando a ver como isso pode ser útil. No próximo vídeo, veremos como apagar itens dos sets Então, estou muito animado em ver você lá. Muito obrigado por assistir. E nos vemos no próximo vídeo em alguns segundos, talvez. 117. 16. Apagar itens de um conjunto: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, veremos como aumentar e excluir, descartar e limpar tudo o que envolve a retirada de elementos ou itens Vamos continuar e começar. Primeiro de tudo, vamos criar um novo arquivo Python que vou chamar de decretos definidos um novo arquivo Python que vou chamar de decretos definidos aqui. Vou criar os componentes de sublinhado do computador e eles serão iguais ao conjunto a seguir Teremos uma CPU, GPU, controle de RAM, controle SSD D e HDD Alguns componentes do computador. Deixe-me colocar isso de volta no lado direito para ter mais espaço. Vamos primeiro ver o que acontece se quisermos limpar a lista inteira. Vou simplesmente limpar os componentes do computador e depois imprimir os componentes do computador. E se escrevermos, clicarmos e corrermos, isso é o que obtemos um conjunto. Observe que não temos dois colchetes sem nada dentro deles , pois isso pode ser confundido com um dicionário vazio É um cenário sem nada dentro dele. Vamos continuar e ver duas maneiras diferentes de remover itens de um conjunto. Vou comentar essas linhas aqui. Eu vou dizer, componentes de computador. Remova o SSD. Duplique isso e agora os descartamos porque o SSD deve ser removido Além disso, queremos imprimir isso. Vamos mover esse aqui para cima. Se eu escrever, clicar e correr, verei que o B e o SSD foram descartados Se eu escrever, clique e execute novamente, aí está. Você pode ver que eles não estão mais lá. Muito bom Por que temos duas maneiras de remover elementos de um conjunto? Por que não ter apenas um? Como os dois funcionam bem, será um desafio para você levantar algo que não está em nosso conjunto ou que não está lá. Tente descartar um item que não está em nosso conjunto agora. Ou experimente o mouse, por exemplo, imprima os componentes. Agora, tente remover o mouse, qual a diferença? Pause o vídeo agora mesmo e vá fazer cada desafio. Ok, bem-vindo de volta. Espero que você tenha tentado o seu melhor. Vamos comentar isso também. Aqui, eu vou fazer uma impressão. Não precisamos de uma impressão digital aqui. Vou simplesmente imprimir, oh meu Deus, isso, o mouse, três pontos, computador, mouse e imprimir componentes do computador Então, deixe-me copiar essas duas linhas, porque eu sou preguiçoso aqui Vamos remover e remover, o mouse e imprimir os componentes. E vamos ver o que acontece se eu escrever clicar e correr. Boom, lá vamos nós. Você notará que, se tentar descartar algo que não está lá, nenhum erro será gerado Mas a remoção gera um erro. Depende da situação em que você se encontra. Você usaria o descarte ou removeria. Talvez você esteja dizendo para si mesmo, bem, por que não usar o descarte o tempo todo Já que quem tem tempo para erros ou para outra pergunta que você possa estar fazendo, não deveríamos estar sempre cometendo um erro? Porque precisamos ter cuidado com o que estamos removendo? Então, novamente, isso depende da situação. Se as informações que você está tentando remover não forem confidenciais, você não se importa se elas estão lá ou não. Você só quer tentar removê-lo. Você pode usar o descarte. Se você está muito preocupado com o que está removendo, certifique-se de que está removendo algo preciso e correto. Em vez disso, você pode usar o método remove. Depende da situação. E se passarmos o mouse sobre isso, esses métodos removerão um número do conjunto de elementos Se o elemento não estiver, não há um membro, não faça nada. Se você passar o mouse sobre a remoção, verá se o elemento não é um membro, levante uma tecla Ou, finalmente, temos o último método para remover itens de um conjunto, que será o filhote. Já vimos o pop, mas vamos ver o que ele realmente faz. Vou comentar tudo aqui. Eu vou ir em frente e tirar alguma coisa. Os componentes do computador aparecem e simplesmente imprimem os componentes do computador. Que tal isso? Se não colocarmos nada no pop, o que acontece é que um elemento aleatório ou um item aleatório é removido. Isso é útil em situações como remoção aleatória. Talvez você queira aumentar a eficiência da memória porque usar o discord e removê-lo pode criar novos conjuntos Às vezes, os conjuntos são mutáveis, às vezes os conjuntos são mutáveis Quando você está descartando e removendo, criando novos conjuntos, é menos eficiente usar o pop Se você não está preocupado com o elemento que está removendo, basta remover um elemento. Remoção aleatória de um jogo, talvez ou algo assim. Então set é seu melhor amigo. Muito obrigado por assistir. Esse foi um exercício muito simples. No próximo vídeo, veremos a união, que nos ajudará a entender melhor por que os conjuntos são úteis. Muito obrigado por assistir e nos vemos no próximo vídeo. 118. 17. União de conjuntos: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E este analisará a união de conjuntos. Então, vamos primeiro entender o que realmente é. Digamos que definimos um que tem 123,6 e queremos criar uma união entre o conjunto 1.2 que tem 754,8 a união resultante, e é assim que escreveríamos, esse é o operador em Python que usamos O resultado seria um terceiro conjunto 123 conjuntos um e dois juntos, todos mesclados Então, vamos ver uma aplicação prática disso. Essa foi uma pequena prévia em dois desafios, mas não na totalidade Você terá isso em pouco tempo. Vamos continuar e criar um novo arquivo Python aqui. E vamos chamá-lo de e-mail com sublinhado. Sim, porque o que estamos tentando fazer aqui é que teremos dois conjuntos. O primeiro conjunto será composto por todos os clientes que compraram algum tipo de eletrônico em uma loja. O segundo conjunto será composto por todas as pessoas que compraram na loja. O que faremos é verificar todas as pessoas que fizeram uma compra e enviar a elas um e-mail promocional. Em primeiro lugar, criaremos o sublinhado eletrônico comprado e ele será igual ao John Não é assim que se escreve John. É assim que você escreve John, Sarah, Peter e Anna. Duplique isso. Teremos as roupas compradas compradas. Sim. Teremos John, Emily, William e Anna Essas são as pessoas que compraram eletrônicos. Essas são as pessoas que compraram roupas. Agora, vamos dizer que todos os clientes sublinhados são iguais aos eletrônicos comprados e às roupas sindicais compradas E agora podemos imprimir todos os clientes. Se eu escrever Click e correr, deixe-me colocar isso aqui. Você pode ver que criamos um sindicato. Mas ainda melhor do que isso, não precisamos enviar dois e-mails para John e Anna Porque quando criamos um sindicato, estamos criando um terceiro conjunto. O que significa que todas as duplicatas são removidas automaticamente Quão legal é isso? Isso economiza muito tempo, muita dor de cabeça. Você já sabe, porque nessa situação, você não se importa com o pedido. Você não se importa se manda Sarah ou Peter, ou John ou William, quem quer que seja Você não se importa com quem recebe o e-mail primeiro. Tudo o que importa é que todos que compraram na sua loja recebam um e-mail. Então isso é perfeito. No nosso caso, criamos isso e agora podemos enviar um e-mail para todos os clientes. Mas há uma maneira diferente de criar um sindicato. Podemos usar o operador que acabamos de ver. Então, na verdade, vou duplicar essa linha. E eu terei todos os clientes. Mas desta vez eu vou adicionar esse personagem de pipeline. Sim, isso é chamado de caractere do pipeline. Cada teclado o tem em uma posição diferente. Do meu lado, está acima da entarkuy, há a barra invertida e depois há o Se você pressionar a tecla Shift e clicar nela em um Mac, não tenho ideia de onde ela está. Você tem que fazer o possível para encontrá-lo. Mas esse é o personagem do pipeline. E se você clicar com o botão direito do mouse e correr, verá que também nos sindicalizamos Sindicalize isso, isso é para algo completamente diferente Criamos uma união entre os eletrônicos comprados e as roupas compradas. Espero que tenha entendido a tarefa. Espero que não tenha sido muito difícil para você. Não há nada demais aqui. União muito simples entre duas coisas. Agora vou te dar um pequeno desafio, e seu desafio será imprimir ordenado Então, tudo o que você precisa fazer é imprimir todos os clientes em uma lista ordenada Hm, lista ordenada interessante. Tenha isso em mente. Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Não deve ser muito difícil. Nós já vimos isso antes. Isso não é o que eu quero aqui. Em vez de imprimir todos os clientes diretamente, tudo o que precisamos fazer é dizer todos os clientes. Na verdade, isso não apenas classificará as pessoas que estão lá, mas também criará uma lista a partir delas. Lá vamos nós. Agora temos uma lista ordenada por nome, caso você precise Também existe uma maneira de adicionar os dois conjuntos usando a atualização. Se você se lembra, se eu fizer o seguinte, eu faço, compro eletrônicos, atualização fechada, imprimo os eletrônicos comprados. Você verá que eu também tenho isso e não há duplicatas iguais às que fizemos antes Qual é a diferença aqui? A propósito, a atualização também tem um operador próprio. Vou duplicar isso e vou comentar este. Você pode fazer o seguinte. Você pode dizer que eletrônico comprado e, em seguida, Pipeline é igual à roupa Isso faz a mesma coisa. Tudo bem. Clique em Executar. Veja isso, o pipeline, você não precisa se lembrar dos operadores. E falaremos sobre a diferença entre usar um operador ou uma função, mas a principal diferença entre a união e a atualização é que a união retorna um novo conjunto contendo todos os elementos dos dois conjuntos, enquanto a atualização modifica o original, aquele que estamos usando à esquerda, por exemplo, os eletrônicos adquiridos adicionando todos os elementos do outro conjunto. Essa é a única diferença. Antes de prosseguirmos, há mais uma coisa sobre a qual vale a pena falar : quando usar o nome de uma função e quando usar o operador. Há três coisas principais em que precisamos pensar aqui. Em primeiro lugar, é clareza, flexibilidade e tratamento de erros. Se considerarmos a clareza, usar os métodos de operação definidos como união e interseção, que você verá no próximo vídeo, pode tornar o código mais claro e fácil de ler, especialmente para pessoas que não estão familiarizadas com esses operadores Em primeiro lugar, se você está procurando clareza, usar métodos é melhor. Agora, quando se trata de flexibilidade, os métodos de operação do conjunto são mais flexíveis do que os operadores, pois podem ser usados com um número variável de conjuntos. Se você quiser passar vários conjuntos para a união de argumentos, talvez queira criar várias interseções Talvez você tenha dez conjuntos em vez de apenas um ou dois, enquanto os operadores só podem trabalhar conjuntos por vez. E, finalmente, quando se trata de tratamento de erros, os métodos também são melhores. A questão é: por que usar um operador? Não há nenhuma razão real, pois depende. Às vezes, se você tem algumas coisas rápidas que deseja fazer, você deseja realizar essas duas séries com a mesma rapidez. Você sabe que está fazendo matemática, não quer ter muitas funções, talvez isso também dependa da situação. Se não houver nada muito complicado, usar um operador é perfeitamente adequado. Acho que o operador pode usar um pouco menos de poder computacional Não tenho 100% de certeza disso, mas acho que essa é uma vantagem de usar operadores. É um pouco mais rápido no reino dos milissegundos. Por exemplo, se você o estiver usando em um loop e tiver apenas um mínimo de erros requisitos de tratamento de erros, usar um operador provavelmente seria a melhor opção aqui. Mas, em qualquer caso, se você tiver dúvidas, use um método como a união de pontos e não o operador. Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, veremos as interseções definidas e nos vemos lá. Tchau tchau por enquanto. 119. 18. Defina interseção: Bem-vindos de volta, meus colegas desenvolvedores de Python, a um novo vídeo E neste, veremos a interseção de conjuntos Então, primeiro de tudo, vamos ver qual é a interseção do conjunto em primeiro lugar Esse é o operador da interseção. Definimos três igual ao conjunto um e definimos dois. Ao contrário do sindicato, criamos um terceiro conjunto. Então, se tivermos definido um e conjunto dois, o conjunto um tem 625.738,4 O conjunto dois tem 5 731-323-1917 5 731-323-1917 A interseção seria esse conjunto aqui. O conjunto três nesse caso seria 57,3. Vamos entrar em nosso código e tentar aplicar essa interseção e ver como ela funciona aplicar essa interseção e ver como De volta aqui, vou criar um novo arquivo Python que chamarei de conjunto de sublinhados de interseção, pressionarei Enter e criarei o conjunto pressionarei Enter e criarei O que será igual ao intervalo definido. E o intervalo será 0,50,2. Duplique isso. Teremos um set de dois. E desta vez, a etapa será três. Lembre-se dos intervalos em que você tem o ponto inicial, o ponto final e a etapa Deixe-me imprimir o conjunto um e o conjunto dois. Quando escrevo, clique e corro, veja só, tenho 0, 246-810-1214, etc., dois passos Agora, o segundo está embaralhado. Não sei por que o primeiro não é. Não tenho certeza absoluta. Vamos tentar executá-lo novamente. OK. Aparentemente, estamos recebendo o mesmo. Acho que às vezes ele apenas seleciona números aleatórios, às vezes não Não tenho certeza absoluta. Oh, espere. Temos alguns números embaralhados aqui, como 40, 42. Nenhum número embaralhado no primeiro. O segundo tem muitos números embaralhados, mas não é um problema para nós Temos dois conjuntos. Queremos ver onde estão as interseções aqui com muita facilidade, criamos o conjunto de sublinhados na seção, que será igual ao conjunto um, ao conjunto de interseção dois E eu posso imprimir o conjunto de interseções quando clico com o botão direito do mouse, talvez Vamos adicionar uma impressão aqui apenas para maior clareza. Clique com o botão direito, corra e veja esse número. 0306 6402, 1248, 1820. 4.30 são interseções entre esses dois conjuntos aqui. Então, muito simples, bastante autoexplicativo. Não há nada demais para fazer aqui. Ele apenas descobre onde há interseções e cria um conjunto a partir dessa interseção ou dos itens que se cruzam entre dois conjuntos. Agora vamos ver um exemplo mais útil no mundo real. Digamos que temos duas listas de clientes que fizeram uma compra em uma loja. Uma lista seria de janeiro, a outra seria de fevereiro. E queremos ver onde está esse cruzamento, onde estão as pessoas que compraram em janeiro e fevereiro, porque queremos dar a elas um desconto promocional ou algo parecido Então, adicionarei a impressão e farei com que Jan sublinhe os clientes da mesma forma que Let's set John, posso pegar os que estavam aqui? Vou usar nomes diferentes. John, Sarah, Sarah. Isso é tudo. Você está certo, Sarah, Emily, David, Katie. Clientes duplicados de janeiro e fevereiro. Então, terei Sarah aqui, David, Katie, Stephen e Jenny Agora queremos encontrar a interseção. E quando digo nós, é claro que me refiro você, porque é um desafio encontrar a interseção Conquiste os clientes comuns entre janeiro e fevereiro. Use a interseção de funções. Use também o operador que eu lhe mostrei . Essa é a operadora. Em seguida, imprima o resultado de ambos os vídeos postados agora mesmo e faça o desafio Bem-vindo de volta. Como você conseguiu lidar com isso? Vou chamar isso clientes e vou dizer que é igual a janeiro cruzar clientes de fevereiro e imprimir os clientes comuns ou os clientes incomuns ou qualquer outra Clique com o botão direito do mouse em Run, Katie, David e Sara ou em todos os três Mas em janeiro e fevereiro, enviamos a eles uma promoção. A outra maneira de fazer isso, vou duplicar isso Entre na fila no topo e diga o seguinte. Estrondo. Esse é o operador que podemos usar. Se eu clicar com o botão direito do mouse e correr, teremos a mesma saída, Sarah, David e Katie É basicamente isso. Isso é um cruzamento Antes de prosseguirmos, quero aproveitar esta oportunidade para ver como ou como você pode criar interseções entre mais do que apenas dois conjuntos. Aqui, vou criar os clientes da marcha Portanto, os clientes da marcha são iguais a John A, Alex A, Emma, Sarah A. Vamos continuar usando aspas simples e Katie Agora, se quisermos criar a interseção entre três, usaríamos os seguintes clientes de março Quando escrevo Click e corro, lá vamos nós. Só compramos em janeiro, fevereiro. E como você pode ver, John não comprou em fevereiro em Katie, nossa cliente fiel Então, daremos a ela um bônus especial, a outra forma de usar isso, em vez de ter o operador, podemos usar a interseção E fazemos isso simplesmente adicionando uma vírgula aqui e adicionando isso, e devemos ter a mesma resposta Então, senhoras e senhores, espero que tenham gostado deste cruzamento definido No próximo vídeo, veremos a diferença de conjuntos. E, finalmente, examinaremos subconjuntos e superconjuntos e concluiremos a seção Parabéns por ter chegado até aqui. Se você me deixou uma crítica ou um comentário ou apenas me diga, ei, legal, eu amo isso. Claro, muito obrigado e obrigado por assistir até agora. Eu realmente agradeço isso. E nos vemos no próximo vídeo. Tchau tchau por enquanto. 120. 19. Diferença de configuração: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, vamos analisar a diferença de conjuntos. A diferença de conjuntos é muito simples. Definimos o número um, definimos o número dois, definimos o número três e definimos o número quatro. O conjunto número quatro, por exemplo, seria o conjunto número dois. Essa coisa toda amarela menos a parte verde. O que temos é essa parte aqui sem essa interseção No meio, teremos definido quatro sem a interseção E o conjunto três, que seria definido um menos o conjunto dois, seria a parte verde Então, esses são o conjunto três e o conjunto quatro, essa é a diferença e o operador é apenas o sinal de menos Muito simples. Vamos dar uma olhada em alguns exemplos práticos disso em nosso código. Vou seguir em frente e criar um novo arquivo Python, que será a diferença entre os conjuntos de sublinhados, e aqui vou apenas copiar o conjunto 1.2 Cole-os aqui e obteremos uma resposta muito normal, como tínhamos antes. É o mesmo intervalo que estamos convertendo em um conjunto. Agora vamos criar o conjunto de sublinhados de diferença, que será igual a definir um conjunto de diferenças dois e, em seguida, imprimir o conjunto diferente Quando eu escrevo, clique em talvez, vamos adicionar uma impressão aqui. Escreva, clique em Executar e é isso que obtemos. Essa é a diferença entre esses dois. Por exemplo, 28 está no primeiro conjunto, mas não está em nenhum lugar no segundo conjunto. Essa é a diferença entre elas. Mas lembre-se de que estamos definindo uma diferença, definindo dois. Se mudarmos isso, deixe-me copiar isso e colar aqui. E se definirmos dois conjuntos um diferentes, agora temos uma resposta diferente. Porque examinamos o conjunto dois e removemos dele tudo o que havia em comum no conjunto um. Por exemplo, 27 está apenas aqui no conjunto dois. O que mais? Por exemplo, nove só está aqui se tomarmos um número como 42. Está no segundo set. E no primeiro set, removemos a diferença. Fazer o contrário é diferente. Mãe, hmm. Então, vamos dar uma olhada em uma aplicação prática. Como sempre, digamos que temos uma lista de compras de clientes que inclui maçãs, bananas e laranjas E vamos verificar se temos algum tipo de item promocional, talvez haja uma promoção dessas maçãs ou dessas laranjas ou qualquer Então, vamos criar duas listas aqui. Duas listas de compras, quero dizer, não como as listas reais, serão conjuntos. Então, primeiro, teremos uma impressão e depois farei a lista de sublinhados de compras, que será igual a maçã, banana, laranja E os itens de sublinhado da promoção serão maçãs e bananas Agora, há um desafio para você, e seu desafio será encontrar a diferença, criar a diferença entre a compra e a promoção e usar os métodos e o operador. Publique o vídeo agora mesmo e vá fazer o desafio. O objetivo aqui é conseguir os itens que não estão sendo promovidos. sublinhado na promoção é igual à lista de compras menos os itens da promoção Então, um pequeno desafio aqui era que você precisava descobrir se deveria fazer lista de compras menos promoção ou promoção menos lista de compras Mas acho que é bem óbvio. Então, eu vou ter itens que não estão em promoção, vá lá. Não está em promoção, clique com o botão direito, corra. E lá vamos nós por um segundo. Eu fiquei surpreso. Eu estava tipo, espere, espere, espere, o que aconteceu? E acontece que temos maçãs, maçã, clique com o botão direito e corra, e agora deve funcionar. As laranjas estão na promoção. Eu estava tipo, espere, espere, o que aconteceu? Fiquei surpreso porque isso é muito fácil e simples, e cometi um erro Eu fico tipo, o que aconteceu? De qualquer forma, aí está. Como você pode ver, é assim que a diferença funciona. Muito obrigado por assistir. Espero que tenham gostado. Acredito que este seja o fim da seção, mas podemos adicionar mais vídeos no futuro. Talvez trabalhemos em subconjuntos e diferenças simétricas, mas, por enquanto, espero que tenham gostado e vemos na próxima seção, que deve ser lendo e Talvez estejamos atualizando. Não sei o que temos a seguir. Estou muito animada para começar a próxima seção e nos vemos lá. Tchau tchau por enquanto. 121. Seção 9 - Como ler e escrever arquivos | 1. Abrindo arquivos de texto: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo Neste vídeo, vamos começar uma nova seção que é ler e gravar arquivos em Python Esta é uma seção muito importante. É muito importante que você saiba escrever e ler um arquivo. Vamos continuar e começar. Em primeiro lugar, o que é um arquivo de texto em um contexto Python? Obviamente, sabemos que já é um arquivo de texto, mas queremos saber o que é no contexto do Python Então, primeiro de tudo, um arquivo de texto é um arquivo que contém caracteres ASC II ou Unicode Esse é um padrão em, no qual o computador grava certos caracteres como ABCD, etc., que podem ser lidos e escritos usando funções integradas do Pythons Podemos ler e escrever esses arquivos usando funções integradas do Python e veremos o que são Eles são usados para armazenar dados textuais, como cadeias de caracteres, números ou qualquer outro tipo de dado que possa ser representado como Python fornece várias funções integradas para ler e gravar arquivos de texto, como abrir, ler, escrever e fechar E vamos ver tudo isso e muito mais. Ao trabalhar com arquivos de texto, os arquivos de texto podem ser abertos em modos diferentes, como o modo de leitura para R e o modo de gravação. Nós os veremos quando você quiser ler, usar, quando quiser escrever. O modo é especificado como o segundo argumento para a função aberta. E veremos como isso fica quando temos o objeto de arquivo igual a abrir o arquivo de texto que queremos abrir. Lembre-se de que é um ponto, este vídeo será sobre como abrir arquivos de texto e depois passaremos para a leitura. Removendo, analisando extras, etc., usando o R aqui para indicar que estamos lendo Se você não fornecer nada, por padrão, ele pensará que você está realmente lendo o arquivo sem mais delongas. Vamos prosseguir e realmente começar a aplicar esse conhecimento a partir daqui. Vou seguir em frente e criar um novo arquivo Python. Novo arquivo Python, e vou chamá-lo de texto sublinhado Arquivo de sublinhado. Primeiro de tudo, vou criar um poema de sublinhado em Python, que será igual a E vamos abrir um poema em Python. Imediatamente você vê que temos todas essas sugestões. Quando você os tiver, basta clicar. Não se preocupe com isso. Agora vou fornecer esses arquivos em algum lugar em um botão ou algo assim. Portanto, certifique-se de baixá-los, descompactá-los e, em seguida, simplesmente arrastar o poema em Python para os arquivos de leitura e gravação aqui Ele perguntará onde você deseja Vá para o D one. Por algum motivo, é como, mas se você quiser fazer isso de uma maneira melhor, clique com o botão direito do mouse em abrir com Go to Explore aqui. Abra os arquivos de leitura e gravação envie esse arquivo. Essa é uma maneira muito melhor. Feche isso novamente. Clique com o botão direito do mouse em abrir, Explorar. Acesse o arquivo e envie o poema em Python. A partir daqui, vou dizer um poema em Python, e ele deve reconhecê-lo Obviamente, estamos tentando ler esse arquivo. Então, adicionaremos um R aqui e adicionaremos um espaço extra. Agora que temos isso, vamos escrever Click and run apenas para garantir que não recebamos nenhum erro. A função open é usada para abrir um arquivo de texto e retorna um objeto de arquivo que pode ser usado para ler e gravar dados nesse arquivo. Agora que temos acesso a todas as linhas do texto, precisamos imprimir essas linhas. Convencionalmente, nós as chamamos de linhas em um texto. Aqui, vou criar um loop de quatro porque podemos iterar sobre o objeto de arquivo Eu vou dizer quatro linhas em um poema em Python. Aqui, vou imprimir a linha. Se eu escrever, Clique e eu corro, isso é o que eu recebo. Veja isso em linhas de código e sintaxe. Limpe os faróis do Python com um cervo prometido com o poder de transformar e criar uma linguagem para dominar e elevar Agora, super cafona, eu sei. Mas é um bom poema se você ler. Se você ler, não é um poema ruim. Eu recomendo que você o leia, mas como você pode ver, conseguimos ler esse arquivo. Vamos abrir o arquivo e ver como ele realmente se parece. Se eu clicar duas vezes, ele abrirá um Intellij. O Intellij nos permite ler e, como você pode ver, este é o nosso Agora, imediatamente, você notará algumas coisas aqui. Em primeiro lugar, temos esses espaços extras entre as linhas. E também temos três espaços entre cada parágrafo. Obviamente, algo está acontecendo aqui. Estamos tendo que obter linhas extras de código. Agora, esse espaço está sendo impresso somente na saída. Isso ocorre porque, no documento de texto real, temos algo que chamamos de Enter. Então, toda vez que você termina a linha, pressiona Enter, vai para uma nova linha e essa chave está sendo impressa na saída. Porque lembre-se de que, quando estamos trabalhando com caracteres, os espaços também são caracteres e, nesse caso, as novas linhas também são caracteres. É por isso que temos esses espaços extras. Estamos lendo cada caractere, e um desses caracteres é o enter que o usuário pressionou quando queria ir para uma nova linha. É por isso que obtemos isso na saída. Agora, para mitigar esse problema, é muito simples. Simplesmente entramos aqui até a linha igual e fazemos isso, o que significa que o final da linha não deve ser nada Agora, quando escrevo, clico e executo, lá vamos nós. Você pode ver que a saída é muito melhor e não há espaço nem linhas em branco nela. Lembre-se das linhas brancas que são o espaço e a guia, e as novas linhas são todas contadas como caracteres. Já vimos isso antes quando estávamos indexando strings Portanto, nada disso deve ser muito novo para você. É apenas uma nova maneira de ver essas coisas. Então, agora que você tem todas essas informações, é hora de um pequeno desafio. E seu desafio será remover os objetos desnecessários. Eu quero que você procure a faixa de métodos em três escolas ou no Google ou qualquer outra coisa, sua escolha favorita de informações, recursos de Python, qualquer coisa, use-a nas linhas extraídas do poema em Python Portanto, tente usá-lo nas linhas que estamos usando ou obtendo do poema Python Imprima as linhas das tiras e me diga como ficam. Publique o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Aqui vou comentar esta linha. Eu vou dizer que a linha de sublinhado da faixa é igual à faixa de linha e, em seguida, vou imprimir a linha da faixa Agora, se eu escrever Click e eu correr, isso é o que eu recebo. Você verá que agora eu posso fazer isso sem o fim. Porque o que a faixa faz se passarmos o mouse sobre ela, ela nos dará qualquer coisa Retorna uma cópia da string com espaços em branco à esquerda e à direita removidos Se o personagem for fornecido e não for nenhum, removeremos o personagem que queremos em vez disso. Por exemplo, se eu quiser remover o botão direito do mouse e executar, você verá que os espaços em branco não são removidos, nem a vírgula Mas vamos nos aprofundar em como isso funciona exatamente. Mas, por enquanto, não se preocupe com isso. Saiba que, quando não fornecemos nada, na verdade, ele apenas remove os espaços em branco. Antes de prosseguirmos, há mais uma coisa que precisamos observar ao usar poemas em Python ou abrir arquivos de texto ou qualquer outro arquivo É muito importante que sempre fechemos nossos O que quero dizer com isso é que, quando terminamos de ler e escrever a partir de um arquivo, precisamos sempre digitar o seguinte arquivo Python, fechar Isso é muito importante porque às vezes evita a perda de dados se você não fechar o arquivo corretamente Então, você sabe, quando você está desligando computador e o Windows diz para você esperar, ainda há alguns arquivos que estão abertos e não foram salvos e tudo Tipo, é um grande negócio. Bem, é um grande problema porque pode corromper os dados que estão dentro de um arquivo de texto. Agora, obviamente, aqui, não é um problema, é apenas um poema tolo em Python Mesmo assim, precisamos fechar o arquivo, mas às vezes é um pouco complicado ter que abrir o arquivo e depois fechar o arquivo e depois fechar o arquivo e Felizmente, há um pequeno truque aqui em Python que você pode fazer para evitar esquecer de fazer evitar esquecer Vou comentá-los, por favor, não os exclua, mantenha-os com você. E eu vou te mostrar com open e depois abriremos o poema em Python ou para leitura como poema de sublinhado em Python Então, aqui, vamos dizer quatro linhas em um poema em Python retirado. Na verdade, por que estou passando por todo esse problema quando posso copiar e colar isso? Aqui, lá vamos nós. Portanto, essa é a melhor maneira de abrir o arquivo, pois evita esquecer o fechamento com a largura Na verdade, você fecha automaticamente os arquivos. Agora, se clicar com o botão direito do mouse e eu correr, você verá que obtemos a mesma saída. Muito obrigado por assistir. Espero que tenham gostado desse vídeo. Esse é um novo começo. Esta é uma seção nova, então eu preciso de sua concentração total. Pode parecer um pouco assustador no começo, mas confie em mim, ler e gravar arquivos não é tão complicado quanto se imagina quando você se acostuma Nos vemos no próximo vídeo, onde veremos a leitura arquivos em. Então, até lá. 122. 2. Como ler arquivos de texto: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, veremos mais maneiras de ler arquivos de texto. Vamos continuar e começar. Primeiro de tudo, vou criar um novo arquivo Python aqui, que serão os arquivos de texto de leitura Sublinhado de leitura. Arquivos de sublinhado. Estrondo. Vou encerrar os projetos. Eu só queria que você visse texto do poema Python em nossa Por enquanto, vou fechar a partir daqui. Eu vou fazer o seguinte, eu digo com o poema R aberto do Python como poema Python Se não estivesse claro desde o início. Aqui, quando dizemos poema S Python, isso significa que estamos criando o objeto de arquivo exatamente como fizemos Mas desta vez é um pouco diferente usando a largura daqui. Poema em Python Eu vou dizer que as linhas são iguais ao poema Python, linhas vermelhas. Lá vamos nós. Essa é uma forma diferente de ler. Então, fora da largura, vou imprimir linhas. Também quero imprimir o tipo de linhas. E talvez possamos fazer isso logo acima disso. Agora, quando eu escrevo, clique e corro, isso é o que eu recebo, uma classe de lista. E você verá aqui. Infelizmente, tenho que me mover da esquerda para a esquerda para a direita. Mas, como você pode ver, cada linha agora se tornou uma parte ou um item dentro de uma lista, as linhas lidas. Se eu passar o mouse sobre ele, o que ele diz? Vamos abrir isso aqui e dar uma olhada nas linhas de leitura de três escolas para obter uma explicação, três escolas para obter porque a documentação simplesmente não nos fornece nada. Ele simplesmente retorna todas as linhas do arquivo como uma lista em que cada linha é um item no objeto da lista. E é bastante óbvio , pela forma como vimos em nosso código aqui, que temos cada linha como um objeto separado. Mas você também notará que alguns personagens estranhos estão incluídos, como a nova linha que você vê aqui Agora estamos justificados com o que estava acontecendo no vídeo anterior, onde tínhamos linhas separadas entre cada linha e o poema É por causa desse caractere aqui, que se manifesta em uma nova linha na saída. Portanto, essa é uma maneira mais benéfica de acessar essas linhas, porque agora por exemplo, o que posso fazer é, em vez de imprimir tudo, fazer o seguinte. Digamos, o que isso faz? Pense nisso por um segundo. Isso, por exemplo, poderia nos fornecer apenas as cinco primeiras linhas em nosso código a partir de 0,123,4 O que é isso? Eu quero que você me diga. Eu quero que você pense sobre isso. O que é esse elemento aqui em nosso poema? Bem, obviamente é essa linha aqui. Temos a primeira linha, segunda linha, terceira linha, quarta linha. E esta é apenas uma nova linha e , na verdade, é um item da nossa lista. Há algo a considerar sobre essa forma de ler um arquivo. Ou seja, se tivermos um arquivo enorme com milhões de linhas e todas elas precisarem ser adicionadas à lista, ele poderá quebrar nosso código em algum momento. Vamos dar uma olhada na função de leitura, que talvez seja um pouco mais eficiente, mas ainda não é a melhor aqui. Eu vou dizer que na verdade não gosta disso, então eu vou fazer isso a partir daqui. Eu vou dizer que o texto é igual a poema, lido, lido, linhas Eu vou comentar isso também. Aqui eu vou imprimir o tipo de texto. imprimirei o texto quando escrevo, clico e corro. Isso é o que eu recebo. Se eu passar o mouse sobre a leitura, ela nos dará alguma informação útil desta vez Aparentemente, não de novo. Não se preocupe. Vou digitar read em Python Três escolas novamente, escolas. Vamos ver. Tudo bem, vamos ler um pouco sobre isso. O método read retorna o número especificado de bytes do arquivo. O padrão é menos um, o que significa que todo o arquivo com a leitura, podemos realmente especificar o quanto queremos ler do arquivo Por exemplo, 33. Eu não vou me aprofundar muito nisso. É um pouco mais eficiente do que a linha de leitura, pois cria uma única string da saída e você pode determinar quantos bytes deseja ler desse arquivo. Mas ainda é ineficiente para arquivos grandes porque lê o arquivo inteiro na memória de uma só vez O último método de leitura que analisaremos será um desafio para você. Seu desafio será ler linhas listradas. Você precisará usar a linha de leitura em vez de linhas de leitura para ler uma única linha do arquivo de texto. Novamente, recomendo que você pesquise nas três escolas W encontre uma maneira de imprimir essas linhas sem um caractere especial. E eu vou te dar uma dica. Se você não quiser a dica, pause o vídeo agora mesmo e vá fazer o desafio Se você quiser a dica, use a faixa em nossas linhas de leitura e depois, ou em nossas linhas vermelhas e depois imprima-as Pause o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Não deve ser muito complicado. Vou comentar esta linha. Eu vou dizer que essa linha é igual à linha de leitura do poema em Python. Vamos mantê-lo na linha de leitura por enquanto. Vou comentar isso em um espaço. Então, aqui, vou imprimir a linha e imprimir o tipo de linha. Antes de fazermos isso, eu não falei sobre essa linha aqui, a classe é string Quando fizemos o texto, quando fizemos a leitura. Então, algo para ter em mente. Mas agora, quando eu escrevo, clique e corro, veja só, a classe é uma string. E temos em linhas de código e sentimos um texto claro. Então, lemos uma única linha do nosso arquivo de texto. Lá vamos nós. Mas você notará que também temos esse espaço extra aqui. E o que é isso? Já deve estar claro que é por causa da barra invertida N ou da nova linha Então, como podemos nos livrar disso? A faixa, e agora, se eu clicar com o botão direito e correr, você verá que não há mais espaços. Lá vamos nós. Agora, tudo isso deve ficar claro. Também podemos usar o loop while com as linhas. Por exemplo, digamos que queremos continuar lendo as linhas até chegarmos a uma linha em que tenhamos a palavra ferramenta. Por exemplo, eu faria o seguinte. Se fosse verdade, continuaria lendo uma linha, lendo uma linha, lendo uma linha até imprimir a linha. E quero dizer, não até que eu continue imprimindo a linha. E então, se eu descobrir se a ferramenta na caixa está dobrada, vou quebrar agora. Clique com o botão direito e execute. claras, Python, beacons, veados, qualquer que seja uma ferramenta de elevação de linguagem para resolver problemas complexos E aí vamos em linhas de contexto, claras, Python, beacons, veados, qualquer que seja uma ferramenta de elevação de linguagem para resolver problemas complexos. E então paramos. Mas, obviamente, ainda temos, eles são separados. Deixe-me te mostrar. Lá vamos nós. Eles estão separados do original, ok? É basicamente isso. Observe que, se não adicionarmos esse parâmetro, esse é um pequeno detalhe. Se não adicionarmos esse parâmetro, se não especificarmos o modo em que estamos abrindo, padrão é simplesmente uma leitura E eu só queria te contar sobre isso. Muito obrigado por assistir. Espero que tenham gostado. Não acho que seja muito complicado. Eu não acho que precisamos nos aprofundar muito nisso. No próximo vídeo, analisaremos a decapagem e entenderemos melhor como ela funciona Obrigado por assistir. Nos vemos no próximo vídeo. 123. 3. Descascando arquivos de texto: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, vamos analisar a remoção de arquivos de texto Vamos começar. Primeiro de tudo, vou criar um novo arquivo Python e vou chamá-lo Stripping underscore Text Underscore files Aqui, vou dizer string igual a e vou adicionar 123. Olá mundo, 123. Como você pode ver, tenho três espaços em cada lado do Hello world. Aqui, vou imprimir a string original, dois espaços, até mesmo a string se eu clicar com o botão direito do mouse, e essa é a saída que recebo. Três espaços no lado esquerdo, três espaços no lado direito. Na verdade, aqui temos quatro espaços. Por quê? Porque temos dois argumentos apresentados na impressão que adicionam um espaço automaticamente. Em seguida, teremos a versão em que teremos iguais do strip. Então, aqui, vamos imprimir a sequência de dois pontos, fechada, removida para a direita, clicar e executar, e ver a saída de que obtemos apenas um único espaço por causa dos dois argumentos e nenhum espaço à esquerda, à direita Já vimos isso antes. Se não fornecermos nada à faixa, ela simplesmente removerá os espaços em branco ou removerá os espaços em branco restantes A propósito, seguindo e liderando. Palavra-chave importante sobre a qual não falamos, a inicial e a final, e o que isso significa? Bem, porque não temos apenas o, temos outra coisa. Eu vou dizer que o sublinhado esquerdo despojado é igual à faixa L da string. Agora, quando eu imprimo a sequência despojada à esquerda, a faixa esquerda, você verá que agora, quando clico com o botão direito e corro , parece que a saída é a mesma , mas à direita, ainda temos nossos espaços Isso separa as coisas do lado esquerdo. Se eu passar o mouse sobre a esquerda, ele retornará uma cópia da string com espaços em branco à esquerda, removidos os que estão à esquerda A mesma coisa acontece se fizermos o seguinte. Eu faço isso e digo aqui, os certos estão certos, certos. Já deve estar óbvio que ele remove apenas o rastro ou os espaços no lado direito Agora também podemos usar o método strip para remover certos caracteres. Vou alterar o código nos locais apropriados. Eu recomendo que você copie este espaço aqui e, em seguida, faça as alterações e comente os antigos, para que você sempre saiba o fluxo das coisas. Mas depende de você. Você pode fazer isso como quiser. Vou adicionar três vantagens em cada lado desta vez. Agora, se eu fizer o seguinte, adicione um sinal de mais aqui. Deixe-me copiar isso. Cole, cole, clique com o botão direito , execute e pronto. Você pode ver na sequência original que temos essas vantagens em cada lado Na versão despojada, não temos nenhuma vantagem, nem à esquerda nem à direita na corda Nós os temos, nós os temos à esquerda. Acho que não há nenhuma confusão aqui. Eu acho que isso é praticamente autoexplicativo. Não vou me aprofundar muito nisso, vou seguir em frente porque há algumas complexidades que precisamos entender sobre a faixa Se eu adicionar dois sinais de menos e depois adicionar um sinal de menos no lado esquerdo Agora temos um pouco de mistura. Vamos tentar tirar essas coisas. Antes de tudo, tentarei remover o mais e o menos de cada lado Se eu escrever, clicar e correr, você verá que os pontos negativos e positivos foram retirados de cada lado Mas à esquerda e à direita, nada aconteceu porque estou simplesmente retirando o sinal positivo Agora você pode estar dizendo, bem, espere, por que essa vantagem não está sendo retirada Hmm. Interessante. E é definitivamente uma pergunta muito interessante de se fazer. E isso se deve à natureza de como a faixa esquerda e a faixa direita funcionam. Então, vou testar algumas coisas. Digamos que eu adicione um sinal de mais igual na faixa esquerda, clique com o botão direito do mouse e dê uma olhada, tudo desaparece. Por que isso? Porque mesmo que aqui eu tenha dois pontos negativos e depois mais um, isso não importa Desde que haja um sinal negativo aqui. Isso significa que um sinal de menos será removido. E continuará até encontrar um personagem que não possa remover. O que eu quero dizer com isso? Se eu adicionar um H aqui e clicar com o botão direito do mouse e correr, você verá que Hello world, ou o H e hello desaparecem Se eu agora tentar adicionar um L, você acha que os Ls vão desaparecer? Não, eles não têm. Por que isso? Porque do jeito que estava acontecendo, do jeito que a faixa parecia, era uma vantagem. OK. Nós não temos isso. É negativo. É como. Tudo bem, perfeito. Vamos remover o primeiro sinal negativo. Outro ponto negativo. Vamos removê-lo. Uma vantagem. Removemos A mais H. Removemos um H. Agora estamos em. Ok, removemos um Não, não removemos um? Tudo bem, basta remover por enquanto O que podemos fazer é se adicionarmos um à direita aqui, boom, você verá que agora desaparece. Você pode ver isso? Agora, o desaparece e o L desaparece. Se eu adicionar um X aqui, por exemplo, ainda é a mesma saída. Portanto, não importa em que ordem dividimos, desde que as letras aqui sejam contínuas. O que significa que, se não tivermos um E, os Ls não serão removidos. Por quê? Porque à medida que a tira passa pela corda, ela chega até H. Ok. Ele está lá, vamos nos despir. Não é, portanto, descascar, então paramos. Espero que esteja claro. O mesmo acontece na faixa direita. Agora, eu não tenho um desafio para este vídeo, mas como um mini desafio. Como um desafio, ou digamos que seja um desafio não oficial. Eu recomendo que você experimente e teste algumas coisas aqui no plus. Então, por exemplo, se eu fizer um sinal de menos, qual você acha que será a saída Isso é um desafio. Por favor, tente pensar sobre isso. Lá vamos nós. Obviamente, ele desaparece porque começamos com um sinal de menos e ele vê um sinal de menos, um mais, etc., etc O que você acha que acontecerá se eu fizer o seguinte? Clique com o botão direito e execute, e você verá que nada acontece de fato. Porque lembre-se de que estamos indo pela direita. E se eu fizer A também? Nada acontece. Clique em executar, nada acontece também. Mas agora, para o último, o que aconteceria se eu adicionasse um ponto de exclamação E bum, lá vamos nós. Porque removemos o sinal de menos e mais. Encontramos um ponto de exclamação, o removemos, encontramos o D, o removemos e então encontramos um L. Vamos removê-lo? O L. Não, nós não temos. Isso significa que seguimos em frente com nossa vida. Muito obrigado por assistir. Espero que você tenha gostado A tira não é algo muito, muito importante, mas se você a encontrar ao ler um arquivo de texto, é muito importante que você saiba como a tira funciona. Se você quiser voltar a este vídeo, assista novamente, entenda, tente testar coisas diferentes aqui Veja a faixa esquerda, veja, veja a faixa direita, e assim por diante. Muito obrigado por assistir, e nos vemos no próximo vídeo, onde analisaremos a análise de dados em um arquivo de texto Tchau tchau por enquanto. 124. 4. Analisando dados em um arquivo de texto: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, veremos a análise de dados em um arquivo de texto Sempre que quisermos obter dados de um arquivo, primeiro precisamos entender quais são esses dados ou a aparência desses dados nesse arquivo. O mais importante é entender a estrutura desses dados. Compreender os dados é analisar, por exemplo, o código que estamos digitando agora no computador, como a faixa, os iguais e tudo mais, tudo isso é analisado pelo computador ou pelo IDE em um e zeros para realmente entender o que está acontecendo, enviado aos processadores e devolvido a nós e assim por diante para criar o código que estamos digitando agora no computador, como a faixa, os iguais e tudo mais, tudo isso é analisado pelo computador ou pelo IDE em um e zeros para realmente entender o em um e zeros que está acontecendo, enviado aos processadores e devolvido a nós e assim por diante para saída Neste vídeo, veremos a análise de dados. Vamos continuar e começar. Em primeiro lugar, precisamos fornecer o ponto da lista de pessoas. Agora eu já tenho esse arquivo aqui. Ponto da lista de pessoas, aí vai, lista de pessoas. Eu continuo fazendo isso. Por favor, deixe-me mostrar o que eu fiz de errado aqui. Certo. Clique em abrir e explorar, e devemos ver isso aqui. Lá vamos nós. Então, para cá, eu realmente o mudei. Eu não deveria tê-lo movido, eu deveria ter copiado Deixe-me copiar de volta o poema do Python para o meu E depois copie a lista das pessoas. E cole aqui nos arquivos de leitura e gravação. Lá vamos nós. Temos a lista das pessoas. Vamos abrir a lista das pessoas. E vamos ver o que temos aqui. Como você pode ver, temos uma lista de pessoas, mas não apenas pessoas. Temos o nome de identificação, salário do departamento e o cargo. Você pode ver as identificações no lado esquerdo, uma de John Doe. O nome dele é John Doe. Ele trabalha no Departamento de Vendas. O salário dele é de 5.000 , não sei o que. E seu cargo é Gerente de Vendas. Então temos Jane Smith na ID 2 com um departamento que está desaparecido. E isso vai ser um problema para nós, é isso que queremos dizer quando dizemos dados parciais. Porque às vezes a estrutura dos dados pode estar corrompida. Algumas coisas podem estar faltando, como o departamento de Jane Smith. E então temos o salário. E a gerente de marketing do título, Mary Brown, por exemplo, não tem salário. E assim por diante e assim por diante. Então, vamos primeiro entender como essa estrutura de dados funciona. Porque, olha, temos oleodutos em vez de espaços. Isso é mais parecido com um arquivo CSV, e veremos os arquivos CSV Mas, por enquanto, este é um arquivo de texto, precisamos extrair informações dele. Vamos continuar e criar um novo arquivo Python que analisará pessoas com sublinhado A análise sublinha as pessoas aqui. Eu vou dizer que o nome do arquivo é igual à lista de pessoas de Xt. Essa é uma maneira prática de usar o nome do arquivo e não precisar digitar a lista de pessoas Toda vez que eu digo com nome de arquivo aberto, como arquivo de pessoas, direi quatro linhas. Agora estamos trabalhando em fileiras. Você pode chamá-lo de linhas, você pode chamá-lo de linhas, você pode chamá-lo de x como quiser. Apenas saiba que é a linha ou a linha quatro no arquivo das pessoas. Eu vou dizer que os dados são iguais à divisão no pipeline. Estou removendo a tubulação ou, na verdade, estou dividindo a E vou imprimir os dados caso você não tenha certeza do que a divisão faz. Eu recomendo que você passe por W, três escolas ou veja a documentação aqui. Retorna a documentação aqui uma lista das palavras na string, usando o separador como um delimitador entre a divisão entre o pipeline Nesse caso, porque fornecemos um pipeline e estamos imprimindo os dados. Se executarmos o código, aí está. Você pode ver que cada indivíduo foi adicionado a uma lista e, por exemplo, o ID é um ou o ID é um item. O nome é um item. As vendas são itens, etc., etc E, finalmente, temos esse símbolo aqui, o que não é nada bom. Então é hora de um pequeno desafio. E seu desafio será remover os símbolos indesejados. Antes de tudo, use a função strip. Em seguida, certifique-se de remover apenas o novo caractere de linha, pois não queremos remover mais nada. Além disso, você pode usar a faixa direita e a faixa. Escolha o que você quiser. Faça um vídeo positivo agora mesmo e vá enfrentar o desafio. Bem vindo de volta. Como você conseguiu fazer isso aqui na divisão da estrada de dados? Agora, o desafio aqui era saber se devemos dividir e depois retirar ou retirar a divisão. Bem, vai ser strip, strip the split Eu vou tirar oh, não, isso realmente é ruim e depois dividir na faixa R. Vou tirar a barra invertida N. Vou fazer a faixa direita . É o mesmo. Não importa se você faz a faixa inteira ou a faixa direita, desde que esse símbolo desapareça Vamos analisar como representar esses dados de uma maneira melhor. O que significa que eu não quero ter todo o congestionamento congestionado aqui Quero que seja representado de uma forma mais sofisticada. O que significa que queremos realmente dividir esses dados e descompactá-los com mais precisão Então, em vez de apenas imprimir, vou dizer que o nome ou identidade real, vamos chamá-lo de per sono, ID de sublinhado, nome , departamento, salário e título serão iguais aos dados Já vimos o que isso faz. Isso é chamado de descompactação de dados. Estamos descompactando os dados em dados em cada uma dessas variáveis aqui, o nome do ID, o departamento, salário e o título Em seguida, imprimirei um documento de identidade pessoal Digamos que eu queira alterar seu pedido, salário, cargo. Criaremos um separador que será, em primeiro lugar, uma nova linha e, em seguida, um verso Você se lembra o que é a barra invertida S? Você se lembra da barra invertida N? Porque fizemos isso recentemente. Mas a parte de trás, o que é? Eu não vou te contar. Você terá que fazer a pesquisa. Clique com o botão direito, execute e veja o que obtemos. Obviamente, essa não é a melhor maneira de representar nossos dados. Eu sei, não me enforque por isso, mas pelo menos é um pouco melhor. Você pode ver que temos o ID do nome, salário do departamento e o cargo. Então temos John Doe ID um, salário de vendas, cargo, Jane Smith, ID dois Hmm, não há nada aqui. O problema, isso é um problema porque temos esses campos de campos vazios. Nós vamos lidar com isso mais tarde. Mas, por enquanto, como você pode ver, criamos uma representação melhor. E você verá que faltam muitas coisas aqui. Algumas pessoas realmente não têm todas as suas coisas juntas, então agora queremos adicionar essas informações em um dicionário. E para isso, precisamos nos livrar da primeira linha que indica quais são os dados, que significa que, em nosso dicionário, eu realmente não quero ver nome, identidade, departamento, salário e cargo. Isso não é algo que eu quero. Pense no que podemos fazer aqui. Como podemos fazer isso? Bem, é muito simples. Alguns de vocês podem ter complicado demais isso em sua cabeça, mas é muito simples Tudo o que precisamos fazer é dizer a linha de leitura do arquivo das pessoas. Agora, se eu escrever Clique e corro, vou até o topo, você verá que não tenho mais o nome do departamento de identificação. E por que isso? É porque o arquivo é capaz quando fazemos uma linha vermelha, é como se já tivéssemos lidado com a primeira linha e agora estivéssemos nas outras linhas de texto O que quero dizer com isso é ok, espere, podemos trabalhar com este. Vamos imaginar que, quando estamos lendo um arquivo, é como um robô. O robô é um robô pequeno e minúsculo. Fica aqui mesmo no início da fila. E começa assim. Ele lê personagem por personagem. Mas o robô, se quiser voltar, não pode simplesmente pular para essa parte aqui. O robô precisa voltar passo a passo. Na verdade, o robô não pode voltar tão facilmente. O mesmo acontece com a linha de leitura. Quando abrimos o arquivo e estamos lendo a partir dele, o que acontece é que o robô, quando fazemos a linha de leitura, apenas lê a primeira linha. Agora, quando fazemos as quatro linhas em pessoas, quando chegamos a essa linha de código, na verdade começamos daqui porque já lemos a primeira linha, por exemplo, como um teste, se não quisermos incluir John Doe Nós duplicamos essa linha. E agora vamos começar com Jane Smith. Porque lemos John Doe. Isso é muito importante para entender a leitura e gravação em arquivos. Isso surgirá muito no futuro. Portanto, certifique-se de que você entendeu isso aqui e agora. Agora que lemos a primeira linha de código, garantimos que não temos o departamento de nomes e tudo o que quisermos adicionar em um dicionário. Em vez de apenas imprimi-los. Vou comentar isso aqui. Eu vou dizer que as pessoas sublinham que o ditado será igual ao seguinte Teremos que fazer, bem, a identificação para fazer a identificação pessoal. Você está bem familiarizado com dicionários neste momento. O departamento, dois pontos, o salário do departamento. Salário de dois pontos. Na verdade, você sabe o que, eu não gosto de tê-los em maiúsculas, exceto pelo ID Vamos reduzi-las para minúsculas. Você verá o porquê mais tarde. Isso pode causar problemas quando estamos tentando acessar essas chaves. O título do trabalho será o título do trabalho. Vou adicionar um porque eu posso. Em seguida, vou imprimir o Dicionário do Povo. Lá vamos nós. Agora, deixe-me mudar isso para baixo. Tenho a sensação de que precisaremos de uma conta mais longa. Clique com o botão direito e execute. Lá vamos nós. Você pode ver que simplesmente adicionamos o ID de Justin Lee, que é a última pessoa que não é boa Obviamente, isso não é o que queríamos. A razão pela qual isso está acontecendo é porque, se olharmos de perto, temos um dicionário popular. É apenas um único dicionário que continuamos adicionando. O nome de identificação pessoal, departamento, salário, cargo, dois. E lembre-se, os dicionários são mutáveis. Não podemos ter chaves duplicadas, então os valores continuam sendo atualizados E a última a ser atualizada é a última pessoa real que temos na lista. Então, quando chegamos a Justin Lee, analisamos os dados, os colocamos no Dicionário do Povo e obtemos o nome de Justin Lee, ID, etc., etc No próximo vídeo, usaremos os dados esparsos e na verdade, colocaremos cada um deles em um grande dicionário Muito obrigado por assistir. Espero que tenham gostado e nos vemos no próximo vídeo. 125. 5. Usando dados analisados: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, usaremos dados analisados que extraímos no último vídeo Então, agora que temos nossos dados devidamente analisados e extraídos, depois de colocarmos os dados em um grande dicionário, atualmente temos esses Ah, e a propósito, se você olhar para essa saída, e de onde diabos isso veio? Eu só estava testando algo. Na verdade, você pode mover essa impressão para o loop frontal para ver todos os nomes. Como você pode ver aqui, eles não apareceram porque o que fizemos foi imprimir o Dicionário do Povo lá fora. É por isso que era o sobrenome, que é Justin Lee. Mas se quiser, você pode imprimi-lo em cada linha. E me ocorreu que, antes de começar este vídeo, eu o testei. Talvez essa seja a melhor maneira de você ver as coisas melhor para você entender. Não tenho certeza. Espero que ajude. Vamos agora colocar tudo isso em um dicionário, com os nomes sendo as chaves. Então, teremos um dicionário enorme, que será o dicionário do povo. Vamos criar como um povo aqui, o que será igual a um dicionário vazio, e vamos colocar esses nomes no dicionário das pessoas. Então, esses dicionários se tornarão os valores, e as chaves serão os nomes das pessoas Então, podemos acessar esses nomes de uma forma significativa. Vamos continuar e começar. A primeira coisa que vamos fazer é realmente começar a colocá-los no dicionário das pessoas. Depois de imprimirmos cada pessoa, vou dizer pessoas, abram isso e digam dobra de maiúsculas e minúsculas. Não está me permitindo, mas tudo bem. A dobra da caixa nomeada é igual às pessoas. Ditado ou ditado. Então, no final, vou imprimir, desculpe, imprimir as pessoas. Então, quando eu escrevo, clique e corro, veja o que temos aqui. Em primeiro lugar, estamos imprimindo os nomes como de costume. E eu não quero fazer isso, na verdade, deixe-me comentar isso para que saibamos exatamente o que estamos recebendo. Ok, então veja este dicionário. Vamos começar do começo. Primeiro de tudo, temos o dicionário começando. Então temos a chave, que é a caixa do nome aqui. E eu me certifico de dobrar maiúsculas porque não quero cometer erros com maiúsculas e minúsculas e assim por diante . Deixe-me fazer isso menor. Temos John Doe sendo a chave. E então, lá dentro, temos todas as informações sobre John Doe. Temos seu nome, identidade, departamento, departamento, salário, cargo. E então fechamos. Então esse é o valor, é aqui que o valor termina para John Doe. E então temos outro item neste grande dicionário, vamos chamá-lo de Dicionário do Povo. E então temos Jane Smith. E Jane Smith é a chave. E Jane Smith tem um valor do dicionário que contém o nome ID, departamento, salário, etc., etc Agora temos um grande dicionário que tem a chave como os nomes de nossos indivíduos. E então os valores são dicionários com as informações sobre esses indivíduos Agora, o que queremos é ter uma maneira de ser um usuário, digamos que eu ou você. Quando um usuário insere o nome de uma pessoa e recebe seu salário E isso vai ser um desafio para você. Você precisa obter informações do usuário, que será o nome de um dos funcionários. Verifique se o nome está em maiúsculas e minúsculas, verifique se o nome da pessoa está no dicionário. Essa é a primeira coisa a fazer, e se ele existe ou ela existe, extraia o campo do salário e imprima-o em um vídeo positivo e fácil de usar. No momento, esse é um desafio difícil, especialmente se você não tem 100% de certeza de suas habilidades em dicionários Mas é um desafio muito importante. Se você puder fazer isso, isso significa que você tem dicionários precisos, vídeos positivos agora e pronto para enfrentar o desafio Ok, bem-vindo de volta. Então, a primeira coisa que faremos é não querer mais imprimir as pessoas aqui. Vou dizer que o nome sublinhado da pessoa será igual à entrada que diz fornecer o nome das pessoas, o da pessoa ou o salário da pessoa, desculpe, forneça o nome do salário da pessoa, você gostaria de ver Em seguida, simplesmente faremos isso, essa será a entrada, então eu vou dizer que a tecla de sublinhado será a dobra do nome da pessoa no caso de alguém, porque você sabe, geralmente quando você escreve nome de alguém, ele é maiúsculo Mas aqui, lembre-se de que são cordas, elas são únicas. Eles são sensíveis às chaves. Então, nos certificamos de anotá-los pela dobra da caixa e depois verificaremos se realmente temos essa pessoa no dicionário, como costumávamos fazer isso? Simplesmente dizemos se a chave está nas pessoas e, em seguida, dizemos que a pessoa é igual às pessoas na chave da pessoa e , em seguida, no salário da pessoa. Salário. Sem sugestões, Sim, eu sei que é igual à pessoa no salário. E imprima o salário do campo de substituição nome da pessoa é salário da pessoa. Eu continuo esquecendo o salário And. Agora, se não encontrarmos a pessoa, vamos apenas imprimir o salário da pessoa. Desculpe, o nome da pessoa não está em nosso site ou não é de um funcionário aqui. Ok, eu não sei por que precisamos da marca de explicação, mas aí está. Então, vamos ver o que está acontecendo aqui. Em primeiro lugar, estamos recebendo uma entrada, muito simples. Em seguida, estamos dobrando a caixa. É importante aqui dobrar maiúsculas em uma variável separada, caso contrário, o nome da pessoa será impresso em minúsculas aqui. E isso não é muito fácil de usar. Queremos que os nomes estejam em maiúsculas. É por isso que criamos a chave de pessoa como uma variável separada. Para verificar isso, usamos a chave da pessoa. Verificamos se a pessoa digitou pessoas. Estamos verificando se a chave está disponível pessoalmente. Se for, faremos o seguinte. Se não for, simplesmente imprimiremos que não é um funcionário. Lembre-se de quando fazemos isso se uma chave ou pessoa digita em um dicionário. Estamos examinando as chaves. Estamos verificando as chaves, não os valores. Estamos verificando se temos John Doe, ou se temos Jane Smith, qualquer que seja o nome, então pegamos a pessoa Dizemos que pessoa é igual a pessoas nessa chave. Por exemplo, se a chave da pessoa fosse Jane Doe , pegamos o valor e o colocamos na variável pessoa Então dizemos que o salário da pessoa será essa pessoa. Porque lembre-se, isso também é um dicionário e nós pegamos o salário. Não deve ser muito difícil, especialmente se você entendeu o que estava acontecendo nos dicionários Não deve ser nada difícil para você. Em primeiro lugar, verificamos se essa chave está no dicionário do nosso pessoal. Se for, então pegamos a pessoa pela chave. Uma vez que pegamos essa pessoa pela chave, pegamos o salário pela chave salarial. Agora, se eu escrever Click e correr, se eu tentar, digamos Michael. Não, Michael não é funcionário aqui. Vamos executar isso de novo. Digamos que eu tente John. Digamos que digitamos John Doe assim. digitar que o salário de John Doe é 5.000. Se eu voltar para a lista, vamos ver John Doe realmente tem um salário. Vamos tentar Steve Kim. Ele ganha muito dinheiro. Steve Kim. Vamos ver o quanto ele ganha. Então, se eu escrever o clique e executar put Steve, aí está, Steve Kim. O salário de Kim é de 7.500. Tudo bem, muito bom. Isso parece funcionar. Antes de prosseguirmos, vamos supor que gostaríamos pesquisar uma pessoa não pelo nome, mas pela identidade. Temos duas soluções para isso. Ou podemos criar um segundo dicionário com as chaves sendo o ID. E então podemos verificar algumas coisas, mas há uma maneira melhor. E isso é, na verdade, adicionar outra chave ao nosso dicionário pessoal, que será a ID. Para isso, podemos simplesmente entrar aqui, duplicá-la e, em vez de dobrar o nome com pontos, podemos dobrar o documento de identificação pessoal mesmo que tenhamos números, então isso não vai importar Nós os colocamos aqui. Se eu tentar imprimir o dicionário do povo , veja o que obtemos. John Doe. Ok, a informação ainda é a mesma. Mas também temos um e também temos as informações. Agora, poderíamos, por exemplo, fornecer o nome ou ID do salário da pessoa que você gostaria de receber. Quando eu escrevo, clique e eu corro. Por exemplo, digamos que eu queira o salário da pessoa com o ID 11. Boom, insira que o salário de 11 é 4.000. Obviamente, isso não é muito bom O que podemos fazer, por exemplo, aqui é obter o nome do sublinhado Já temos o nome, vamos chamá-lo de informações da pessoa aqui. Mude isso para informação e então, ok, parece ser bom. Então, temos o nome da pessoa que será igual ao da pessoa e obteremos o nome. E aqui, nome da pessoa. Porque estamos fazendo isso lá fora, não vai ser reconhecido. Talvez pudéssemos criar uma função semelhante para isso. Por enquanto, vamos manter as coisas como estão. Vamos manter isso como a chave. Tudo bem, porque não queremos ter códigos duplicados. Poderíamos criar uma função que obtivesse o nome e o salário da pessoa. Mas, por enquanto, nosso foco é realmente conseguir isso, por exemplo, 11, Chris Lee. Vamos ver se Chris Lee realmente tem 11 anos. Sim, lá vamos nós. Chris Lee está aos 11 anos com 4.000 senhoras e senhores, quero que vocês realmente sintam o quanto progredimos Analisamos um arquivo, temos todas as informações, as colocamos no primeiro dicionário e depois as colocamos no grande dicionário, que é o dicionário das pessoas Usamos duas chaves aqui. Usamos o nome e a identidade deles, e agora estamos eliminando todas essas informações Quero dizer, isso é ótimo, isso é algo de alto nível. Se você não tem certeza do que está acontecendo, por favor, tome seu tempo. Volte ao código, entenda cada linha. Se você tiver alguma dúvida, pergunte a mim ou seu instrutor dedicado para o qual você foi designado Eles ajudarão você nesse processo Muito obrigado por assistir. Espero que você goste. E nos vemos no próximo vídeo, onde começaremos a gravar dados em um arquivo, não apenas lendo. Te vejo então. 126. 6. Como gravar dados em um arquivo: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, finalmente veremos como gravar dados em um arquivo. Então, a primeira coisa que queremos fazer é salvar alguns animais. Sim, de fato. Vamos criar um novo arquivo Python que chamaremos de Save underscore Então, aqui eu vou te fornecer uma lista de animais. Não se preocupe, espero não esquecer de fornecer. Se, por algum motivo, eu esquecer de fornecê-lo em algum lugar ou se a forma como o forneci não for adequada, envie-me uma mensagem, envie uma mensagem para seu instrutor dedicado e entraremos em contato com você Mas, de qualquer forma, esses são os dados de animais que temos. Agora, o que queremos fazer não é salvar todos esses animais do Peta ou de qualquer organização animal que exista. Na verdade, vamos salvá-los em um arquivo Txt Em primeiro lugar , vamos nomear esse arquivo, que será o nome do arquivo de sublinhado dos animais, será igual a animais sublinhado Agora você deve estar se perguntando, não temos o arquivo aqui nos projetos. Não se preocupe O arquivo será criado quando necessário aqui. Vou dizer que com o nome de arquivo animal aberto agora, em vez do R, precisamos fornecer o W indicando que queremos abrir o arquivo no modo de gravação e vamos dizer como arquivo de sublinhado de animais, é aqui que escreveremos Lembre-se de que esse é apenas o nome, o nome do arquivo do animal. Esse é o objeto de arquivo real que usaremos para escrever dois aqui. Eu vou dizer quatro animais, sim, em dados de animais. Estou folheando essa lista de cima para baixo e o que estou fazendo é imprimir arquivo de animal, arquivo animais iguais. Lá vamos nós. Como você pode ver, isso é algo que nunca vimos antes, mas vou explicar isso para você. Em primeiro lugar, se o arquivo existir, o que significa que os animais sublinham impressão ou que o arquivo dos animais existe, ele será sobrescrito Se ele não existir, um novo arquivo será criado. Isso é 12. O que o arquivo é igual aqui? Esse é um parâmetro extra fornecido na impressão. O parâmetro file na função de impressão especifica que a saída deve ser gravada no objeto de arquivo, que é arquivo animal aqui, em vez da saída padrão que vemos no menu suspenso ou como você a chama, console Então, quando dizemos arquivo igual, significa que a saída irá para esse arquivo. Agora, deixe-me abrir o projeto para que você possa ver claramente. Não tínhamos nenhuma impressão de animais. Quando escrevo, clico e corro, Boom, lá vamos nós. Agora temos a impressão dos animais aqui. E se eu abrir isso, observe que não tenho nada impresso no meu console. Está tudo na estampa dos animais. Se eu clicar duas vezes e abri-lo, eu o tenho aqui. Mas vamos imaginar que gravamos em um arquivo e não podemos realmente abrir. Isso pode acontecer em muitos casos, especialmente quando você está usando uma codificação especial Digamos que queremos realmente abrir esse arquivo e ver o que está dentro. Para verificar se conseguimos escrever corretamente aqui, eu diria apenas que um novo sublinhado, a lista de sublinhados animais é igual a essa lista vazia E eu vou dizer que com o nome do arquivo animal como o arquivo do animal, você pode usar o mesmo nome. E aqui, não se preocupe, não é grande coisa. Já fechamos esse arquivo, lembre-se, porque estamos usando a largura. Então, fechamos esse arquivo para que possamos usar o mesmo nome de arquivo. Está tudo bem E aqui eu vou dizer quatro animais. No arquivo do animal, arquivo de animais, vou dizer que uma nova lista de animais é anexada ao Agora, há uma coisa faltando aqui e eu quero que você me diga, será óbvio, mas eu quero você pense o que está faltando aqui. O que eu deixei de fora deliberadamente. Se eu escrever, clicar e correr, veja o que recebo na minha lista. Mas o que eu tenho aqui? Eu tenho meu novo símbolo de linha. Como faço para resolver isso? Reserve alguns segundos, pense sobre isso. Sim, exatamente. Eu posso ouvir você na parte de trás dizendo a faixa, quando fazemos isso agora, ela funciona completamente corretamente. Ok. É muito parecido com o que fizemos antes, mas há uma maneira diferente de armazenar dados em um arquivo de texto: usar o método certo. Então, vamos fazer isso. Vou voltar aqui, onde escrevemos os dados. E eu vou comentar essa linha aqui. Eu vou dizer arquivo de animais , então vou escrever o animal nele. Agora, lembre-se de que já temos o arquivo de um animal. O que acontece quando já temos um? Ele será sobrescrito. Quando escrevo Click e executo, veja isso, minha saída é um pouco diferente e isso deve dar uma indicação do que estará em nosso arquivo real. Veja leão, mamífero, e então começamos imediatamente com Eagle Observe que temos uma lista de um único item com todos os nomes dos animais misturados Se eu abrir a estampa do animal, você verá que é assim que fica. A única diferença, ou a principal diferença, entre a impressão e a direita é que a impressão adiciona um novo caractere de linha por padrão, enquanto a direita não. Vejamos outra coisa que a direita não pode fazer. Minhas palavras estão ficando confusas. E quando eu digo nós ou vamos, eu estou dizendo vamos ver, você vê o que? Ok. Eu não sou bom com palavras hoje. Basta escrever dez números. Escreva os primeiros dez números, um a dez, em um arquivo chamado arquivo de números. Isso é algo completamente diferente. Se quiser, você pode até mesmo criar um arquivo Python separado para isso Na verdade, é uma boa ideia criar um arquivo Python completamente separado para Primeiro, você deve abrir o arquivo com o W, é claro, com o modo W dentro da largura, criar um loop na faixa de dez. Isso significa quando dizemos com aberto, etc., dentro da largura Crie um loop na faixa de dez. E use a impressão e depois as funções corretas para escrever os números em nosso arquivo. É um desafio para você experimentar escrever em um arquivo usando a impressão e a direita, você sabe a diferença, você sabe como isso funciona. Faça um vídeo positivo agora mesmo e vá enfrentar o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Vou criar um novo arquivo Python aqui, que terá os números certos Tudo o que vou dizer é que o nome do arquivo de sublinhado de números é igual a nunscorefilet Eu vou dizer que com o modo de números abertos como arquivo de sublinhado de números, temos o mesmo arquivo numérico de nome Acho que podemos usar isso sem problemas. E eu vou dizer quatro no alcance. E esse é o loop de que falei que está dentro de mais de dez. Vou imprimir e depois arquivar números iguais. Arquivo, aí está. E adicione um espaço extra na parte inferior para os oito. Agora, se eu clicar com o botão direito do mouse e correr, obtenho o arquivo de números que é de zero a dez com um espaço extra no final. Arrumado. Mas agora eu quero usar o direito. E eu não acho que haja nada que eu realmente precise explicar aqui. O laço de quatro. Nós já vimos isso. Vimos como abrir um arquivo à direita. Vimos como a impressão funciona. Não há mais nada para explicar. Tudo o que precisamos é usar o direito. Então, eu vou dizer arquivo de números, certo. E então eu estou escrevendo V, clico com o botão direito em Executar, e recebemos um erro porque argumento I deve ser STR e não um número inteiro Não que o método certo escreva apenas o que você manda escrever. Nenhuma conversão é realizada e, obviamente, quando você está gravando em um arquivo de texto, ele não deve ser um número inteiro Ele não entende o número inteiro. Existem formas de conversão. Se não for um ponto, por exemplo, você pode fazer uma conversão. Por que usar o certo? Por que usar a direita em primeiro lugar se é tão ruim? Bem, isso depende da situação em que você se encontra e como você deseja que os dados gravados em seu arquivo se comportem. Por exemplo, se você precisar de mais controle sobre os dados gravados ou se precisar gravar, por exemplo, dados binários para economizar o máximo de espaço possível, escolha certa pode ser a melhor opção para você. O que significa que talvez você não queira adicionar uma linha extra, mas a impressão força você, talvez, eu não sei, a converter coisas. Talvez você queira que eles permaneçam da forma como foram arquivados. Novamente, a impressão não permite. Se você quiser mais controle, você usaria o direito. Se você está apenas escrevendo algo simples em um arquivo Txt , usar a impressão seria sua escolha Nesse caso, eu usaria o STR para converter o botão direito do mouse e executar, e ainda recebo uma saída ruim E o arquivo de números, eles estão todos misturados. Como resolvemos isso? Reserve alguns segundos, pense sobre isso. O que devemos fazer? Lá vamos nós. E temos essa saída. Senhoras e senhores, muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, vamos levar as coisas para o próximo nível onde aprenderemos tudo sobre os arquivos do Jason Então, obrigado por assistir. Eu vou ver você e o próximo. Tchau tchau. 127. 7. Arquivos JSON 101: Bem-vindos de volta, meus colegas programadores de Python, a um vídeo totalmente novo e provavelmente longo, onde explicaremos, em primeiro lugar, a serialização e o que é, explicaremos o que são arquivos Json e arquivos Jason Vamos nos aprofundar neles, testá-los, e assim por diante Em seguida, também mostrarei como escrever e ler esses arquivos e veremos um pouco sobre codificadores e decodificadores Não vamos perder mais tempo e vamos começar. Primeiro de tudo, vamos analisar a serialização. O que é serialização? serialização é o processo de conversão e estado dos objetos em um formato que pode ser armazenado ou transmitido Por exemplo, se estamos enviando informações por Bluetooth, as informações não são enviadas como sequências de caracteres, casais ou qualquer outra coisa Eles são enviados através de ondas, zeros e uns. É assim que eles entendem as coisas, isso é serialização Ao gravar em um arquivo em Python, serialização geralmente é usada para converter um objeto em uma representação de texto que pode ser gravada Para gravar representações do objeto no arquivo, usamos a função dump Nós despejamos as informações lá. Há muitas maneiras de serializar dados e uma das mais usadas é o arquivo Chason Se você está pensando, uau, isso é muito complicado e tanto faz, não se preocupe Por exemplo, quando estávamos tentando escrever um número em um arquivo no vídeo anterior, tivemos que convertê-lo em uma string e depois adicionar uma nova linha. E isso é o que chamamos de serialização. A seralização pode ocorrer de várias formas. Pode ser muito complicado e pode ser muito, muito simples. Assim como vimos no vídeo anterior. Agora vamos ver o que é Json. Json é notação de objeto Javascript. É um formato comumente usado para aplicativos de sites ou aplicativos da web. Não apenas um site, mas tudo o que você faz quando está interagindo com a World Wide Web usa serialização Json No contexto dos arquivos Json refere-se ao processo de conversão de objeto Python em uma string codificada em Json que pode ser gravada em um Temos um objeto e o Python que codificamos usando o Json. E então é uma string que pode ser armazenada em um arquivo. Quando queremos usar o Json, precisamos importar um módulo, assim como importamos o aleatório Ao escrever um objeto Python em um arquivo Json, usamos o despejo de pontos Json, que já vimos Ao ler um objeto Python a partir de um arquivo Json, usamos Nem todos os objetos Python podem ser serializados no formato Json. Veremos muitos exemplos. Mas, por exemplo, o conjunto não pode ser serializado para o formato Json E a serialização e desserialização do Jason são mais rápidas do que outros formatos de serialização outros formatos de serialização Não abordaríamos o XML neste curso, a menos que eu, por algum motivo, decidisse atualizá-lo e usar o XML. Mas a serialização e desserialização do Json são as mais usadas Você provavelmente já ouviu isso antes e é nisso que vamos nos concentrar, basta de teoria. Vamos dar uma olhada em uma introdução aos arquivos Json. Em primeiro lugar, vou criar um novo arquivo Python aqui, que chamarei de Jon Underscore Intro clicarei com o botão direito do mouse na Json e fecharei todas as outras guias fechadas para que tenhamos que Feche isso também e talvez mantenha este aqui. Os projetos, para que, se tivermos algum arquivo extra adicionado, possamos vê-los. Vou importar o Json, como eu disse, ele precisa de um módulo e depois vou ter partes de sublinhado do computador Eu vou ter essa lista. Agora, novamente, vou fornecer essas informações, não se preocupe, é apenas uma lista desses elementos. 198, é o ano em que o disco rígido foi criado, a memória de acesso aleatório, o Ram 1968, etc., etc Agora, o que vou fazer é escrever isso em um arquivo Json Vou dizer com open e vou fazer o seguinte. Eu direi, pontuação de sublinhado de Jason, basta testar o arquivo dot Json para torná-lo um arquivo Json real e, em seguida, como arquivo de teste de sublinhado de Jon Então aqui eu vou dizer Jason despeja e eu acho, sim, não, está tudo bem. Está tudo bem por algum motivo. Achei que talvez a interpretasse como a pasta aqui, o módulo inteiro Quer dizer, então vou enviar as partes do computador para o arquivo de teste Json E você pode ler tudo sobre o lixão e como ele funciona. Você pode ver que ele envia uma função ou método muito extenso que você pode pesquisar para mim. Tudo o que você precisa saber é o que está realmente enviando, o que deseja gravar e o arquivo no deseja que as coisas sejam gravadas ou no qual os dados sejam gravados. Agora, se eu escrever, clique e eu corro, veja isso. Um novo arquivo de teste Json foi criado. Se eu abrir, veja o que eu tenho. Na verdade, tenho uma lista. Mas existem algumas limitações Json e vamos vê-las. Mas antes, vamos ver o que acontece quando queremos ler dados de um arquivo. Se eu voltar aqui, deixe-me comentar isso porque não quero escrever novamente. Eu vou usar o open e então, oh meu Deus, eu odeio isso a propósito. Eu odeio isso e não sei como me livrar disso. Arquivo de teste Json, o padrão será escrito e será apenas o arquivo de teste de sublinhado Json E então os dados do sublinhado Jon serão iguais à carga do Json E já vimos e observamos que temos cargas e cargas e veremos a diferença no arquivo de teste Json Agora, se tentarmos imprimir os dados Json, clique com o botão direito em Executar, boom Olha isso. Todos os dados ainda estão na forma de uma lista. Deixe-me tentar imprimir o tipo de dados Json. Clique com o botão direito, vamos lá. Ainda é uma lista. Portanto, lembre-se de que escrevemos no arquivo como uma lista, ele foi serializado pelo Json e agora foi E manteve sua integridade , permaneceu em seus quatro. É algo muito importante ter em mente quando fizemos isso anteriormente, quando serializamos, por exemplo, os números inteiros, os números de 0 a 10 ou 0 a 9 no vídeo anterior, eles foram convertidos em eles foram convertidos Se tentássemos lê-lo novamente a partir do arquivo, seria uma string. Mas, nesse caso, manteve sua integridade. Podemos até mesmo, por exemplo, colocar os dados na posição número dois. Se eu escrever Click e dar uma olhada nisso, obtenho a CPU da unidade central de processamento, que foi feita em 1971. Tudo isso parece bom, mas há limitações para o que o arquivo Json pode serializar e serializar Vamos dar uma olhada nessa limitação. Em primeiro lugar, o que queremos fazer é converter tudo isso em filhotes. Agora, poderíamos entrar aqui e começar a adicionar isso, e então, oh, espere, isso muda automaticamente. Acho que sim, podemos fazer isso. Eu queria te mostrar uma maneira bacana de fazer essas coisas, mas, infelizmente, acabou de mostrar o quê Vamos apenas fazer isso. Se você pressionar, por exemplo, o controle R, R. Você verá talvez apenas um controle R, um controle R. Por exemplo, você pode dizer que encontra todos os colchetes Ele os encontrará e os converterá em colchetes redondos. Você verá que isso lhe dará onde você deseja converter? Você pode, por exemplo, selecionar este e dizer excluir, excluir este e substituir tudo. Boom, lá vamos nós. Você pode ver esse. Não queremos incluir substituir tudo. Ok, vamos lá. Agora podemos selecionar esse lado. Podemos clicar aqui e ex, depois convertê-lo em. Boom, essa. Substitua tudo. Lá vamos nós. Então, convertemos isso em uma queda. E, a propósito, isso não estava presente alguns meses, quando eu estava trabalhando nas partituras. Por algum motivo, talvez na atualização eles o tenham incluído. Mas de qualquer forma, o que queremos fazer é convertê-los em tombadas Pressionando o controle R, você pode selecionar o que deseja alterar e, em seguida, excluir as coisas que deseja manter A propósito, uma ferramenta muito, muito poderosa. Agora que os temos na forma de um casal, vou continuar lendo e comentando isso, o que significa que vamos escrever novamente. Agora, se eu escrever, clicar e correr, o que eu ganho? Eu ainda recebo uma lista. Se eu abrir esse arquivo, ainda tenho uma lista. Mas pessoal, isso é a Apple. Deixe-me escrever, clicar e executar novamente. É a Apple. O que está acontecendo? Bem, são as limitações que Jason enfrenta quando não consegue serializar derrubadas Vamos ver algumas coisas que ele pode e algumas coisas que ele não pode. Se eu abrir isso e não me preocupar, enviarei o link para isso. Esse é o Jason. Codificador e decodificador Jason Se você rolar para baixo, poderá ler tudo sobre isso, como usar isso , aprofundar muito, mas não quero perder tempo com isso por enquanto. Quero dar uma olhada nos codificadores e decodificadores, o arquivo Json aqui, você verá que realiza seguinte tradução na decodificação quando você deseja decodificar Se, por exemplo, você tem um objeto, ele se torna um dicionário. Se você tiver uma matriz em Jason, ela se tornará uma lista. Se você tem uma string, ela sai como uma string em Python, e assim por diante Se descermos até a decodificação, quero dizer codificar os seguintes objetos e tipos Por padrão, por exemplo, uma lista e duas são convertidas em uma matriz. Nesse caso, uma matriz é como uma lista. Tem colchetes. Uma string permanece uma string, mas um inteiro, um inteiro flutuante e enums derivados de fluxo, e enums derivados de fluxo, tudo o que é armazenado como números, verdadeiro armazenado como verdadeiro, falso como cai e nenhum como nulo É por isso que, quando convertemos em Python de uma lista para duas, ainda obtivemos uma matriz e ainda tínhamos a mesma saída Então, espero que isso tenha sido entendido, espero que não seja muito confuso Você sempre pode olhar para trás e entender como funciona, mas usar os arquivos do Jason é muito, muito importante Por exemplo, se você quiser salvar datas em arquivos Jason, é impossível, eles não estão registrados corretamente Jason tem suas limitações. De qualquer forma, eu sei que esse vídeo foi longo. Eu tento ser o mais breve e aprofundado possível. Em minhas explicações, acho que cobri tudo o que eu precisava cobrir Para lhe dar uma ideia ampla e um pouco mais aprofundada. Eu recomendo que, quando chegar a hora de se tornar analista de dados ou desenvolvedor de Python ou qualquer outra coisa, você tenha que se aprofundar muito nessas coisas Não vou fazer isso no discurso por enquanto, talvez mais tarde, quem sabe Mas vamos agora dar uma olhada em uma aplicação prática do uso de Json De volta aqui, vou criar um novo arquivo Python. Desculpe, não é um novo arquivo Python. Um novo arquivo justo. E eu vou chamá-lo de estudantes. Jon, eu quero criar um arquivo Json. Então eu vou colocar esses dados novamente, por favor. Você deveria vê-lo em algum lugar. Se você não cutucar, não sei se você se lembra do MSN, não sei, quantos anos Talvez o que eu acabei de dizer não faça nenhum sentido. Mas de qualquer forma, veja o que temos aqui. Criamos um arquivo Json e Intelligent reconhece que criamos um arquivo JSON Talvez do seu lado ele não reconheça isso. Talvez você precise instalar algo que apareça no canto inferior direito Faça o que for necessário. Você deve ver essa mudança de cor. Então, observe o que temos aqui. É uma espécie de dicionário, se olharmos para isso aqui. Então, temos um objeto, certo? Então isso é um objeto porque Jason não tem um dicionário Agora, em teoria, o que deveria acontecer quando convertemos isso ou quando lemos o arquivo Json, devemos obter dicionários Portanto, tenha isso em mente porque vamos criar um novo arquivo Python que será um sublinhado prático E vamos lançar um desafio em que você precisa carregar os alunos. Em primeiro lugar, importe o módulo Json, abra a pasta de estudantes no modo correto, carregue os dados na variável de estudantes em uma variável de estudantes Você pode chamar a variável do jeito que quiser. Lembre-se de que você precisa carregar, imprimir os dados obtidos e eles parecem fáceis de usar? Podemos fazer isso de uma maneira melhor? Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? A primeira coisa a fazer é importar o Jon. Certo? E eu sei que alguns de vocês neste momento estão reclamando que esses desafios estão ficando muito, muito difíceis Mas o que eu estou imaginando é que você já fez umas dez, talvez 20 horas. Não sei quanto tempo dura todo esse curso, mas você fez tantas horas que deveria estar muito, muito familiarizado, especialmente se estivesse trabalhando com um de nossos instrutores Você deve ser de primeira qualidade. Portanto, você deve enfrentar esses desafios sem piedade Então, eu vou dizer com o Open. Oh meu Deus. Alunos Jason, eu quero ser mais rápido do que o outro porque enfatizei o uso do modo certo Farei o R como arquivo de sublinhado dos alunos e, em seguida, aqui terei os alunos e direi Json e carregaremos o arquivo dos alunos É isso mesmo. Já vimos a carga. Já vimos o módulo Json. Já vimos a maioria das coisas sobre as quais falamos. Tudo o que resta a fazer é imprimir os alunos e imprimir Wait. Antes de fazermos isso, em primeiro lugar, queríamos analisar os alunos e o que obtemos e analisar isso. Isso é o que, digamos que nem sabemos. Não vamos presumir nada. São dicionários. Na verdade, se quiséssemos imprimir coisas de uma forma mais fácil de usar, como faríamos isso? O que temos aqui? Veja os dados e entenda o que são, analise-os, realmente entenda como estão nesse arquivo. O que temos aqui? Temos os principais alunos e depois temos o nome, um curso, etc., etc Esses são nossos alunos. A chave é o estudante. O valor é uma lista e é uma lista de dicionários. Então, por exemplo, como faço para acessar, como faço para me aprofundar aqui, imprimo estudantes, estudantes, o que eu recebo? Boom, eu recebo uma lista. Como faço para me aprofundar? Eu abro o primeiro elemento dessa lista. Eu entendo esse dicionário. Eu entendo o nome John. Como faço para acessar isso ainda mais profundamente? Eu quero saber o nome, por exemplo. Eu entendo John. Novamente, pratique isso. Certifique-se de que você entendeu como isso funciona. Não há nada nisso. Estou indo cada vez mais fundo. Na verdade, deixe-me duplicar isso para que você possa ver o que eu quero fazer Esse e depois esse. OK. Sim, isso deve ser bom. Ok, então agora vamos talvez anular essas informações e imprimi-las corretamente. Vou me deixar primeiro tentar clicar e correr. Ok, vamos lá. Então, criamos as etapas. Agora deixe-me imprimir aqui. E vou dizer que os dados de sublinhado dos alunos serão iguais aos alunos nos dados dos alunos Vou imprimir Student. Não, espere, este deve ser um estudante porque estamos acessando cada aluno individualmente. O nome do aluno é meu Deus, o que estou fazendo, anos e estudos. E, a propósito, isso foi parte do desafio de imprimi-lo de uma forma fácil de usar. Estudante de estudos, clique com o botão direito do mouse, corra e veja isso. John tem 20 anos e estuda ciência da computação. Alice tem 22 anos e Bob 21 e cada um estuda matemática e física Senhoras e senhores, este foi um vídeo muito longo. Acho que estamos na marca dos 20 minutos neste momento, talvez até mais. Se você chegou até o fim, você é incrível. Se você entendeu 50% do que acabou de acontecer, está se saindo muito bem. Isso não é fácil. Esses são novos conceitos. Serialização, desserialização, Jason, leitura, gravação, carregamento, gravação, despejo, o que Não se preocupe, é natural sentir que você está começando. É natural sentir que essas coisas são difíceis. Você está vendo isso pela primeira vez novamente. Expire. Veja o vídeo, quantas vezes você precisa de recursos extras. Vá para três escolas W. Certifique-se de entender tudo. Entre em contato com seu instrutor local no Tm Python Dev. Certifique-se de que eles expliquem tudo para você. Certifique-se de que eles o ajudem. Não se preocupe, é muito importante o que você fez aqui. Se você consegue entender o que aconteceu, você é incrível. Serializamos o arquivo JS, desserializamos o arquivo JSON, extraímos informações E veja o que obtivemos no final. Veja o que imprimimos, essa linda informação. Eu nem sei o que isso é. Acabamos de receber isso. Espero que tenham gostado. Espero que não tenha sido muito confuso. No próximo vídeo, vamos transmitir o arquivo Json da Internet, o que vai ser muito legal O que será algo parecido com o que fazemos, por exemplo, no Netflix, quando você transmite arquivos. Muito obrigado por assistir. Nos vemos no próximo vídeo. 128. 8. Transmitindo arquivos JSON usando urllib: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo Neste, vamos transmitir arquivos do Jason usando o URL Lip O que isso significa? Vamos ver daqui a pouco. Mas primeiro precisamos entender o que é streaming de arquivos em primeiro lugar. Você pode ter visto streaming em muitos lugares, como o Youtube, como o Netflix. Não conheço nenhum outro lugar onde você tenha visto streaming. O que é streaming de arquivos? Jason é um formato de dados comumente usado para trocar dados entre cliente e servidor Então, como dissemos, Jason é amplamente usado em aplicações web E quando você está usando a web, você está se comunicando com um servidor Então você tem, digamos que você abriu Facebook ou Instagram ou Twitter ou qualquer outra coisa. Quando você está no telefone e no Facebook, digamos que você está rolando para baixo ou fazendo upload de uma foto ou curtindo uma foto, o que está acontecendo é que você, como cliente, está interagindo com um Então você está interagindo com um servidor do Facebook. Então, como esses dados chegam até você? Parte disso vem de Jason. Então, você está transmitindo esses dados por meio de Jason, por exemplo, ou está transmitindo esses dados do servidor do Facebook usando qualquer codificação que eles Streaming de arquivos, como streaming de filmes no Netflix, consiste em acessar arquivos Json online que estão sempre atualizados e imprimi-los um aplicativo para o usuário ver Por exemplo, você tem o aplicativo Netflix ou pode abrir o Netflix no Google Chrome. Então você está transmitindo os arquivos do Netflix para o seu computador. Você não os baixa. Lembre-se de que isso não está sendo baixado. Você está transmitindo, então está obtendo partes do arquivo à medida que os obtém, exibindo-os em seu aplicativo. R Lip é uma biblioteca Python usada para acessar URLs Ele pode ser usado para fazer solicitações HTTP e recuperar dados de servidores web Então, o HTTP é uma forma de criar segurança, digamos, uma solicitação HTTP, como posso te dizer? Como, por exemplo, se abrirmos novamente o link que tínhamos no vídeo anterior. OK. Tudo bem, aqui, isso continua. Aqui, você verá que temos HTTPS aqui. Deixe-me verificar o que realmente significa. Controle a cópia HTPS disso, o que significa segurança do protocolo de hipertransferência Basicamente, ele permite que você crie uma conexão entre você e o servidor com o qual você está tentando trabalhar, que é o HTPS Ao trabalhar com dados Json usando o URL Lip, você pode usar um stream para recuperar os dados em vez de carregá-los na memória Isso é feito usando o URL open, que retorna um arquivo semelhante a um objeto que pode ser lido em partes usando o método read Vamos parar com a teoria e realmente começar a trabalhar com o streaming de arquivos Json em nosso código aqui Vamos criar um novo arquivo Python que vou chamar Arquivo de sublinhado. Sublinhe o streaming. Boom, aqui precisamos importar Json e importar a solicitação UR lib. Isso é muito importante. Isso é o que nos permitirá acessar sites aqui. Eu vou dizer que Jason ressalta os dados. O link de sublinhado é igual ao link a seguir que, é claro, fornecerei a você em algum lugar Lá vamos nós. Agora com esse link, se você quiser, você pode até abrir esse link se eu abrir esse link. Então esse é o link. Se você seguir, descobrirá que temos uma lista. Uma lista enorme para esse assunto. Estrondo. Dentro dessa lista, o que temos? Temos esse dicionário que tem ID, nome, usuário, etc Em seguida, o endereço, o endereço tem dentro dele, outra lista, outro dicionário. E eu estou dizendo dicionário, mas na verdade, o que é quando falamos sobre isso em um contexto Json, é um objeto, não um dicionário Mas quando for desserializado, será um Em Python, aqui está. Você pode ver que o geo, que é uma chave dentro da chave de endereço, tem seu próprio dicionário É muito importante que você passe por isso e analise corretamente. Você precisa entender o que está acontecendo aqui. Mas de qualquer forma, vamos voltar para cá e continuar Vamos fazer o seguinte, vamos dizer com, e isso vai ser novo, mas não se preocupe. URL, solicitação Lip, URL, link de dados Open Json como fluxo de sublinhado Json Então, aqui eu vou dizer que os dados são iguais a Json stream, read, decodified E não está me dando sugestões. Não sei por que o usuário é igual a Json Lembre-se de que isso não é uma carga como fizemos antes, é uma carga. Se passarmos o mouse sobre cargas, ok, isso é muita informação Mas, basicamente, quais são as cargas, a diferença entre a carga e as cargas, é que ela permite o streaming. Posso encontrar nesta documentação em algum lugar que diga que isso é para streaming? Não, eu não posso. Eu recomendo que você vá e pesquise isso com mais detalhes. Existem mais diferenças do que apenas a impressão da parte de streaming e talvez devêssemos fazer com que os usuários clicassem com o botão direito do mouse e executassem. O que obtemos? Lá vamos nós. Recebemos uma lista para esse assunto. Para ver isso, a lista que contém o ID e o nome, o nome, o nome de usuário, o e-mail e, em seguida, o endereço. E então o endereço é completo baseado em si mesmo. Então, muitos dados estão acontecendo aqui. E alguém tem que decodificá-lo. E você já sabe o que fazer. Quando digo alguém, quero dizer você, porque você precisa imprimir as coisas de uma forma fácil de usar. Você precisa usar os dados que obtivemos para imprimir uma saída amigável. Queremos que o nome da pessoa, sua cidade e seu número de telefone sejam impressos corretamente. Queremos isso para todas as pessoas que temos no arquivo que transmitimos. Passe o vídeo agora mesmo e vá para o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Admito que não é uma tarefa fácil de fazer aqui. Vou dizer quatro ou quatro usuários. Vou imprimir o seguinte se seguirmos o exemplo aqui. Em primeiro lugar, o que queremos? Queremos o nome de forma muito simples. Vamos fazer o seguinte. Abra os parênteses e diga, abra os colchetes e abra os Qual é o problema aqui? Qual é o nome do problema? O que ele espera de mim? Parênteses de usuário. OK. Acho que não é reconhecimento. Deixe-me tentar correr e ver. OK. Parênteses de nomes, incomparáveis. Acho que não reconhece isso. Peço desculpas, isso é embaraçoso. Passei alguns segundos tentando descobrir isso. Novamente, gosto de guardar esses erros porque você deve sempre saber que todo mundo comete esses erros, até mesmo um instrutor O problema foi que, quando usei essas duas citações, pensei: O que está acontecendo? Talvez o Python não esteja percebendo esse dicionário ou eu não sei, algo está muito, muito O problema era que eu estava usando aspas simples ao redor delas e estava usando aspas simples dentro Foi isso mesmo. Eu gastei, o editor provavelmente editou isso, mas demorei 2 minutos para perceber esse nome. Se eu escrever Click e correr, aí está. Você pode ver que temos todos os nomes. Muito bom. Agora eles moram em. Se abrirmos isso novamente, você já deve saber o procedimento. O que queremos a seguir? Queremos a cidade, correto? Dissemos a cidade e seu número de telefone. Queremos a cidade. Nosso stream aqui. Agora encontramos o nome. É muito fácil acessar cada item individual aqui. E então acessamos o nome, obtemos o nome, mas a cidade está dentro do endereço. Primeiro, precisamos acessar o endereço e garantir que ele esteja escrito corretamente. Vamos verificar novamente. Onde está? Aqui mesmo. Deixe-me copiar isso na verdade e colar aqui. É o mesmo. Então nós, a cidade, clicamos e não depuramos Se eu escrever, clique e deixe-me parar com isso e correr. Lá vamos nós. Lee Graham mora em Gwen Burl Irvin. How mora em Wiscommb. Esses nomes são muito estranhos. Não sei de onde eles são, mas como você pode ver aqui, endereço, endereço, cidade e assim por diante. Agora, queremos também obter o número de telefone para o qual você pode ligar para eles. Abra os parênteses, onde está o telefone? É por si só. Não está dentro do endereço, então é muito fácil de acessar. O que foi isso? Telefone. Telefone, clique com o botão direito, Executar. Lá vamos nós. Agora estou recebendo o doce símbolo aqui. O que é isso? Oh, é parte do número de telefone. Tudo bem, lá vamos nós. Então, talvez isso tenha sido completamente louco para você. Acho que tudo foi fácil. Talvez essa linha de código seja estranha. Faz parte da decodificação, é ler, decodificar e depois carregar nos usuários Isso deve ser bem simples. Isso é novo, mas é assim que acessamos, não arquivos. Não estamos abrindo um arquivo, estamos acessando um stream aqui. Isso deve ser bem simples. Acho que a parte mais difícil, na minha opinião, aquela com a qual você pode estar tendo dificuldades, é entender como isso funciona Não tenha pressa. Entenda exatamente o que está acontecendo aqui, passo a passo. Concentre-se em um de cada vez. Apenas se concentre em Lea Graham. Concentre-se no ID, no nome, no nome de usuário e no e-mail. Apenas para treinar, como um desafio extra, tente acessar a latitude. Ok, tente acessar a latitude em que cada pessoa está trabalhando. Será um ótimo exercício para você. Uma vez que você pode fazer isso, você é sólido. No próximo vídeo, veremos os arquivos CSV que só, são completamente diferentes Mas não se preocupe se você conseguir entender isso. Você pode entender qualquer coisa na vida. Muito obrigado por assistir. Espero que você goste. E nos vemos no próximo vídeo. 129. 9. Arquivos CSV 101: Bem-vindos de volta, meus colegas desenvolvedores de Python a um vídeo totalmente novo E neste, analisaremos os arquivos CSV sem mais nada , ou vamos começar Em primeiro lugar, o que diabos é mesmo um arquivo CSV? Csv significa valores separados por vírgula. É um formato de arquivo simples ou CSV é um formato de arquivo simples usado para armazenar dados tabulares Dados tabulares significam dados que estão em uma tabela, ou seja, Excel. Planilhas do Google. Muito importante na análise e análise de dados. Geralmente é usado para trocar dados entre diferentes aplicativos, como planilhas O módulo CSV fornece funcionalidade, fornece funcionalidade para trabalhar com arquivos CSV Assim como importamos o arquivo JS. Para trabalhar com a codificação Json, também precisamos importar o CSV Para ler arquivos CSV, usamos a função reader, que retorna um objeto que pode ser iterado para acessar cada linha de um Vimos como acessamos as linhas em um arquivo de texto. O mesmo acontece quando usamos um leitor em um arquivo CSV Acessamos linhas individuais e cada linha é representada como uma lista de strings, com cada string representando um valor na linha Veremos mais disso quando realmente começarmos a trabalhar com arquivos CSV E, finalmente, para gravar arquivos CSV, usamos a função writer, que permite gravar linhas de dados em um arquivo Vamos ver toda essa cinta em seus bonés de pensamento e vamos começar Em primeiro lugar, vou voltar ao meu código. Aqui, vou criar um arquivo CSV de leitura, um arquivo Python para um novo arquivo Python, ler o sublinhado CSV , o livro principal dos arquivos sublinhados Em seguida, vou escrever, clicar, abrir e explorar. Eu vou ficar aqui na lateral, assim como fizemos antes. Você verá que nós temos, nós temos isso também. Devemos ter os recursos. Novamente, se você fizer isso, se houver algum problema, por favor me avise. Deveríamos ter dois. Um é citado, o outro não é citado. E eu vou te dizer qual é a diferença. Controle o controle C. E agora podemos começar a usar esse arquivo. Devemos ver o arquivo Av, onde está? Onde está? Em algum lugar aqui. Espere, eu sou apenas cego e não consigo encontrá-lo? Ah, sim. Lá vamos nós. Então, o arquivo SV. Na verdade, vamos abri-lo e ver o que temos. Então esta é a vírgula da qual eu prometi algumas versões Intelligent já vi isso com estudantes, talvez por causa da atualização, embora eu mantenha atualizada o máximo que posso. Lá vamos nós. Está no formato de tabela. Alguns de vocês podem não tê-los em cores ou talvez não tenham a opção de editor de tabelas. Acho que em algum lugar ao tentar abrir o arquivo CSV, você verá um pop-up aqui ou poderá ver o plug-in CSV Você precisa de algum tipo de plug-in CSV ou algo assim. Faça o download, configure-o para que você possa vê-lo neste formato, assim como eu faço aqui. Se eu subir um pouco, você verá que esse é um formato de tabela ou dados tabulares Assim, podemos ver que temos nomes, identidade, departamento, salário e um trabalho semelhante ao que tínhamos com o arquivo XD. Mas desta vez é um pouco diferente, com os IDs sendo esses números enormes e diferentes. Normalmente, os IDs não vêm de 1 a 10 para voltar ao arquivo CSV de leitura Primeiro de tudo, precisamos importar o módulo CSV. Em seguida, devemos dizer que o nome do arquivo de sublinhado CSV é igual ao da lista de pessoas CSV Agora, assim como fazemos com todos os outros arquivos que dizemos com nome de arquivo CSV aberto, nova linha, vou te dizer o que é essa nova linha daqui a pouco À medida que as pessoas ou pessoas sublinham CSV, sublinhe o arquivo. Então vamos usar o leitor porque lembre-se de que queremos ler isso. Criaremos uma variável de leitor que será igual ao leitor CSV e leremos o arquivo CSV de pessoas Então, diremos quatro na impressão impressa do leitor. Lá vamos nós. Então, primeiro de tudo, o que é essa nova linha? O novo parâmetro de linha é usado ao abrir um arquivo CSV para especificar como as terminações de linha devem ser tratadas durante a leitura do Isso é especial apenas para o CSV. O que você quer ter no final da linha? E eu disse que não quero nada. Então, vamos clicar com o botão direito do mouse e dar uma olhada no que obtemos. Então, como eu disse, será uma lista de strings com cada separação entre o com sendo um item dessa lista Então, você verá nome, identidade, departamento, salário, cargo, John Doe, vendas de identidade, seu salário e o cargo, etc., etc Você verá que até mesmo alguns deles estão vazios. Agora, vamos expandir nosso exemplo e torná-lo mais adequado para leitura. Começaremos configurando os cabeçalhos corretamente. Em primeiro lugar, obviamente, não quero que os cabeçalhos fiquem assim Vou entrar nesse arquivo de arquivo e vou dizer cabeçalhos iguais à linha de leitura do arquivo CSV de pessoas Estou lendo uma única linha e sempre temos que nos despir. Não tenho certeza do que quero tirar a roupa. Vou manter tudo como está. Vou apenas dizer strip. Eu não sei o que será. E eu também vou me dividir por. Então, aqui, vou imprimir os cabeçalhos. Vou ter cabeçalhos, dois pontos, posicionamento, cabeçalhos de campo, clique com o botão direito, run e boom Olha isso. Eu tenho meus cabeçalhos. O único problema é que não vou me livrar deles. Ainda está na forma de uma lista aqui. Primeiro de tudo, vou fazer algumas tiras. Eu vou fazer um R invertido, que é chamado de retorno do carro e barra invertida N. Deixe-me mostrar o que acontece com a barra invertida R. Se eu clicar com o botão direito do mouse e correr, veja isso, eu estou retirando Em primeiro lugar, queremos pegar os cabeçalhos. Eu vou dizer que os cabeçalhos são iguais ao PeopleSvFileReadline Estou lendo a primeira linha do meu arquivo CSV e depois imprimindo os cabeçalhos Lá vamos nós. Agora, se eu escrever, clique e eu corro, veja isso. Eu tenho meus cabeçalhos aqui. Só para mais uma coisa, você notará que temos um espaço aqui, apenas fazemos uma faixa e isso deve ficar bem. Agora temos os cabeçalhos de uma forma um pouco melhor. Agora, o problema com isso é que, se você observar nessas tabelas, podemos extrair essas informações porque as temos como funções, as temos como listas, podemos extrair as informações. O único problema é que todos esses valores são strings, mesmo aqueles que deveriam ser inteiros, como o índice, ou que deveriam ser flutuantes, como Então isso é obviamente um problema. Então, agora vamos dar uma olhada em algo chamado arquivos CSV de citação Você notará que eu também tenho, você também tem outro arquivo, é o CSV da Lista de Pessoas citado Então, vou copiar isso, vou colar de volta neste arquivo. Agora, aqui, devemos ver o citado. Se eu clicar duas vezes e abrir, veja o que temos aqui. As aspas indicam que isso deve ser uma string, que isso é algo especial que deveria ser uma string, enquanto as que não estão entre aspas significam que não deveriam ser De qualquer forma, vamos ver isso em ação e na vida real. Agora vou criar um novo arquivo Python. Um novo arquivo Python que vou chamar sublinhou os arquivos de sublinhado CSV Aqui eu vou importar CSV. Eu direi que o nome do arquivo de sublinhado CSV é igual às pessoas citadas As pessoas listam CSV citado com nome de arquivo CSV aberto, nova linha, apenas um espaço vazio ou nada Quero dizer, as pessoas sublinham CSV, sublinham o arquivo. Eu direi que tenho o leitor que é igual ao leitor V. Arquivo CSV de pessoas, e esse é o mais importante aqui, eu vou dizer Igual a Sv não numérico e quatro linhas na impressão do leitor não gosta Ok, vamos clicar com o botão direito, vamos correr e temos um problema. Antes de dizer qual é esse problema e como lidar com ele, primeiro de tudo, precisamos examinar esse argumento aqui. A citação não foi numérica. Esse argumento diz ao leitor converta automaticamente todos os campos que não estão incluídos em um número flutuante ou inteiro Agora, o erro que obtivemos é desse argumento, porque ele está nos dizendo que tentamos converter o ID, mas não conseguimos. Significando a palavra ID aqui, você verá que o ID não está entre aspas E o mesmo acontecerá com o salário. Por esse motivo, temos que fazer a mesma coisa que fizemos antes seja, retirar os cabeçalhos primeiro Aqui, vou dizer que temos cabeçalhos iguais aos do arquivo CSV de pessoas: ponto lido, linha, aros, pontos lidos, linha, faixa de pontos E então vou imprimir cabeçalhos, cabeçalhos. E agora não devemos ter problemas. Como você pode ver, nós não temos, você verá que temos o nome ID, departamento, salário, cargo, etc Aqui temos a identificação, mas é um carro alegórico Agora, o salário é flutuante. E isso é ótimo, isso é perfeito. Mas isso não deveria ser um carro alegórico. Temos que encontrar uma maneira de resolver isso lançando um desafio para você Seu desafio é fazer números inteiros. Então, primeiro de tudo, como resolveríamos esse problema, pensaríamos sobre isso antes de passar para as próximas etapas? Se você pode pensar sobre isso, você pode fazer isso. Vá em frente e faça isso. Eu recomendo fortemente que você faça isso, mas se não o fizer, esta é sua última chance de pensar sobre isso. Aqui está uma dica: converta cada ID em um int usando a função int antes de imprimir Mas certifique-se de acessar o ID corretamente de nossas funções, passe o vídeo agora mesmo e vá fazer o desafio. Há um desafio extra escondido nas profundezas desse desafio. Tente encontrá-la. Tente consertá-lo. Bem vindo de volta. Como você conseguiu lidar com isso? Espero que não tenha sido muito difícil. Não deve ser muito difícil. Tudo o que precisamos fazer é, dentro desse laço dianteiro, pegar a linha na posição um, porque lembre-se de que é aqui que a temos. E eu vou dizer que é igual à linha inteira um. E é isso. E agora podemos imprimi-lo aqui. Qual é o problema? Tipo inesperado. E acho que não tem certeza do que está acontecendo. Clique com o botão direito e execute. Uh, qual é o problema? Um literal inválido. Tudo funcionou, exceto qual é o problema oculto aqui? Algumas de nossas identidades não estão completas. Por exemplo, depois de Mike Chen, se eu abri isso, vamos procurar dois até chegarmos a Mike Chen. Onde está Mike Chen? Mike Chan está atrás de David Lee Sarah Kim. Ok, então meu Chan, vamos lá, olha isso A identificação aqui está faltando. Então, o que precisamos fazer antes de converter tudo isso é verificar se a linha um é realmente diferente de uma string vazia. Se uma for, desculpe-me, diferente de uma string vazia, só então a converteremos Em seguida, imprimiremos a linha. Então, eu clico com o botão direito e corro, olha isso. Temos tudo impresso corretamente. Muito obrigado por assistir. Espero que você tenha entendido o que estava acontecendo. Não há nada demais aqui. Nada muito complicado. No próximo vídeo, veremos dialetos e farejadores Dialetos e farejadores serão muito importantes para poder analisar dados porque agora sabemos que temos vírgulas, ok, no caso dos documentos de texto, sabíamos que temos Mas e se não conseguirmos ver o arquivo? E se estiver escondido? E se quisermos extrair dados dele e eles forem codificados de alguma forma Como saberíamos que precisaríamos usar o dialeto e o farejador E nos vemos no próximo vídeo onde abordaremos esses problemas. Te vejo então. 130. 10. Como entender dialeto e sniffer: Bem-vindos de volta, meus colegas desenvolvedores de Python. Neste vídeo, vamos entender os dialetos e os entender os dialetos e Agora, você deve ter notado que toda vez que obtemos informações de um arquivo, precisamos saber qual é a aparência desse arquivo ou qual é a aparência do arquivo que estamos lendo. Especialmente quando estamos trabalhando com arquivos TXT. Faz esse arquivo, deixe-me mostrar o que quero dizer. Por exemplo, aqui, o TD do poema Python. Quero dizer, será que, como isso termina? O que ele tem? Quais são os espaços entre eles? Ou quando tentamos analisar, por exemplo, para imprimir os animais na lista de pessoas, x T, por exemplo, precisávamos saber que tínhamos esse delimtador E se não tivermos acesso a esse arquivo? O que faríamos? Bem, vamos usar o CSV para ver como podemos e entender do que esse arquivo é feito, caso não tenhamos acesso ele ou talvez esteja oculto ou codificado, ultrassecreto ou qualquer outra coisa, e você precise extrair informações dele ultrassecreto ou qualquer outra coisa e você precise extrair informações Vamos continuar e começar. Iremos para o arquivo novo, criaremos um novo arquivo Python que chamará o dialeto de sublinhado CSV Aqui eu vou importar CSV e vou criar o nome do arquivo das pessoas igual ao da lista de pessoas T. Digamos que não temos ideia do que está acontecendo lá Eu direi com o nome do arquivo aberto das pessoas. Nova linha porque estamos trabalhando com CSV mesmo sendo um arquivo XD, mas estamos trabalhando com um arquivo CSV E diremos que as pessoas sublinham a lista aqui. Eu vou dizer que temos o leitor. Sempre criamos um leitor ao trabalhar com o leitor CSV e a lista de pessoas Em seguida, diremos quatro linhas no Leitor de pessoas, imprima a linha. Se eu escrever, clicar e correr, devemos obter todas as linhas desse arquivo. Observe que eles estão na forma de uma lista, mas isso não é um problema para nós. A próxima coisa que queremos fazer é ver quais são os separadores dentro desse arquivo agora Ok, eu sei que é um oleoduto, mas imagine que não temos ideia do que são. Além disso, lembre-se de que cada uma dessas linhas é uma lista que contém um item, o que não é muito útil. Então, vamos começar a dissecar isso. Digamos que sabemos que é um pipeline. Se adicionarmos um delimitador aqui, delimite, sim, isso deve estar correto. Lá vamos nós. E se adicionarmos o pipeline, se eu escrever, Click and I run, veja isso. Dissecamos nossas linhas. Como você pode ver, o problema está resolvido. Mas e se você quisesse criar um código que possa receber diferentes tipos de arquivos Txt que podem ter delimitadores diferentes Se o Demeter fosse, por exemplo. Eu não sei Talvez você queira que esse código funcione em vários arquivos. Seja qual for o tipo de arquivo que você enviar, ele o limitará usando seu próprio delimitador A maneira como faremos isso será usando o dialeto e o farejador Às vezes, arquivos CSV ou arquivos TXT. Qualquer tipo de arquivo tem diferentes opções de formatação , como diferentes delimitadores, caracteres de ou terminações de linha, O módulo Csv fornece duas ferramentas muito úteis que são o dialeto e o dialeto sniffer permite que você defina a opção de formatação para um O dialeto será a formatação, você sabe, quando você tem um idioma, ele sempre tem seu próprio Como está escrito, quais são as regras para sua escrita, qual é sua gramática O mesmo acontece nos casos em que temos esses diferentes tipos de formatação de arquivo E o sniffer funciona analisando uma pequena amostra com ênfase na palavra, pequena amostra do arquivo CSV para determinar a opção de formatação Então, o sniffer examina uma amostra do arquivo, e eu sei que continuo dizendo arquivo CSV aqui, mas é porque o dialeto e o sniffer funcionam a partir do Mas, como você viu, também podemos aplicar o arquivo TXT a isso. O sniffer examina o arquivo, vasculha , vê qual é o dialeto e o devolve para que possamos usá-lo na formatação e você possa então passar os dados de amostra para o então passar os dados de amostra método sniffer sniff, que retornará o objeto de dialeto representando a , vê qual é o dialeto e o devolve para que possamos usá-lo na formatação e você possa então passar os dados de amostra para o método sniffer sniff, que retornará o objeto de dialeto representando a opção de formatação detectada. O objeto de dialeto que representa a opção de formatação detectada Você pega uma amostra do arquivo, envia para o sniffer sniff, ele retorna o dialeto e então você pode usar esse dialeto em sua programação ou em sua análise ou formatação ou qualquer envia para o sniffer sniff, ele retorna o dialeto e então você pode usar esse dialeto em sua programação ou em sua análise ou formatação ou qualquer teoria suficiente. Superficialmente, isso é um pouco complicado , mas não se preocupe, é muito simples. De volta ao nosso código aqui. Digamos que queremos mudar algumas coisas aqui. Primeiro de tudo, precisamos criar uma amostra desse arquivo. Eu direi que uma amostra é igual à lista de pessoas lidas. Agora você verá que isso não é algo que queremos, mas por enquanto funcionará. Em seguida, criarei o dialeto das pessoas que será igual ao CSV sniffer sniff e enviarei Agora, se eu escrever Click e correr, você verá que eu não entendo nada mesmo antes de usar o dialeto ou testar coisas Não obtemos uma saída. E por que isso? Você já deve estar familiarizado. Porque já lemos a coisa toda. Agora, novamente com os cursores, imagine que você tem essa pequena capa de robô examinando cada caractere e linha desse arquivo Já foi lido até o fim. O que devemos fazer aqui? Devemos mudar isso. Ou pelo menos não devemos mudar isso, devemos levá-lo de volta ao topo. E a forma como fazemos isso é usando a lista zero das pessoas. Agora, isso leva tudo de volta ao início. Antes de continuarmos, precisamos mudar esse dimetro aqui para mudar esse dimetro aqui o dialeto e dizer que é igual ao dialeto das pessoas Se eu escrevo Click e corro, olha só, eu obtenho a separação sem nem mesmo saber o que temos dentro. Isso é incrível, mas há um problema aqui que pode não aparecer na superfície imediatamente. É o fato de estarmos lendo o arquivo inteiro. E lembre-se de que eu disse que precisamos de uma pequena amostra disso. Imagine se tivéssemos um arquivo 10.000 ou 1 milhão de linhas e isso pudesse acontecer. Não pense que isso não pode acontecer. Você pode encontrar muitos arquivos de texto enormes de bancos de dados ou coletar dados ao longo de anos e anos. Então imagine que você tenha que ler tudo isso. Isso exigirá muito poder de processamento do seu computador. Então, a melhor coisa a fazer aqui é simplesmente ler três linhas. E isso deve ser suficiente para divulgar todas as informações. Vai ser um desafio para você ler apenas algumas linhas. primeiro lugar, em vez de ler o arquivo inteiro, leia apenas algumas linhas do arquivo e use-as como amostra para o dialeto Vou te dar algumas dicas se você não quiser nenhuma delas Faça um vídeo positivo agora mesmo e vá para o desafio. Se não for 321, crie uma variável de string de amostra vazia crie um loop em um determinado intervalo A cada iteração, uma caneta que mostra a variável com linha de leitura, passa o vídeo agora mesmo e vai fazer cada desafio Ok, bem-vindo de volta. Como você conseguiu lidar com isso aqui na amostra? Em vez de fazer isso dessa forma ou ler o arquivo inteiro, vou comentar. Eu tenho um erro, mas tudo bem. Eu direi que a amostra é igual apenas a essa string vazia. Eu vou dizer quatro linhas no alcance. Não sei por que chamo isso, a linha não importa. É porque estamos indo linha por linha. Eu acho que faz sentido. Faça uma amostra mais uma lista de pessoas iguais. Leia a linha. Lá vamos nós. Isso deve ser suficiente. Estamos lendo apenas três linhas agora. Isso deve permanecer o mesmo. Obviamente, nada deveria mudar porque, no primeiro caso, estávamos lendo todo o documento. Agora estamos apenas lendo as três primeiras linhas. Lá vamos nós. Isso é tudo o que temos para isso. Antes de prosseguirmos, há algumas coisas que eu gostaria de mostrar aqui na parte inferior. Deixe-me adicionar uma impressão e vamos imprimir alguns elementos que estão disponíveis para nós ou algumas propriedades do dialeto O dialeto do povo que delimita a duplicata isso, o dialeto do povo, o duplicado isso A citação. Se eu escrever Click e correr, isso é o que obtemos. Esse é o delimitador. Veja como foi detectado. Esse é o personagem para o qual usamos, se fosse, por exemplo, algo diferente, talvez um single, teríamos esse presente para nós também. Então, finalmente, zero significa que não temos nenhuma citação aqui Vamos testar outra coisa. Vamos testar, em vez da lista de pessoas, vamos testar a Lista de pessoas SV e ver o que obtemos. Tenha isso em mente. Clique com o botão direito, Executar. Tudo bem, lá vamos nós. Agora, o delimitador é a vírgula, as aspas duplas de citação ou o gráfico de código ainda são aspas duplas e a citação é duplas e a citação Vamos testar o citado. A lista das pessoas. Lista de pessoas citadas. Vamos ver o que obtemos. Lá vamos nós. Continua o mesmo. Não há nada demais aqui. Vamos finalmente testar o arquivo Json. Qual era o nome do arquivo Json? J era isso. Poderíamos testar o arquivo de teste Json, mas eu queria. O que mais? Os estudantes. Tudo bem, então os alunos, vamos testar os alunos. Jason, corra. Tudo bem Lá vamos nós. Então você pode ver que algumas coisas são diferentes aqui. Não se preocupe com o que estamos lendo. Obviamente, isso não está configurado para leitura do arquivo Json, mas, como você pode ver, não há um delimitador que seja Pelo menos tem isso e há alguns gráficos de código que estou citando Senhoras e senhores, o dialeto é muito útil ao trabalhar com arquivos CSV, arquivos JS e arquivos TXT para entender o que está acontecendo Se você não tiver acesso ao arquivo por algum motivo ou não quiser vasculhá-lo sozinho Muito obrigado por assistir, espero que você goste. No próximo vídeo, escreveremos um arquivo CSV, então nos vemos em seguida 131. 11. Como escrever um arquivo CSV: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, veremos como escrever arquivos CSV Vamos começar. Primeiro de tudo, vamos criar um novo arquivo Python que chamará escrever underscore two, Underscore CSV e Enter, Underscore CSV Antes de tudo, precisamos importar CSV. Isso é óbvio agora. O próximo passo é que precisamos obter esses dados. Agora vou fornecer esses dados em algum lugar e, como sempre, se eu esquecer por algum motivo, por favor, me avise aqui. Vamos criar um arquivo de saída, teremos o nome do arquivo de saída e ele será chamado de people underscore written underscore v CSV E então vamos dizer com a vírgula do nome do arquivo de saída aberta , porque lembre-se de que estamos escrevendo uma nova linha não é igual a nada aqui como arquivo de saída, ou vamos chamá-la de arquivo apenas para que possamos ter uma distinção clara entre o nome e o Em primeiro lugar, precisamos criar o objeto escritor em CSV, assim como temos o objeto leitor Temos o objeto, diremos que o w é igual, é igual a sv Lá vamos nós. E, em seguida, no próximo arquivo, queremos realmente escrever esses dados no escritor, digamos, prosa correta do escritor Os dados, os dados são o que temos aqui. Agora, se eu clicar com o botão direito do mouse e correr, você pode ver que não há saída, obviamente. Deixe-me clicar com o botão direito do mouse e fechar outras guias. E então, aqui, devemos descobrir que temos pessoas escritas em CSV Pronto, olha isso. Temos nome, idade, sexo, país, cidade. E aí está, você pode ver que temos John, Bob, Alice e assim por diante Todas as três pessoas, não muito, isso que queríamos. John Jane, temos todo mundo. John, Jane, Bob. Sim, temos todo mundo aqui. Mas às vezes o problema aqui é que não temos todos os dados, o significa que não temos os cabeçalhos dos nossos dados Por exemplo, teríamos esse tipo de dado e teríamos os cabeçalhos sublinhando dados assim ou nem mesmo assim, talvez estejam escritos assim Temos os títulos de um lado e temos os dados das pessoas do outro lado ou em outra lista Como escreveríamos os cabeçalhos? Porque agora, se eu escrever, clique em, você verá que nas pessoas que escreveram CSV não temos os cabeçalhos Não sabemos qual é o nome, a idade, o sexo. Obviamente, nós sabemos. Mas imagine se talvez não soubéssemos. Como resolveríamos isso com um desafio? Escreva os cabeçalhos em nosso arquivo CSV. Isso deve acontecer antes de começarmos a escrever todas as outras linhas. E eu vou te dar uma dica aqui, procure uma função chamada linha direita Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Assim como lemos linhas e lemos uma linha que lê muitas linhas quando você usa as linhas vermelhas ou uma única linha quando você usa a linha lida. O mesmo princípio é válido aqui. Você pode escrever uma linha e escrever linhas aqui, logo abaixo do escritor. Eu vou dizer certo, certo, oh meu Deus. Linha direita e, em seguida, os dados dos cabeçalhos, e então escrevemos os dados Então, escreva o clique e execute, e se você olhar aqui, veja isso. Temos o nome, a idade, o sexo, o país, cidade e, em seguida, temos o resto dos dados. Então, senhoras e senhores, isso foi muito, muito simples Estamos quase no fim, mas antes de partirmos, dois outros métodos quero mostrar dois outros métodos que nos permitem ler e gravar arquivos com muito mais facilidade. Ou não muito mais facilmente, mas talvez de uma forma mais sofisticada. Então, muito obrigado por assistir. Espero que gostem e nos vemos no próximo vídeo. Tchau tchau por enquanto. 132. 12. Leitura de forma diferente (DictReader): Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, veremos leitores de dicionários, então será uma maneira diferente de ler arquivos. Vamos começar. Em primeiro lugar, o dictreader, é usado para ler arquivos CSV e analisar os dados em Imediatamente, analisamos os dados em dicionários. Já fizemos isso antes, mas de uma forma muito mais longa. Agora, com o leitor de dicionários, temos uma maneira muito mais simples. Um dicionário é criado para cada linha no arquivo CSV, com as chaves sendo o cabeçalho, a linha e o arquivo, e os valores sendo os valores correspondentes nessa linha Os objetos do Dictreader podem ser usados em um loop frontal para iterar sobre cada linha no arquivo CSV E o leitor de ditados pode ser usado para ler arquivos CSV com delimitadores diferentes Por fim, o dictreader é uma maneira conveniente ler arquivos CSV em dicionários Python, facilitando a manipulação e a análise dos dados usando os métodos de dicionário integrados do Você tem um arquivo CSV, tem muitas informações Você usa o leitor de dicionários para configurá-lo em dicionários. E então você analisa e manipula esses dados usando os métodos incorporados Sem mais delongas, vamos voltar ao nosso código e começar a programar Em primeiro lugar, aqui, criarei um novo arquivo Python que chamarei de dict read, ou vamos apenas criar o arquivo CSV R em maiúsculas. Pressione Enter e vamos fechar todas as outras guias aqui. Antes de tudo, importe CSV. Como sempre, sempre dizemos que funciona em CSV, mas isso também pode funcionar em outros arquivos Nome do arquivo igual à lista de pessoas, CSV com nome de arquivo aberto, nova linha E então, à medida que as pessoas arquivam e criaremos, o leitor é igual a Csv, Reader, leitor e arquivo de pessoas Agora, quando tentarmos, primeiro faremos quatro linhas na linha de impressão do leitor, clique com o botão direito do mouse em Executar. E lá vamos nós. Observe como a saída está na forma de um dicionário que aprendemos antes. Agora vamos aplicar tudo isso ao arquivo de texto do nosso pessoal e criar um dicionário a partir dele. As chaves serão o nome das pessoas e os valores serão os dicionários da leitura Agora, antes de fazermos isso, eu também quero levá-lo a analisar pessoas, se você se lembrar desse arquivo ou projeto em que trabalhamos Então, aqui nós fizemos basicamente o mesmo. O que fizemos foi analisar o arquivo e criar nós mesmos um dicionário Para nos ajudar a analisar isso, usamos duas chaves, o nome da pessoa e o ID dessa pessoa, que podemos usar aqui para acessar seu salário. Então, agora vamos fazer a mesma coisa que fizemos aqui, mas em poucas ou muito menos linhas. Como você diz isso? Em um arquivo de linhas? Vamos criar um novo arquivo Python. Vou chamá-lo de dict, Read underscore people Sublinhado xt. Aqui vou importar CSV. Vou criar o nome do arquivo de pessoas igual à lista de pessoas do XT igual a não analisar pessoas iguais a apenas um dicionário vazio Agora vou te dizer um pouco: seu desafio é usar o, eu abri o arquivo, usar o leitor de discos no O que está faltando aqui, adicione um segundo argumento à função dicta, que deveria ser o litro, é obviamente a tubulação Não há necessidade de criar ou usar o sniffer aqui. Podemos usar o limão para fazer isso rápido. O foco principal deste vídeo será o ditado por enquanto. Faça o seguinte desafio, ok, bem-vindo de volta. Muito simples, com nome de arquivo aberto, venha em uma nova linha. Obviamente, como as pessoas sublinham o arquivo e, em seguida, o leitor de sublinhado do disco é igual ao Sv dictreader, Vamos tentar isso. Sem nada, vou dizer quatro linhas no dictreader. Linha de impressão. Vamos ver o que obtemos quando escrevo, clico e corro. Essa é a saída , como você pode ver. Temos todos os cabeçalhos sendo as chaves e, em seguida os valores são todas essas coisas misturadas, então precisamos usar o limitador igual ao pipeline Quando fazemos isso, devemos ver algo um pouco diferente. Então, temos o ID chamado John Doe. Salário de vendas do departamento, 5.000 cargos de gerente de vendas. Olha como isso é bom. Agora nós os separamos em dicionários. Os dicionários foram criados com as chaves sendo os cabeçalhos e os números ou os valores sendo cada pessoa com seu ID e salário correspondentes Você sabe o que eu quero dizer? Antes de prosseguirmos, há algo que precisamos fazer. Queremos começar a escrever em nossos arquivos usando dict, certo? Para fazer isso, precisamos ter um dicionário para gravar nesse arquivo. Vamos continuar e criar nosso código atual. Vou criar um novo arquivo Python que será chamado de criação, sublinhado, sublinhado quatro, redação de sublinhado Você vai ver que isso vai ser especial. Honestamente, estou cansado. Vou copiar isso e colocar aqui. Este será o CSV do Povo. Para o CSV, também teremos o Dicionário do Povo Na verdade, vou ter exatamente a mesma coisa, exceto quatro. Vou ter quatro linhas no leitor de sublinhado, vou imprimir a linha, mas também farei o seguinte Digamos que temos pessoas com o nome da linha , a dobra de maiúsculas e minúsculas é igual à linha, duplique isso e depois o ID O que estamos fazendo aqui? o botão direito. E então eu corro. O que temos aqui com esse nome de dobra de maiúsculas e minúsculas. Espere, o limite. A leitura, ok. O limite aqui não é mais o gasoduto. Vamos tentar remover o limite. O que obtemos? Tudo bem, parece bom criar a impressão e depois imprimir as pessoas. Vamos ver o que obtemos. Clique com o botão direito e tudo bem, algo não está errado. Caixa de método integrada cheia de STR, algo está errado. Quero dizer, agora temos esse dicionário, mas ele não está associado ao nome Desculpe-me, peço desculpas. Sim, lá vamos nós. Então, como você pode ver agora, analisamos esses dados e observamos quantas linhas foram necessárias Veja a diferença entre essas 16 linhas com espaços extras. Poderíamos até reduzir isso. Veja a análise de pessoas, veja quantas linhas foram necessárias para fazer isso E veja quantas linhas foram necessárias para fazer isso usando o dict read. Portanto, você pode ver que temos muitas vantagens ao usar o dict read, mas ainda não terminamos aqui. O próximo passo é realmente começar a escrever no arquivo definido. Em primeiro lugar, precisamos entender que, na verdade, podemos abrir vários arquivos ao mesmo tempo. Aqui, vou abrir outro arquivo para o qual vamos escrever. Esta será a lista de sublinhados de pessoas. Ditado de sublinhado. Agora, este é um arquivo dot-py, e por que estamos fazendo isso? No final, vai fazer muito sentido. Esse será o arquivo de sublinhado de saída. Em primeiro lugar, precisamos importar CSV para nosso novo arquivo dot py, certo? Vou imprimir o arquivo CSV de importação, arquivo é igual ao arquivo de saída que estamos escrevendo na Deixe-me te mostrar. Clique com o botão direito e execute. Vamos dar uma olhada na saída, desculpe, essa é a lista de pessoas? Dicionário. Lista de pessoas, dicionário, lista. Lá vamos nós. Importe CSV Olha, estamos escrevendo código sem escrever código real. Em seguida, vamos imprimir arquivos iguais. Arquivo de saída. Agora, o que você acha que isso faz? Muito interessante. Na verdade, isso cria uma linha vazia de espaço. A próxima coisa que faremos é imprimir o seguinte: a tabela de sublinhado de pessoas é igual a. Abrimos o arquivo de saída entre parênteses, clicamos com o botão direito do mouse em Executar e vemos o que encontramos aqui no dicionário da lista de pessoas Em seguida, vamos realmente começar a escrever coisas. disso, primeiro de tudo, precisamos determinar a ordem dos cabeçalhos que temos no canto superior direito aqui, talvez logo abaixo do nome do arquivo Eu direi que os cabeçalhos sublinhados do pedido são iguais ao ID do nome, cargo, renda e salário Agora vou criar um padrão. Agora você pode se surpreender muito com esse padrão, mas uma vez que eu o use, também fará sentido de zero a nove estrelas de volta de zero a nove. Basicamente, vou adicionar um comentário aqui, isso nos ajudará a identificar quando temos um número flutuante Veja isso, diz de zero 90 a nove com um. no meio, ou pode não ter um ponto Esse é o padrão que nos ajudará a identificar se temos um número flutuante, por exemplo E poderemos convertê-lo então em um flutuador real em vez de ter cordas Agora que temos isso, em seguida, precisamos fazer o seguinte. Depois de lermos o leitor igual ao ponto V ler quatro linhas no leitor de dicionário, não imprimiremos as Vamos removê-los por enquanto. A primeira coisa que faremos é criar uma nova dictina sublinhada Isso vai ser apenas uma variável temporária. Então, vamos dizer quatro teclas em cabeçalhos ordenados, valor igual à linha nessa chave, estamos obtendo o valor, estamos verificando se o valor é numérico Não está me permitindo usar o método nele porque não tenho certeza se o valor pode mesmo usar o numérico Is, mas o numérico deveria estar lá Se o valor for numérico, diremos que o valor é igual ao valor LF bull E eu vou te dizer que isso vai parecer uma loucura. Mas o padrão de correspondência R E resulta em um valor igual ao valor flutuante. Deixe-me terminar e voltaremos. Newt na dobra da caixa da chave é igual ao valor. Então, no final, imprimiremos. Agora estamos imprimindo no arquivo de saída. Estamos abrindo isso, a parte de trás, o novo ditado, vamos lá, arquivo de saída. E então, no final, quando terminarmos, deixe-me removê-los, não precisamos deles. Imprimiremos os colchetes de fechamento. Arquivo, arquivo de saída e, em seguida, apenas uma linha vazia de espaço. Vamos escrever o clique se tivermos algum problema. O arquivo, o arquivo de saída e a operação de E/S foram encerrados. Peço desculpas Essas duas linhas devem estar no final. Isso é um erro muito grave da minha parte. o botão direito. Lá vamos nós. Se olharmos o dicionário da Lista de Pessoas, veja isso. Veja o que criamos. Agora, obviamente, ainda há um problema aqui. Precisamos adicioná-los. Porque lembre-se de que é aqui que os novos dicionários estão sendo gravados no arquivo de saída Agora, se eu escrever clique e execute novamente, devemos dar uma olhada em tudo isso. O ID é um número inteiro e o salário é defeituoso. Vamos analisar isso do início para entender tudo o que está acontecendo. Em primeiro lugar, estamos abrindo o primeiro arquivo que é o nome do arquivo de importação, desculpe, é a lista de pessoas, CSV Estamos importando o arquivo CSV e queremos acessar o dicionário de tabelas das pessoas E você verá no próximo vídeo que vamos usar muito isso com o redator do ditado. A próxima coisa que faremos é ter essa ordem de cabeçalhos, correto Portanto, temos o nome, o cargo e o salário. Nós os usaremos mais tarde para criar essas listas. Aqui também temos o padrão. Esse padrão, como eu disse, nos ajudará a identificar números flutuantes E nós realmente o usamos aqui neste lábio. Vamos pegar esse lábio. Abrimos o primeiro arquivo. Abrimos o segundo arquivo, qual vamos escrever, que é o dicionário da lista de pessoas dot py. Este é um arquivo py. Imprimimos e importamos CSV para o dicionário da lista de pessoas aqui Escrevemos uma pequena linha de código ou uma linha vazia de espaço, que está aqui. E então imprimimos a tabela de pessoas com um colchete aberto, que está aqui Agora vamos pegar o leitor do ditado. Crie um leitor de dicionário. E vamos examinar cada linha que lemos CSV da lista de pessoas para ver o que temos em cada linha Criamos um novo dicionário, um novo dicionário vazio. Examinamos as teclas em nossos cabeçalhos de pedidos. Aqui usamos a chave, acessamos a linha. Correto. Vimos como a linha é acessada a partir da execução anterior. Se você ainda não tem certeza, talvez o que possamos fazer é imprimir a linha novamente, só para que você possa ver. Ok, para que tenhamos tudo à nossa frente. Digamos que estamos trabalhando com John Doe. Ok, estamos nesta linha, acessamos a linha. Esta é a nossa linha na chave. A chave para lembrar é examinar os cabeçalhos dos pedidos. Em primeiro lugar, digamos que seja o nome. Nós acessamos o nome. O que nós temos? Temos John Doe. Verificamos se John Doe, que é o valor, é numérico Se não for, verificamos um Lyp. É um touro aqui? O touro, assim como temos o número inteiro, que converte qualquer coisa que você enviou para ele em um O touro converte tudo o que você envia para ele em um lingote Ele retorna verdadeiro ou falso. Para verificar se é a revanche, não se preocupe muito com isso, apenas saiba que ela permite que você combine duas coisas Tente aplicar o padrão no início da string para retornar uma correspondência do objeto. Nós somos, se isso não é numérico, então o que é? Um carro alegórico, por exemplo. A forma como verificamos isso é ver se temos um número que vai de 0 a 9 aqui, zero a nove, aqui mesmo, temos essa correspondência Se tivermos em algum lugar um ponto flutuante, isso significa que é um flutuador, o que significa que queremos convertê-lo em um flutuador Vou acrescentar aqui, isso é usado para verificar se temos um flutuador usando o padrão Usando o padrão, um bom comentário sobre isso. Depois de fazer isso, criamos um novo dicionário ou adicionamos ao novo dicionário maiúsculas e minúsculas, valor de dobra e, em seguida, voltamos a esse loop for. Novamente, obtemos a identificação. Agora, no ID, temos uma string numérica, que significa que a convertemos em um número inteiro É por isso que aqui temos isso como um número inteiro. Em seguida, examinamos, novamente, o departamento de vendas. Não é numérico nem corresponde a esse padrão. Ele simplesmente é adicionado normalmente. Então vamos para o salário. Quero dizer, o departamento e as palavras anteriores que eu estava dizendo, agora vamos para o salário, obtemos o valor pelo qual passamos. É numérico Não, porque lembre-se de que temos um... in aqui. Então, temos algum tipo de personagem. Em seguida, verificamos se ele corresponde a esse padrão. Ele corresponde a esse padrão. Nós o convertemos em um carro alegórico, colocamos de volta no valor, e é isso que recebemos, o salário E também temos o título do trabalho. Esquecemos de fazer isso aqui. Salário, cargo. Peço desculpas, e não estamos entendendo por causa do cargo Oh, eu sinto muito por isso. Já tínhamos um cargo, mas por algum motivo eu o vi no final. Está sendo coletado aqui. Desculpe por isso. Como você pode ver, é assim que funciona. Eu tentei explicar isso da melhor maneira que pude. Se você ainda não tiver certeza, entre em contato comigo ou com um dos instrutores para que possamos lhe dar mais ajuda Este vídeo foi muito longo. Acho que são cerca de 22 minutos. Acho que é um vídeo muito longo. Eu recomendo que você assista novamente. É muito, muito útil se você puder entender isso. Quer dizer, acho que o pior é isso aqui, a partida. Não deixe isso te surpreender. Certifique-se de entender como estamos criando um novo dicionário e como escrevemos no arquivo de saída. E depois de escrevermos tudo isso, veja, temos a barra invertida D, que cria uma Em seguida, fechamos e adicionamos uma linha extra para que, oh, você sabe o que, talvez nem precisemos da linha extra aqui porque ela é adicionada automaticamente. Vamos ver. Sim, lá vamos nós. que sigamos o Papa, senhoras e senhores, muito obrigado por assistir Estamos quase no fim. No próximo vídeo, veremos o dictrter, que complementará esse dicionário de listas de pessoas Obrigado por assistir, e vemos no próximo vídeo, que espero que não seja tão longo quanto este 133. 13. Escrevendo de forma diferente (DictWriter): Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos escrever de maneiras diferentes usando o ditador. Começamos com esse projeto no vídeo anterior. No longo vídeo anterior. E neste vamos continuar o que começamos. Em primeiro lugar, em nosso arquivo no qual acabamos de escrever nosso dicionário, classe dict é semelhante à classe writer que vimos no módulo CSV, mas também permite que você grave dados no arquivo CSV diretamente de uma lista de dicionários, como temos O que pode ser mais conveniente quando você tem dados que já estão organizados em um dicionário. Vamos começar. Primeiro de tudo, na parte superior e aqui vou adicionar os campos. Os campos que estarão nesse arquivo CSV serão o nome no ID, no cargo e no salário Eles têm que ser exatamente iguais aos nomes-chave que temos na mesa do nosso povo, nos nossos dicionários dentro da mesa do povo Em seguida, abriremos o arquivo para o qual queremos gravar os dados. Já vimos isso tantas vezes. Pessoas, dados de pessoas, pontos CSV para escrever e uma nova linha, espaço vazio como saída Sublinhe o arquivo com dois pontos. Vamos criar o escritor, que será o redator Svc, requer duas coisas Em primeiro lugar, ele requer o arquivo de objeto ou o arquivo de saída no qual vamos gravar. E uma lista dos nomes dos campos ou cabeçalhos das colunas, se você quiser chamá-los assim, que correspondem às chaves no dicionário Na lista aqui, teremos os nomes dos campos iguais aos campos. Basicamente, o que quero dizer aqui. Deixe-me abrir um arquivo ACSV. São esses campos aqui no topo. Precisamos fornecê-los também. É por isso que criamos uma lista de campos. Em seguida, precisamos acessar o gravador e escrever a linha, escrever os cabeçalhos ou o cabeçalho Escrevemos os cabeçalhos primeiro. Esse método pode ser usado para gravar os nomes dos campos na primeira linha do arquivo CSV E então vamos fazer quatro linhas na mesa das pessoas, dois pontos, certo? Certo. Se eu escrever, clicar e correr, não recebo nenhum erro. Isso é bom. Vamos analisar os dados das pessoas, CSV, dados de pessoas, CSV Pronto, olha isso. Senhoras e senhores, criamos tudo aqui. Salário, cargo, nome , ID, cargo e salário. Pronto, ID do nome, cargo e salário de cada pessoa. Essa é uma maneira de fazer as coisas. A outra maneira é usar as linhas da direita aqui. Vou comentar isso e vou fazer, e vou enviar a mesa das pessoas. Se clicarmos e eu correr, vamos ver o que recebo. A mesma saída. Eu defino os nomes e depois defino todos. Existem duas maneiras de escrever isso. Talvez você queira mais foco em cada linha. Talvez você queira mudar algumas coisas. Você usaria o loop for. Caso contrário, basta enviar todos esses dados, basta usar a função certa. Antes de prosseguirmos, digamos que quiséssemos ter nossos nomes classificados. Você pode pensar que é tão fácil quanto dizer ordenado aqui e depois enviar a tabela de pessoas, clicar com o botão direito do mouse e correr Mas você verá rapidamente que não pode fazer isso porque não consegue comparar dois dicionários Você não pode verificar se um dicionário é maior ou menor que outro dicionário. O que precisamos fazer é realmente comparar os nomes das pessoas que estão lá dentro. Para fazer isso, precisamos criar uma função que funcione. Para nós, isso será parte do seu desafio e estamos de volta às funções. Primeiro, crie uma função que use um dicionário como parâmetro. Muito simples, ele deve retornar uma string. Essas são indicações de que você deve mostrar que a string que ela retorna é o valor do nome. Acesse o dicionário, acesse o nome da chave e retorne-o como objeto de retorno dessa função. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, isso deve ser bem simples. Não acho que tenha sido difícil naquela época. Onde devemos fazer isso? Eu farei isso sob a importação. Eu direi que defina as teclas de sublinhado. Abra isso e estou esperando o act, que deve ser do tipo dicionário e deve retornar o SDR Essas são as anotações que você deveria ter adicionado aqui Você retornará o ditado para classificar o nome. Lá vamos nós. Adicionamos um espaço extra aqui e um espaço extra aqui. Lá vamos nós. Por exemplo, aqui, se eu, por exemplo, quiser imprimir o que foi chamado de chaves de classificação, Chaves. E não está me permitindo fazer isso. Deixe-me escrever, clicar e fazer isso. OK. O que nós temos? A mesa do povo, por exemplo. Mesa de pessoas no, em uma, digamos. Clique com o botão direito, Run up. Ainda estamos comparando isso. Vamos remover o classificado daqui. Tente isso de novo. Tudo bem. Jane Smith. Porque na Jane Smith simplesmente devolvemos o nome. Você pode pensar que isso não faz nada. Mas o que podemos fazer aqui é o seguinte. Podemos dizer que essa chave é igual às chaves de classificação. Muito interessante, mas certifique-se de remover os parênteses daqui ao redor das chaves de classificação porque na verdade não estamos chamando isso Se eu escrever, clique e depois volto para as pessoas, você verá que eu tenho Bob porque ele começa com A B, Chris, com David, com Emily, E, H, J, L, K, L , M e P. Então, eles estão todos organizados como mágica. O que fizemos aqui? Se passarmos o mouse sobre o classificado, podemos ver que podemos fornecer algo chamado chave Uma função de tecla personalizada pode ser fornecida para personalizar a ordem de classificação, e o sinalizador reverso pode ser usado de qualquer maneira, o sinalizador reverso serve apenas para reverter Mas o que queremos focar é nessa linha aqui na documentação. Uma função de tecla personalizada pode ser fornecida. Basicamente, o que fizemos aqui foi não chamar a função de classificação ou a função de teclas de classificação Estávamos fornecendo o nome da função e o sorted a chamará quando necessário Ao passar uma função como parâmetro para outra função, você não precisa usar parênteses após o nome da função porque você está passando uma referência para a função em si e não a chamando. Faz sentido. Espero que tenha sido entendido. Basicamente, o que está acontecendo é que o sorted está tentando classificar o estábulo das pessoas e só usa as chaves de classificação quando necessário Ele vai, verifica o nome, volta e depois volta novamente, verifica o nome das próximas pessoas, verifica o nome das próximas pessoas, das próximas pessoas e das próximas pessoas. Apenas como uma coisa extra aqui, vamos criar um novo arquivo Python e chamaremos isso de argumento de sublinhado da função, apenas para que possamos testá-lo Então, vou definir aqui o sublinhado pelo comprimento do sublinhado Digamos que estamos fornecendo uma palavra, não vamos nos aprofundar muito. Eu simplesmente retornarei o tamanho da palavra. Então, aqui vou dizer que temos algumas palavras. Vamos dizer as palavras. Digamos que maçã. Vamos colher frutas, banana, cereja e laranja, laranja. Digamos que aqui queremos as palavras com um sublinhado sejam iguais para classificar a chave das palavras, classificar por tamanho, ok? E então imprima palavras ordenadas, ou na verdade chamará as palavras ordenadas por comprimento Estas aqui serão as palavras ordenadas por. Cartas. E eu vou dizer que é igual a palavras. OK. Isso nos ajudará a entender o que está acontecendo aqui. Vamos adicionar um espaço extra. Quando fazemos a classificação normal, classificamos com as letras Agora, infelizmente, eu fiz um, vamos adicionar. Nós faríamos as maçãs, maçãs ou, como as maçãs, para torná-las ainda mais longas. Mas agora maçãs, bananas, maçãs. Quantos ele tem? Três e depois três. Ok, isso não é bom. Banana. Ok, cerejas, laranja Na verdade, vamos fazer banana, maçã, tortas de maçã. Ok, então tortas de maçã. Então, agora, se eu escrever, clique em, veja isso. Tortas de maçã é a palavra mais longa. Infelizmente, fiz uma escolha muito ruim de palavras. Aqui, eles são todos do mesmo comprimento. Vamos talvez removê-los das laranjas. E agora você verá que as cerejas estão no final. Primeiro, aqui mesmo, criamos essa função que classifica ou retorna o comprimento. E usamos isso como uma chave para classificar as palavras, não por suas letras, observe, e aqui como início, B, C, e talvez eu deva mudar a localização delas, e este exemplo está no topo da minha cabeça. É por isso que não tenho 100% de certeza da palavra que estamos usando. Ok, qual é o problema aqui? Lá vamos nós. OK. Na primeira palavra, quando usamos o sorted sem nenhuma chave, estamos classificando pelas letras Quando usamos a chave, ordenar por comprimento, estamos classificando pelo comprimento da palavra Banana tem seis. laranja também tem seis, mas, por exemplo, se eu fizer essas bananas, você pode ver que agora a laranja está no início. E depois temos cerejas e depois bananas. Está bem? E, por exemplo, se eu adicionar um R extra aqui, aí está. Você pode ver que é laranja, banana, cerejas. A chave usada aqui pela classificação, pelo comprimento, lembre-se de que é uma função, mas não a estamos usando como uma função, estamos usando ela como um parâmetro. Mas, além disso, o foco principal aqui era usar o cabeçalho direito. Mas nós temos, é claro, mas eu ainda acho que é muito importante que você conheça esses conceitos. Muito obrigado por assistir. Espero que você tenha aderido. No próximo vídeo, veremos como usar o ditador sem um dicionário E talvez adicionemos mais aulas à seção. Mas acho que, por enquanto, isso é suficiente. Acho que sua cabeça provavelmente está prestes a explodir por causa de todas as informações Mas confie em mim , leia, entenda. É muito simples, muito fácil quando você o usa uma ou duas vezes. Muito obrigado por assistir e nos vemos no próximo vídeo. 134. 14. Como usar DictWriter sem um dicionário: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste vamos usar o editor de dicionários sem um dicionário. Então, primeiro de tudo, vamos criar um novo arquivo Python. E o arquivo Python será a caixa de zíper das listas de sublinhados A primeira coisa que faremos é adicionar essas informações ao nosso arquivo. Agora, obviamente, vou lhe fornecer isso, mas caso você não consiga encontrá-lo, avise-me em qualquer forma de comunicação que você possa enviar para mim ou para o instrutor Poderíamos facilmente ter adicionado esses arquivos CSV e pronto Mas vamos usar essa oportunidade para transformá-los primeiro em dicionários e depois usá-los no dicionário Agora, como vamos criar a conexão entre esses dois? Temos filmes, diretor e ano. É óbvio que temos uma lista de casais aqui e cada casal contém três itens, que são o diretor do filme e o ano em que foi feito. Mas como vamos criar essa conexão? Como vamos mesclar esses dois? Bem, temos um objeto muito útil em Python chamado objeto zip O objeto zip é uma coleção especial criada pela função zip. Bastante óbvio. A função zip pega um ou mais itterubles e constrói um Ele cria várias tupples a partir de vários itterrubles. Quando dizemos itterbles, isso significa uma lista, uma queda, dicionário ou um intervalo, qualquer coisa sobre a qual você possa repetir E então ele constrói um iterador de tuplas, que significa que você pode iterar E veremos o que isso significa quando tomarmos alguns exemplos em que cada tupla contém elementos de cada itteruble Dissemos que tínhamos dois itterubles. Esses dois itterubles são unidos para criar um iterador de tupples E então essa queda, ou cada tupla nesse iterador, contém elementos de cada um desses dois iteradores elementos de cada um desses Você provavelmente está tipo, whoa, whoa. O que diabos está acontecendo agora? Não se preocupe Depois de ver alguns exemplos, isso deve ficar mais óbvio. O comprimento do objeto zip é o comprimento do menor itterble Porque lembre-se de que estamos construindo uma terceira queda a partir de duas pedras O mais curto será o comprimento da queda do set. E, finalmente, o objeto zip pode ser útil para tarefas como iterar várias listas, emparelhar simultaneamente dados relacionados, como um exemplo de uma hora, ou transpor dados também como um exemplo de uma Então, sem mais delongas, vamos voltar ao nosso código e tentar compactar nossas duas listas aqui Eu vou dizer quatro filas nos filmes. Estou assistindo a todos os filmes. Vou criar o objeto de sublinhado do zíper e direi que é igual à linha de teclas do zíper e se eu carregar as chaves do zíper para imprimir o objeto do zíper Quando escrevo, clique e corro, veja o que recebo, só recebo um objeto zip, que é uma referência ao referido objeto zip. Não é como realmente imprimir algo útil. Para ver algo útil, na verdade vou simplesmente removê-lo porque não precisamos dele. Eu só queria te mostrar que é o tipo de objeto zip. Em vez disso, vou fazer quatro itens no objeto zip e imprimir os itens. E vamos adicionar uma impressão aqui para que possamos separá-las umas das outras. Quando escrevo, clico e corro, é isso que eu recebo. Tenho o filme O Poderoso Chefão, diretor Francis Ford Copolayear, filme de 1972, do diretor de Pulp Fiction, Quentin Taro Esse formato lembra você de alguma coisa? Não parece um par de valores-chave? Basicamente, o que está acontecendo aqui é que estamos pegando as chaves que são filme, diretor e ano. Então esta é a nossa primeira vez, lembre-se de que dissemos que tínhamos dois itterbles Em seguida, estamos emparelhando-o com outro itterble, que é E a fila está mudando a cada filme, combinamos o filme com o diretor O Poderoso Chefão, com Francis Ford Pla E aqui com 1972. Passamos por isso, imprimimos os itens, boom, boom, boom. E é por isso que eu disse que o objeto zip é um iterador de tupples porque você pode iterar sobre ele e, a cada iteração, e, a cada iteração, um iterador de tupples porque você pode iterar sobre ele e, a cada iteração, você obtém uma queda. É por isso que é um iterador de derrubadas. É também por isso que o comprimento Onde está? O comprimento do objeto zip é o comprimento do itterbal mais curto Porque se tivéssemos aqui, por exemplo, algo como, por exemplo, sei lá, clique com o botão direito do mouse e execute, você verá que a saída é a mesma porque não há um quarto elemento aqui. Não há nada para unir o ator a um dos elementos dentro do batente, basta pegar o mais curto, por isso é o Agora que você entendeu como o objeto zip combina esses dois, como vamos usar isso a nosso favor? Eles parecem pares de valores-chave, mas como podemos realmente transformá-los em pares de valores-chave? Bem, já vimos isso antes. O que basicamente podemos fazer, vamos comentar isso por enquanto. Basicamente, o que podemos fazer aqui é dizer que filmes sublinham dict igual ao objeto dict zip Convertemos os objetos zip em dicionários e, se eu imprimir o ditado do filme a cada iteração, devemos obter Olha isso. Agora temos uma conversão. Temos pares literais de valores-chave com o diretor, o ano e o nome do filme Agora que temos nossos dicionários, é hora de usar o Quando digo que é hora de usar o redator do ditado, quero dizer que é hora de você fazer o desafio de escrever o redator do ditado. Primeiro de tudo, precisamos obviamente importar o módulo CSV, abrir o arquivo, queremos escrever dois com o modo correto Você pode nomear o arquivo como quiser. Crie o objeto escritor usando o editor de dicionário, escreva os cabeçalhos, não esqueça os cabeçalhos Em seguida, adicione o código que fizemos anteriormente dentro do bloco de código with. Quando digo quando dizemos com open et cetera, o código do qual estou falando é o código que acabamos de criar aqui Esse código, isso deve estar dentro da largura. Deveria ser bem óbvio. Mas, por precaução, os dicionários criados no arquivo CSV com a linha certa os dicionários criados no arquivo CSV com a arquivo CSV com a Passe o vídeo agora mesmo e vá para o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Antes de tudo, como dissemos, precisamos importar CSV Ótimo. A próxima coisa que precisamos fazer é criar o nome do arquivo. Aqui, teremos o nome do arquivo igual a movies zip sv. Em seguida, precisamos abrir o arquivo com o nome do arquivo aberto, que é o modo correto e a nova linha, nada porque os filmes sublinham CSV ou os filmes compactados sublinham CSV, esse é um nome muito longo, isso é muito Vou diminuir um pouco, empurrar para a frente e diremos que o escritor é igual ao escritor Sv dict e vamos escrever para os filmes com sublinhado CSV compactado com os nomes dos campos iguais às teclas Nós já vimos isso antes. Então, com o cabeçalho direito do escritor, teremos quatro filas em filmes, etc., etc. E então o que fazemos no final depois de imprimir o dicionário de filmes? Nem precisamos fazer isso. Diremos que o escritor está na linha direita do dicionário de filmes. Lá vamos nós. Quando executamos isso, devemos ver que um novo arquivo foi criado aqui mesmo no projeto, que era o filme compactado Se abrirmos, veja o que obtemos. Agradável. Os cabeçalhos estão no lugar. Diretor de cinema, ano, os filmes estão prontos. Tudo parece bom. Senhoras e senhores, muito obrigado por terem chegado até aqui nos vídeos Muito obrigado por ter chegado até aqui. E é claro que você faz parte das duas master classes M Python Quero dizer, se você chegou a esse ponto, você basicamente tem mais conhecimento em Python do que 99,7% da população humana na Terra E eu já parabenizo você por suas habilidades incríveis. Você pode começar a se candidatar a empregos, pode começar a procurar informações mais detalhadas. Mas acho que você ainda precisa das informações extras que serão apresentadas na próxima seção, que é Database SQL. É muito importante. Este é provavelmente o último vídeo. Eu poderia atualizar isso mais tarde para torná-lo mais extenso, mas, por enquanto, esse é o fim. Muito obrigado por assistir. Agradeço por você estar aqui. Se você puder me deixar um comentário em qualquer lugar, por favor, faça. Deixe-me saber o que você acha e nos vemos na próxima seção ou vídeo. 135. Seção 10: Usando banco de dados no Python |: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E nesta, oh, e uma seção totalmente nova. Obviamente, nesta ou nesta seção, veremos o uso de bancos de dados e das linguagens Python e SQL Então, este vídeo será o banco de dados 11, onde entenderemos apenas algumas terminologias, o que é banco de dados, como funciona, o que podemos fazer Em seguida, instalaremos o SQL Lite três. Também explicaremos o que será o SQL Lite Three. Vamos configurar as coisas e garantir que possamos confirmar ou continuar a partir daí. Em primeiro lugar, o que é banco de dados? Um banco de dados é uma coleção estruturada de dados. Já vimos muitas coleções estruturadas de dados, como listas de casais, dicionários e conjuntos Todas essas também são coleções estruturadas de dados. Mas o banco de dados é útil quando começamos a ter grandes quantidades de dados Ele é organizado e armazenado para facilitar a recuperação, manipulação e gerenciamento Então, assim como temos com listas, etc., etc., também temos a mesma ideia por trás dos Se tivermos muitos dados, como e-mails, nomes, localizações, qualquer coisa, queremos configurá-los de forma estruturada para que possamos recuperá-los posteriormente quando necessário, alterá-los, manipulá-los e gerenciá-los, garantindo que estejam Ele foi projetado para armazenar e gerenciar grandes volumes de dados de forma eficiente e eficiente. Armazenar e gerenciar é a palavra-chave aqui. Grandes volumes de dados também são muito importantes. Você chega a um certo ponto em que salvar os dados em uma lista não é mais viável. Configurá-lo, não sei, talvez o arquivo Json não seja viável Você precisa de um banco de dados, você tem milhões e milhões de pessoas. Você tem milhares de gigabytes que precisa economizar. Os arquivos não são mais bons Você precisa que o banco de dados permita que os usuários armazenem, recuperem, atualizem e excluam informações Os bancos de dados são amplamente usados em vários aplicativos, como sites, sistemas corporativos, aplicativos móveis e muito mais. Por exemplo, quando você está usando o Facebook, quando você está usando o Instagram, quando você está usando o Google, quando você está usando qualquer site, qualquer site que você possa imaginar, qualquer aplicativo que você abre usa um banco de dados. O banco de dados é muito, muito importante. Essa é uma das seções avançadas. Mas se você quiser seguir qualquer carreira, quase qualquer, se quiser se tornar analista de dados, cientista de dados, se quiser fazer aprendizado de máquina em Python, SQL de banco de dados é importante, superimportante Vamos dar um exemplo de um banco de dados para que possamos ver o que é. Para ser justo com você, um banco de dados é apenas uma tabela muito glorificada Obviamente, há muitas outras complexidades nisso. É uma coleção de mesas muito avançadas e bem organizadas. Mas se você olhar, é só uma mesa. Primeiro de tudo, é a mesa. É a coleção ou uma coleção de dados relacionados organizados em linhas e colunas. Então temos os campos. Um campo é um único dado dentro dessa tabela. Às vezes, é chamado de atributo, às vezes é chamado de valor de dados. Você encontrará muitas nomoclaturas ou terminologias diferentes nomoclaturas ou Apenas tente seguir os que eu forneço a você. Talvez, se você pesquisar na Internet, encontre terminologias diferentes Por enquanto, eu os seguiria. Em seguida, temos as colunas. Então, como você pode ver, é uma disposição vertical dos campos dentro de uma tabela. Por exemplo, os IDs do cliente estão todos organizados em uma coluna. O sobrenome e os sobrenomes estão todos organizados em uma coluna. Os números de telefone, os países e, finalmente, temos a fila. Portanto, é um arranjo horizontal de dados dentro de uma tabela, também conhecido como registro ou par. Você verá essas duas palavras usadas. Vamos nos referir a elas como linhas sempre que possível. Este é um exemplo de banco de dados, é apenas uma tabela glorificada Você verá que haverá mais complexidades nisso mais tarde O que é SQL e o que é SQL? Light SQL significa Structured Query Language. Ele fornece um conjunto de comandos e sintaxes para interagir com bancos de dados e realizar operações Assim como você tem a linguagem Python, que permite interagir com o processador do seu computador , enviando alguns comandos Em inglês, ele retorna alguma saída. O mesmo acontece com o SQL. É uma linguagem que permite que você fale com bancos de dados. Essas operações são selecionar, inserir, atualizar e excluir dados Analisaremos todas as operações em SQL. Consulta é a solicitação de dados ou informações de um banco de dados. Talvez a única palavra estranha aqui fosse consulta. A consulta é a solicitação de dados ou informações do banco de dados. Agora, o que é SQL light? É uma versão leve do SQL que não tem servidor e é independente. Quando você trabalha com bancos de dados, geralmente trabalha com servidores. Os servidores são simplesmente, você pode imaginá-los como grandes, tinham um disco rígido enorme com milhões de gigabytes que estão disponíveis para você salvar informações Quando você trabalha com o Facebook ou qualquer site ou aplicativo em que está trabalhando, geralmente é você, como cliente ou usuário, entrando em contato com o servidor por meio da linguagem SQL e recuperando dados de lá Agora, o que queremos fazer é usar o SQ alight, que é uma lista de servidores, porque não queremos ter o incômodo de obter servidores e tentar testar coisas lá fora Faremos isso na lista de servidores usando o SQ alight, ou seja, em nosso computador, para que os bancos de dados não sejam salvos em algum servidor externo ao nosso Estará no seu desktop ou PC ou qualquer outra coisa, e faremos isso usando o SQ alight Não se preocupe Os mesmos comandos são verdadeiros. Ele suporta a linguagem SQL completa, então, quando trabalhamos no SQ alight, é o mesmo que trabalhar com a linguagem SQL É usado em aplicativos que exigem banco de dados local como nós. Ou, por exemplo, se você tiver um pequeno aplicativo que salva algum arquivo no celular do usuário , o SQ Alt é o caminho a percorrer Sem mais delongas, vamos começar. A primeira coisa que precisamos fazer é acessar este site aqui, que é SQLite.org Basta acessar os downloads, é claro. Eu fornecerei o link assim que você acessar os downloads. E aqui você precisa escolher o Linux, se estiver usando um Linux, o MacOS ou o Windows, você precisa selecionar isso Um pacote de ferramentas de linha de comando para gerenciar banco de dados SQL, etc., etc. Ou essa ou essa, ou essa aqui. Selecione um desses. Baixe o arquivo. Como você pode ver, é um arquivo muito pequeno. Agora, é muito importante que você faça o seguinte. Você pega o diretório, pega o arquivo e precisa colocá-lo em um dos diretórios, ou seja, em D ou em outro lugar E precisa ser exatamente assim. Veja essas ferramentas SQL, faça qualquer que seja o nome do seu arquivo. Não precisa ter o mesmo nome. Contanto que, ao abri-lo, você tenha essas três pastas dentro. É muito importante seguir isso. Você tem essas três pastas. Está no diretório local do disco D. Você pode ver a pasta aqui. Quando clicamos duas vezes na pasta, temos que ver essas três pastas dentro dela. Está bem? Esclareça isso. Bom. Depois de fazer isso, a próxima etapa também é muito crucial. Primeiro de tudo, eu quero que você vá para o painel de controle. Ao abri-lo, eu quero que você vá para sistema e segurança. Agora talvez o seu seja um pouco diferente. Vou definir as etapas em algum lugar abaixo do vídeo. Se você esqueceu as etapas ou não consegue segui-las, entre em contato comigo ou seu instrutor e eles o ajudarão Depois de termos o sistema e a segurança aqui, precisamos ir para o sistema a partir do sistema, você precisa ir para Configurações avançadas do sistema. Deveria existir, talvez sua versão do Windows seja mais antiga ou mais recente Vá para Configurações avançadas do sistema. Depois que isso for aberto aqui, quero que você vá para as variáveis de ambiente. Agora temos duas coisas a fazer. Podemos uma ou uma das duas opções. Você verá aqui, temos variáveis de usuário para ish. Agora ish é o nome do meu Windows. Infelizmente, quando comprei este laptop e mudei os nomes, não o configurei corretamente. Agora, estou preso a essa maldição, mas tudo bem. Não tem problema. Você deve encontrar o caminho aqui. Se você não tiver o caminho, precisará criar uma nova variável de uso. Ao clicar no caminho, você precisa ir para Editar. Dentro da edição, você verá muitas opções aqui, mas uma delas deve estar aqui. Esse é o caminho da pasta que acabamos de configurar no diretório. Se você não souber qual é o caminho, volte ao seu diretório, abra esse arquivo, selecione qualquer uma dessas três pastas, selecione qualquer uma dessas três pastas, clique com o botão direito do mouse na propriedade e copie o local. Copie, controle C, você não quer digitar. Apenas copie, certo? Controle C, volte aqui, adicione um novo aqui e cole. Ok. E isso deve ser bom. Vou cancelar porque não preciso fazer isso, por precaução, porque alguns alunos não têm a etapa de trabalhar para eles. Você também pode acessar as variáveis do sistema, acessar o caminho, editar e adicioná-las aqui. Por favor, não exclua nada disso. Também não exclua nada desta parte. Mantenha-o exatamente como está e basta adicionar as ferramentas SQL. E você deve estar pronto se seguir as etapas corretamente. A parte mais importante é garantir que esta pasta aqui tenha exatamente a mesma escala de ferramentas de iluminação, não tão minha quanto a sua. Ao extrair a pasta e tudo mais, ao abrir a pasta, você deve ver essas três pastas, arquivos ou aplicativos onde quer que os veja aqui. Então, quando você acessa o painel de controle, as configurações avançadas do sistema e do sistema de segurança, as variáveis ambientais estão aqui. Copie o caminho. Onde está? Aqui mesmo. Use variáveis, caminho, edição ou novo. Se você não tiver uma edição, envie o caminho da pasta dos aplicativos. Se isso não funcionar, você também pode adicioná-lo ao caminho aqui. Mas eu não acho que seja necessário. Por exemplo, do meu lado, não era necessário. Em um dos meus alunos, foi necessário testar, ver o que funciona. Espero que sim E se você não encontrar, entre em contato com um de seus instrutores locais, é claro, de dois vazios em De Agora, com isso resolvido, queremos testar nossa conexão SQL. Então, vai ser um desafio para você. Abra o prompt de comando. Se você não sabe qual é o prompt de comando aqui, digite o livro do prompt de comando e você verá o seguinte com o nome do seu PC em vez do meu. Digite Q três , está aqui, assim como está aqui. Deve ter uma versão exibida, digite Inq. Agora estamos prontos para trabalhar. Publique o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu fazer isso aqui? Pergunte à tampa três, aperte enter e você verá algo semelhante a isso. Se estiver informando que algo está faltando ou que isso não está disponível, volte e execute as etapas novamente. E se você ainda não conseguir descobrir, entre em contato comigo. Entre em contato com o instrutor designado para você e pronto Muito obrigado por assistir. Espero que tenham gostado. Espero que você esteja pronto para essa jornada. O banco de dados SQL é muito fácil quando você o examina passo a passo e entende tudo o que está acontecendo. Não tenha medo. Mesmo que isso possa parecer um novo idioma, é bastante fácil. Se você fez todas as seções em Python até agora, isso deve ser fácil ou fácil Ou uma caminhada fácil. Eles dizem Cake Walk? Não tenho certeza. Mas de qualquer forma, muito obrigado por assistir A propósito, trabalharemos no prompt de comando nos próximos vídeos até aprendermos e compreendermos o SQL corretamente, depois passaremos a usar o Intelligent e o Python Ok, muito obrigado por assistir. Te vejo no próximo vídeo. 136. 2. SQLite 101: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E este vai se aprofundar no Skylite 11 ou no Esculte three ou como você quiser chamá-lo Primeiro de tudo, como vimos antes, precisamos abrir o skylite três Mas desta vez, na verdade, queremos criar um banco de dados. Vou digitar na luz três testes espaciais B e uma coluna Sem. Pressione enter e você verá que o testdb foi realmente criado ou aberto Às vezes, é aberto. Agora, se formos até aqui, deixe-me mostrar onde isso é realmente criado. Então, se você for ver os usuários e depois o nome de qualquer coisa, verá que o Testdb ou Testdb foi criado aqui Como você pode ver, eu tenho esse. O que vou fazer, na verdade, é excluí-lo porque era de alunos anteriores. Vou deletar isso. Está bem? Não está me permitindo porque o arquivo está em uso. Muito bom. O que vou fazer aqui é desistir e isso vai ser muito importante. É por isso que vou mantê-lo no vídeo. Vou deletar este e, como você pode ver, agora posso esculpir três testes espaciais B, ponto e vírgula, pressionar enter e veremos isso Vamos voltar. Onde está? Por que não foi criado? Onde está meu banco de dados? Deveria aparecer. Ok. Não está aparecendo, está tudo bem. Analisaremos isso mais tarde. Por enquanto, vamos começar com o esculto três. Primeiro de tudo, vamos fazer a ajuda. A ajuda nos mostra muitas informações úteis que podemos ou realmente usaremos mais tarde. Algumas das informações úteis que já usamos , como o Quit, por exemplo, que para de interpretar fluxos de entrada e Se a recuperação for importante, restaure o esquema ou esquema Em francês, nós o pronunciamos schema, schema. Você também encontrará algo muito importante, o cabeçalho. Onde está? Os cabeçalhos estarão em uso? Essas são algumas coisas. Em primeiro lugar, aqui, vou criar o espaço dos cabeçalhos no qual ativarei todos os cabeçalhos que temos na tabela Agora é hora de criar a tabela. Vou criar contatos de mesa. E o nome da tabela será contatos. E dentro eu terei o nome que é do tipo texto, o telefone que é do tipo inteiro, depois o e-mail que será do tipo texto Sempre que usamos uma linguagem de linha ou comando, temos que terminar com ponto e vírgula Quando pressionamos Enter, a tabela é realmente criada. Agora talvez vejamos o banco de dados de teste. Lá vamos nós. Acho que foi, a propósito, peço desculpas Não precisávamos usar ponto e vírgula. Aqui, aqui mesmo quando estamos fazendo o SQL três. Quando estamos executando comandos SQL, como contatos de tabela, precisamos adicionar um ponto e vírgula. Quando estamos fazendo apenas comandos de prompt, como os três testes B do Sqlite, não precisamos usar É só uma força do hábito. Por exemplo, aqui nos cabeçalhos dos pontos, não precisávamos fazer ponto e vírgula, peço desculpas, era uma força do hábito, mas é bom ver como você, ver os erros que eu cometo de vez não precisávamos fazer ponto e vírgula, peço desculpas, era uma força do hábito, mas é bom ver como você, ver os erros que eu cometo de vez em quando é muito importante. Mas de qualquer forma, e aqui criamos uma tabela em nosso banco de dados Agora você vai ficar tipo, ok, onde está essa mesa? Bem, se olharmos aqui em nossa Ajuda, talvez possamos encontrar algo útil como, por exemplo, dot ABC, RST e tabelas nove Então, liste os nomes das tabelas que correspondem ao padrão. Não se preocupe, vamos arrumar as mesas e pronto. Ele nos dá todas as tabelas que temos e uma delas são os contatos. Muito bom. Agora vamos tentar inserir algumas informações na tabela. Vou digitar Inserir nos contatos, no nome, no telefone e no e-mail. E vou dizer que os valores serão, e não precisamos adicionar um espaço, mas vamos adicioná-lo de qualquer maneira. E, a propósito, certifique-se de entender como o cursor funciona O nome será Michael. Deve estar entre aspas simples. O número vai ser 1.589.365 e eu acabei de inventá-lo, a propósito Por favor, não ligue para este número, então o e-mail será contatado em dois M. Python dev.com Quando não pressionamos Enter. Oh, na verdade, deixe-me mostrar o que acontece se pressionarmos Enter em um comando que não está completo. Olha isso. Ele abre uma segunda linha. Ele não é executado quando é executado. Você vai ver isso aqui. Você verá que ela simplesmente se imprime como uma luz. Mas não terminou de ser executado. Então, podemos adicionar essas execuções extras de semiclumnow, todas elas a seguir todas Então, o que fizemos aqui? Nós o inserimos em. Então, esses são os comandos insert Into. Para dentro, para os contatos. O que queremos inserir? O nome, o telefone e o e-mail. Quais são os valores, Michael, esse número e o contato às 02:00 da manhã PythonDev.com Como você pode ver, o único problema aqui é que, se obtivermos um erro, ele não nos mostrará como corrigi-lo Mas é por isso que estamos usando. O prompt de comando nos ajudará a aumentar substancialmente nossas habilidades de SQL usando apenas o IDE normal para isso Porque, de qualquer forma, há muito poucos IDs e linguagens que realmente fornecem alguma dica de como SQL funciona ou onde está o erro exato Conhecer o SQL por meio do prompt de comando quase sem ajuda será muito útil para nós. Agora, a propósito, eu poderia ter mentido. Na verdade, você pode usar as aspas duplas. Digamos que eu queira inserir outro valor em vez de selecionar tudo isso e copiá-lo, o que nem tenho certeza se funciona. E se você pressionar o controle C, precisará clicar com o botão direito para colá-lo. O controle V também funciona. Mas isso não importa , deixe-me removê-lo. Existe uma maneira mais fácil de fazer isso. Então, digamos que você queira entrar em um comando anterior que você tinha. Você pode usar as teclas de seta. Então, se eu ligar, veja isso. Eu entro na tecla de comando que usei e agora posso adicionar um ponto e vírgula Vamos testar as aspas duplas ao redor do contato. E Michael, deixe-me mudar isso, na verdade, muda para Steve. Claro, Steve, vamos mudar o número e mudaremos o e-mail deles para Steve. Em Steve.com, vamos lá. Não existe uma coluna como. Ok, vamos lá. Acho que usando apenas aspas simples. Vamos testá-lo. Lá vamos nós. Exatamente. Portanto, é muito bom que estejamos explorando juntos. Estamos testando coisas juntos. É muito importante que tenhamos inserido outra informação. Agora, como podemos exibir essas informações? Bem, podemos digitar o seguinte. Selecione uma estrela nos contatos. Estrela significa que estamos selecionando tudo. Se eu apertar Enter, veja isso. Temos os cabeçalhos se não tivermos digitado no cabeçalho; se você não o fez, notará que não tem os Mas como digitamos os cabeçalhos, temos os cabeçalhos e essas são Você verá que eles estão separados por esse delímetro, que é o caractere do pipeline Agora, como você pode ver, inserimos essas informações, mas não é assim que escrevemos a linguagem SQL. Algumas pessoas escrevem SQL dessa forma. Mas essa não é a maneira convencional. A forma mais convencional é definir os comandos SQL reais como maiúsculas. Por exemplo, selecione estrela nos contatos. Os comandos QL aqui são a seleção e a partir da inserção em. Essas são as coisas que não mudam e os valores, essas são as palavras, os comandos que não mudam. Esses são os comandos L reais, eles não mudam. Mas, por exemplo, o nome da tabela pode alterar o nome dos valores que queremos inserir. Poderia alterar essas permanências em letras minúsculas. Como, por exemplo, contatos. Como somos da tabela de contatos, talvez queiramos mudar isso para outra tabela. Agora, o que é a estrela aqui? A estrela significa que estamos selecionando tudo. O nome, o telefone, o e-mail e tudo o que está disponível para nós. Mas e se, por exemplo, quiséssemos apenas selecionar os nomes, então selecionaríamos o nome. Nome. Porque tenha em mente que é a mesma palavra que está aqui. Então, se digitarmos nomes, por exemplo, não funcionará. Selecione o nome dos contatos. Pressione Enter e veja isso, acabamos de obter o nome. Muito bom. Agora, vamos voltar à inserção. Vou usar a tecla de seta para cima aqui. Na verdade, devemos começar a mudar. Se você sabe o que, vamos excluir tudo isso. Nós não queremos isso. Começaremos do zero porque usaremos insert into, o que estamos inserindo na tabela de contatos E agora, geralmente aqui, devemos fazer nome, telefone, e-mail e, em seguida, fornecer os valores. Mas se você tiver todos os valores estabelecidos, por exemplo, valores, agora posso fornecê-los com kalen O número é 123-45-6789 e veremos que é Kalen em kalen.com semiclumn Inserir em valores são os comandos de teclas reais da linguagem SQL. Quero dizer, então você tem a tabela de contatos e assim por diante. É por isso que os temos em maiúsculas e minúsculas. Observe aqui que, como fornecemos o nome, o telefone e o e-mail, ou tudo corretamente, não precisamos informar a quais campos queremos ser adicionados ou a quais funções queremos que sejam adicionados. Ele será adicionado automaticamente às funções apropriadas. Agora, se pressionarmos Enter, você verá que funcionou porque não temos uma linha extra. Nós apenas temos o comando scar line sem erros ou avisos Agora, se eu apertar a seta, selecione as teclas e marcaremos estrelas a partir dos contatos. Olha isso. Nós inserimos kalen em nosso banco de dados. Ok. Agora, o problema aqui é o que aconteceria se tentássemos inserir nos contatos? Agora vamos tentar fazer isso, Bob, digamos que, por algum motivo, simplesmente esquecemos o e-mail. Esqueça o número. Apenas esqueça o número por engano. Pressione Enter. Ah, há uma tabela de erros de análise de erros. Contatos tem três colunas, mas dois valores foram fornecidos. Então, como podemos resolver esse problema? Bem, nós oferecemos a você um desafio. Adicione o contato de qualquer maneira, encontre uma maneira de adicionar a pessoa ao banco de dados. De qualquer forma, vou te dar uma dica, se você quiser, você mesmo pode pesquisar Essa é uma ótima jornada para começar por conta própria. Mas as dicas são especificar quais atributos você está adicionando, semelhante ao que fizemos antes E quando digo o que fizemos antes, quero dizer aqui mesmo. Então, por exemplo, você está fornecendo o nome e o e-mail especificando que você está fornecendo o nome e o e-mail. Então, passe o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta aqui que estamos tentando oferecer, Bob. Então, se subirmos até aqui, você pode ver que estamos fornecendo apenas o nome e o e-mail. Então, vou dizer o nome, entrar na lista de e-mails e agora selecionar uma estrela nos contatos. Vamos lá, você pode ver que Bob não tem um número e também está em minúsculas, o que não parece bom. Mas veremos no próximo vídeo como podemos atualizar, excluir e também usar o War in SQL. Senhoras e senhores, muito obrigado por assistir. Espero que tenham gostado. Alguns de vocês podem estar com medo, alguns de vocês podem estar animados. Mas, por favor, não se preocupe. Essa é a coisa mais importante. Vamos examiná-los passo a passo. Se você não tem certeza do que fizemos agora, por favor, volte. Entenda cada pequeno detalhe que fizemos. Isso se tornará muito trivial, muito fácil à medida que avançamos na seção E nos vemos no próximo vídeo. Tchau, tchau por enquanto. 137. 3. ATUALIZAR, EXCLUIR e ONDE: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo Neste, veremos como atualizar, excluir e onde, o que significa mais SQL usando o SQL light. Em primeiro lugar, vamos desistir. Quando saímos, simplesmente fechamos o banco de dados. Vamos limpar todas essas linhas para que possamos digitar o CLS. Se você estiver usando um Mac, acho que pode digitar Clear. Pressione Enter e ele deve ser limpo novamente. Vamos abrir o Sqlite três, testar a semicoluna B. Infelizmente, eu o chamei assim. Preciso digitá-lo novamente para abri-lo novamente. Se você o chamou de outra coisa, digite outra coisa. Em seguida, vamos clicar Selecionar estrela do ponto e vírgula de contato Pressione Enter. Lá vamos nós. Esses são todos os nossos contatos. Em seguida, vamos inserir em contato. Em seguida, valores. E os valores serão James deve ter uma letra maiúscula, o número deve estar, aí está. E então teremos James em.com. E eu estou usando James.com e todos pelo nome ou pelo site com seus nomes , porque não quero patrocinar ninguém E temos um problema. Porque veja só, esse é um problema muito bom que acabamos de encontrar. Não existe tal mesa como contato, porque a mesa é contato com um S. Então vamos lá. É muito importante que você sempre tenha tudo configurado corretamente. A próxima coisa que queremos fazer é criar um backup para nosso banco de dados, porque agora vamos começar a excluir e adicionar coisas Por isso, queremos ter certeza de que sempre teremos um backup para nosso banco de dados, caso façamos bagunça aqui É muito simples, basta clicar em voltar e chamar isso backup de sublinhado de teste. Estrondo. Pressione enter. Agora, se voltarmos aqui, como você pode ver, temos o backup de sublinhado de teste, que é nosso backup Também é algo muito importante que acabamos de dar uma olhada aqui Quando selecionamos a estrela dos contatos, não recebemos os cabeçalhos. Por que isso? Porque começamos onde abrimos o banco de dados do zero. Precisamos colocar os cabeçalhos ativados e, em seguida, selecionar a estrela nos contatos Lá vamos nós. Em seguida, quero atualizar um de nossos e-mails Digamos que Kalen tenha recebido um novo e-mail, eu quero atualizá-lo Vou atualizar o conjunto de contatos. Essas são as palavras-chave importantes, atualize e defina. E-mail é igual a sublinhado kal calen.com Pressione Enter, selecione a estrela do contato. Oh meu Deus. Ah, não. Ah, não. Veja o que acabou de acontecer. Acabamos de mudar todos os e-mails de todos os contatos que tínhamos Isso é um grande problema. Destruímos nosso banco de dados. Alguém nos confiou esse banco de dados e nós o destruímos. Mas, felizmente, fizemos algo muito importante sobre o qual Michael nos contou, que é fazer backup e como restaurá-lo Nós restauramos o teste. Sublinhe novamente. Estrondo. Selecione uma estrela nos contatos. Isso é bom. Quase fomos demitidos do nosso emprego, mas, felizmente, pudemos assistir ao curso de Michael e agora não estamos mais demitidos. Muito bom. Em seguida, precisamos atualizar apenas onde temos Kalen. Como fazemos isso? Bem, fazemos a atualização novamente, mas agora não paramos por aqui. Na verdade, onde o nome é igual ao de Ken. E lembre-se de que diferencia maiúsculas de minúsculas. Agora, se entrarmos e selecionarmos Star, lá vamos nós. Você pode ver que apenas Kalen teve seu e-mail atualizado para o novo Kalen em Kalen.com Pronto. Essa é a atualização. Agora é hora de um pequeno desafio. E seu desafio vai selecionar apenas Steve. Quero que você selecione contextos em que o nome seja igual a Steve Google It e tente encontrar a solução Caso contrário, aqui está uma dica: se você quiser, pode fazer um vídeo positivo agora mesmo, faça a pesquisa sozinho Ou talvez você já conheça a solução sem nenhuma pesquisa no Google. Mas a dica é usar onde o nome é igual a Steve. Selecione entre contextos em que o nome é igual a Steve. Faça um vídeo positivo agora mesmo e vá para o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, vou selecionar Star porque quero obter tudo, desde textos em que o nome seja igual a Steve e Sem Nicolo Agora, se eu apertar Enter, bum, lá vamos nós. Que eu só tenho Steve e não todo mundo aqui. Poderíamos fazer outra coisa, por exemplo, não podemos estrelar. Mas digamos que eu queira selecionar apenas o telefone e o e-mail dos contatos em que o nome é igual a Michael. Tudo bem, esse é o número do Michael e esse é o e-mail de contato dele. Também podemos usar delete e também devemos ter muito cuidado ao fazer isso porque, como na atualização, podemos potencialmente excluir tudo aqui. Quando quisermos excluir, posso dizer excluir dos contatos em que o nome é igual a Bob. Porque se você se lembra, Bob não parece muito bom. Eles estão sem um e-mail, escrito em minúsculas. Queremos nos livrar desses dados. Pressione Enter e agora selecione Estrela em Contatos. Lá vamos nós. Não temos mais Bob. Lembre-se de que, se você excluir dos contatos, lembre-se disso. E, a propósito, algo que não mencionamos ou talvez algo que você não esteja claro para você. Quando excluímos dos contatos cujo nome ou quando selecionamos um dos contatos era o nome, não precisamos apenas fornecer o nome. Podemos dizer, por exemplo, onde o número ou quando a espuma é igual a. Digamos que vamos deletar James. Vou apenas copiar o número de James. Número James e, em seguida, clique em. Isso funcionou? Não, não funcionou Deixe-me tentar isso de novo. Controle C, funcionará? Certo, vamos lá. Estrondo. Selecione Estrela nos contatos. E aí está, você pode ver que James foi excluído não apenas com o nome, ele pode ser usado com qualquer um dos nossos cabeçalhos Aqui mesmo. Aqui mesmo. OK. Então, antes de sairmos mais uma coisa que eu quero fazer é tentar inserir. Deixe-me encontrá-lo. Insira nos contatos. James, eu quero tentar inserir. Em vez de um número, quero tentar adicionar um número na forma de uma string. Porque eu quero fazer isso mais 15. Obviamente, isso não é um número inteiro porque temos vantagens. Mas lembre-se, dissemos que queríamos que o telefone fosse um número inteiro Então, vamos ver o que aconteceria se fizéssemos o seguinte. Se eu tivesse Enter, funcionaria. Nós o adicionamos mesmo que não seja um número inteiro, digamos , uma string, e funcionou Se tentarmos selecionar uma estrela nos contatos, veja só, na verdade temos o número. Agora, na superfície, você pode parecer e dizer, ok, isso não é problema. Mas se você começar a trabalhar e interagir cada vez mais com esse banco de dados, isso pode causar grandes problemas Precisamos sempre nos certificar de que adicionamos as coisas corretamente. Não queremos ter problemas como esses. Se disséssemos que o telefone é um número inteiro, ele deveria permanecer inteiro E você precisa ter certeza, por meio sua interface de usuário, de que esse é o caso. Então, vou excluir dos contatos onde o telefone, cujo nome é James, porque isso não é bom. Tchau, James. Selecione uma estrela nos contatos. Tudo bem. Esse é o básico disso. A última coisa que quero fazer é examinar alguns, alguns comandos que podemos fazer no SQL. Por exemplo, tabelas. Esse comando exibe todas as tabelas que temos em nosso banco de dados atual, temos o esquema Isso é muito importante porque esse comando é usado para exibir o esquema ou de uma tabela especificada ou de todas as tabelas no banco O esquema representa a estrutura da tabela, incluindo os nomes das colunas, da, tipos de dados, restrições e índices. Por exemplo, se você está tentando selecionar apenas algumas colunas, mas não sabe o que são D's, você pode usar o esquema para descobrir como a tabela foi criada e quais valores ou em quais cabeçalhos você pode inserir ou em quais funções você pode inserir A outra coisa é despejá-los. Esse comando é usado para gerar um arquivo de texto contendo as instruções SQL que podem recriar um esquema de banco de dados do zero Ele gera todos os comandos SQL necessários para recriar o banco de dados e seu conteúdo Por exemplo, em primeiro lugar, nós os ignoramos por enquanto. Posteriormente, vamos explicá-los com mais profundidade. Mas, por enquanto, veja a tabela Create e os valores de inserção para que possamos recriar esse banco de dados exato Observe que não fornecemos ou o ponto não nos forneceu as exclusões e as atualizações e assim por diante É só que se você quiser recriar seu banco de dados SQL atual como está, você pode usar esse arquivo de texto E observe que no final temos um commit, algo que devemos ter em mente para mais tarde quando começarmos a trabalhar em Python E, finalmente, temos a saída que é semelhante à Quit. Esse comando é usado simplesmente para sair da interface de linha de comando SQL light. Senhoras e senhores, muito obrigado por assistir. Espero que tenham gostado. Espero que você não esteja muito confuso. No próximo vídeo, veremos a administração do banco de dados, onde consultaremos dados com nosso SQL light E usaremos um banco de dados muito mais extenso que, é claro, fornecerei a você nos recursos. Então, muito obrigado por assistir. Espero que você tenha gostado de me deixar um comentário em qualquer lugar onde você possa entrar em contato comigo se tiver alguma dúvida. E nos vemos no próximo vídeo. De longe, agora. 138. 4. Administração de banco de dados: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E este estará, na verdade, examinando um banco de dados real que eu forneci a você. Abaixo deste vídeo, haverá um link ou um botão ou algo onde você pode baixar os filmes B, que é um banco de dados de filmes. A primeira coisa que queremos fazer é clicar com o botão direito do mouse em nossa área de trabalho e criar uma nova pasta, e vamos chamá-la de banco de dados do filme, ok? E vamos colocar os filmes no banco de dados de filmes. Então, temos algo assim a partir daqui. Eu quero que você clique com o botão direito do mouse e eu quero que você vá para as propriedades, e eu quero que você copie esse local exato, pois é o controle C. E clique em OK. E agora, de volta ao prompt de comando, vou fazer o CLS para limpar tudo e vou fazer o CD E então clique com o botão direito para passar isso. E quando eu pressiono Enter, veja o que abrimos agora. Não estamos mais em C, os usuários querem ou qualquer que seja o nome do seu computador. Agora estamos no desktop do usuário e no banco de dados de filmes que acabamos criar, porque agora queremos abrir os filmes B. Se não especificarmos onde está esse arquivo dob do filme, ele não será capaz de encontrá-lo sozinho Aqui vou digitar Sqlite três e depois filmes B e pressionar Enter e pronto Vamos em frente e, primeiro, definir os cabeçalhos nos cabeçalhos em Enter Agora, como sabemos quais tabelas temos? Mesas, boom. Pressione Enter, temos três mesas, temos atores, gêneros e filmes Vamos em frente e vamos em frente e, na verdade, selecionar uma estrela dos filmes. Vamos selecionar tudo nos filmes. E lá vamos nós. Como você pode ver, temos Shaw, Shank Redemption, Godfather, Dark Night, Pulp Fiction E, no total, temos dez filmes muito bons que eu selecionei. Então você notará que, em primeiro lugar, temos o ID do filme, depois o título, e assim por diante. Agora eu tenho um pequeno desafio para você, e seu desafio é me mostrar os cabeçalhos. Agora, às vezes eu esqueço quais são os desafios. Então, um dos desafios era ativar os cabeçalhos. Essa foi fácil, mas agora eu quero que você selecione na tabela de filmes, o título do filme que tem um ID de filme de três. Agora, tenha em mente o que eu perguntei aqui? Eu quero que você selecione entre os filmes, o título do filme que tem o filme de três no título do filme. Não quero tudo no título do filme em que a ideia do filme seja três. Pause o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Como você conseguiu lidar com isso? Então dissemos que só queríamos o título e olha aqui, nós temos esse título. Então, vou selecionar o título dos filmes em que o ID do filme é igual a três. Pressione Enter e é a noite escura, muito boa como você pode ver. Temos um banco de dados que agora podemos administrar e obviamente, examinaremos muito mais profundamente esse banco Mas, por enquanto, a primeira coisa que precisamos fazer é criar um backup. E o backup será o sublinhado do filme, um backup. Vamos chamá-lo de backup de um, porque tenho a sensação que precisaremos criar vários backups de um Agora, se abrirmos a pasta do banco de dados do filme, você verá que foi aqui o backup do filme foi criado. Muito bom. Agora vamos dar uma olhada em outras tabelas. Vamos em frente e Genres. Selecionaremos tudo, desde gêneros. Sim, é assim que está escrito. Boom Head Center. Não existe uma tabela de gêneros porque faz distinção entre maiúsculas e minúsculas e eu já te disse, e às vezes. Ok. Ainda não é uma estrela selecionada da Jeans. Ok. Ok, vamos testar se na verdade não é. Ok. E aqui temos um E, espero Sim. Lá vamos nós. Portanto, o nome da tabela e o nome da coluna não diferenciam maiúsculas de minúsculas. É óbvio porque aqui fizemos o ID do filme com um M minúsculo, e aqui tivemos um M maiúsculo. Mas, por exemplo, se você quiser selecionar 12 homens raivosos, isso faria distinção entre maiúsculas e minúsculas. Então, tenha isso em mente. Agora, se olharmos para o nosso gênero, você pode ver que temos o ID e o nome do gênero e temos drama, crime, ação e aventura. Muito bom. Vamos tentar inserir nesse banco de dados. Vou inserir em valores. Os valores serão, bem, antes de tudo, precisamos fornecer o ID. O ID será quatro. Eu vou fazer comédia. Agora, obviamente você está me dizendo agora, espere, por que quatro? Já temos um quatro. Qual é o problema aqui? Eu só quero te mostrar uma coisa. Se você perceber que recebo um erro, é muito importante lermos qual é esse erro. Portanto, você verá um erro de análise próximo às inserções e um erro fiscal. Mas o que realmente é isso? O erro é que digitamos em vez de inserir. E eu não sei qual é o problema de eu hoje não estar digitando corretamente As palavras não estão saindo, como você pode ver, mas vamos tentar resolvê-las. Erro de tempo de execução, falha na restrição exclusiva e gêneros, gênero, ID Há um problema aqui. Basicamente, o que está nos dizendo é que você não pode ter chaves que não sejam exclusivas. Mas por que isso? Vamos fazer o esquema e ver como essa tabela foi criada Então você verá que criamos a mesa, os filmes, os gêneros de mesa e os atores de mesa E você verá aqui que temos o ID do filme, que é um número inteiro e é uma chave primária e é incrementado automaticamente, e isso vale para nossas três tabelas Aqui temos o ID do ator, é um número inteiro e é uma chave primária E quando dizemos uma chave primária, isso significa que você não pode fazer com que a mesma chave apareça duas vezes, ou seja, como quatro aventuras. Você não pode ter quatro comédias. Além disso, algo muito importante sobre a chave primária aqui é que ela é incrementada automaticamente e veremos como isso funciona mais tarde Outra coisa que também devemos ter em mente é o nulo, o que significa que não podemos ter campos vazios Se tentarmos adicionar um filme, precisamos fornecer a ID do filme o título e o lançamento aqui. E o gênero, o diretor e a classificação , obviamente, porque não podem ser nulos Ok, espero que esteja claro. Não há nada demais aqui. O mais importante é que tenhamos uma chave primária. A chave primária significa que ela não pode ser duplicada. Assim como temos um conjunto, por exemplo, um incremento automático Ele se incrementa sozinho, e eu vou te mostrar como isso funciona E também temos algo chamado chave estrangeira, mas veremos isso mais tarde. Por enquanto, se quisermos inserir algo nos gêneros, temos que fazer o seguinte Insira no valor do gênero. E agora, em vez de comédia ou quatro comédias, posso simplesmente fazer uma comédia como essa. E, em vez disso, vou ter aqui um documentário. Ok, aperte enter. Veja a tabela de erros de análise. O gênero tem duas colunas, mas um valor foi fornecido. Como resolvemos esse problema? Você já deveria saber disso. Exatamente. Eu posso ouvir você dizer isso. Então, o nome do gênero e verifique se ele está correto. Nome, nome do gênero, pressione Enter e pronto. Agora, se selecionarmos iniciar a partir de Res, aí está. Você pode ver que o ID foi incrementado automaticamente e temos o documentário na parte inferior Muito obrigado por assistir. Espero que você tenha gostado agora de entrar na administração de um banco de dados real. Nos vemos no próximo vídeo, onde trabalharemos para ordenar e unir tabelas usando as chaves estrangeiras que pesquisamos aqui. Antes de eu ir, só para mostrar, temos o ID do filme, título, lançamento, gênero, ID, diretor e classificação. Você verá, por exemplo, o ano de lançamento de Shashank Redemption em 1994, e o ID do gênero E se voltarmos aos nossos gêneros, você pode ver que um é drama, porque O Poderoso Chefão, ou a Redenção de Shawshank Se olharmos, por exemplo, Pulp Fiction, a ideia do gênero é quatro. Se rolarmos para baixo, veremos que quatro é aventura. Vamos ver como podemos conectar essas duas chaves. Como podemos criar uma conexão entre a tabela de gêneros e a mesa de filmes. Muito obrigado por assistir e nos vemos no próximo vídeo. Tchau, tchau por enquanto. 139. 5. ENCOMENDA POR e JUNTE-SE às nossas tabelas: boas-vindas de volta aos meus desenvolvedores de python favoritos em um vídeo totalmente novo E neste, vamos analisar duas coisas. Em primeiro lugar, vamos criar a conexão entre o ID do gênero nos filmes e o ID do gênero no estábulo real do gênero. Então essa será a parte conjunta. Mas antes de fazer isso, precisamos analisar a ordem por. Então, por exemplo, agora, se eu selecionar gêneros, você verá que os obtemos na ordem do ID do gênero Mas isso é só porque esse é o padrão e não precisamos seguir nenhuma configuração padrão. Assim, podemos especificar que queremos ordená-los pelo nome do gênero. Agora, se eu pressionar Enter, você verá que eles estão ordenados pelo nome do gênero. Bem, deveria ser óbvio que não há nada demais nisso. Começamos com ação do que com aventura, porque começamos com a primeira letra e depois vamos para a segunda letra, A, B, C, D. Depois vemos drama. Mas não é algo. O documentário está no final. E você pode estar pensando, bem, isso talvez seja óbvio, já que drama e documentário são o fim. Vamos tentar inserir em gêneros, nome do gênero, valores, e depois faremos comédia Só para mostrar corretamente quando fazemos isso e selecionamos o gênero, você verá que a comédia, mesmo que comece com C, está sob drama. E já vimos isso antes, quando estávamos tentando classificar listas e letras e assim por diante, e Python, que as maiúsculas são consideradas antes das minúsculas Então, como garantir que a comédia e o documentário apareçam nas posições corretas? Podemos fazer o seguinte. Podemos selecionar estrelas de gêneros ordenados pelo nome do gênero. E então podemos especificar que, para coletar nenhum caso, pressione enter. E como você pode ver agora, documentário aparece antes do drama e a comédia aparece antes do crime. Porque a aparece antes de R e também aparece antes. Isso é óbvio. Como você pode ver, não usamos nenhum estojo. Também podemos adicionar uma opção extra aqui e apresentá-la forma descendente ou descendente, como você pode Agora o drama está no começo. E depois temos documentários sobre crime, comédia, ação e aventura listados no final. Muito simples, não há nada demais aqui caso você queira exibir as coisas em uma ordem diferente ou usar um parâmetro diferente como ordem, se quiser exibi-las sem maiúsculas e minúsculas. E você também pode exibi-los em ordem decrescente. Agora eu tenho um pequeno desafio para você resolver os filmes. Selecione todos os filmes da tabela de filmes. Classifique-os com base no gênero e no título do filme. Isso é algo que você pode pesquisar. O caso não deve importar e eles devem estar em ordem decrescente Vou te dar uma dica sobre o segundo ponto em que você deve exibi-los ou ordená-los com base no ID e no título Se você quiser pesquisar isso sozinho, vá em frente e faça isso. Caso contrário, darei uma dica em 321 de um ponto em comum entre o ID do gênero e o título Passe o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, queremos selecionar a estrela dos filmes e, em seguida, fazer o pedido pelo ID. Começamos com o ID do gênero e depois com o título. Colete, case Descending, pressione Enter e pronto. Como você pode ver, os IDs de gênero aqui são 111-122-3344. Em seguida, os exibimos, primeiro com base no ID do gênero, mas como os ordenaríamos a mas como Bem, nós os ordenamos pelo título, então você verá, porque temos e depois temos números no final. Por quê? Porque estamos usando o pedido de envio. Se estivéssemos usando a ordem normal, começaríamos primeiro com os números. A mesma coisa vale aqui nesses dois filmes. Infelizmente, os dois começam do mesmo jeito. Carta. E eles têm quase o mesmo nome, exceto pelo padrinho em algum momento Ou a segunda parte do padrinho tem a coluna aqui. Outro exemplo seriam os três. Aqui temos dois três. Eles também são, comparamos o D e o ABC. D aparece primeiro, mas como está em ordem decrescente, apresentamos primeiro o bom, o ruim e o feio Essa é a ordem. Não há nada demais aqui, muito simples. Vamos tentar isso de uma forma um pouco diferente. Vamos tentar imprimir os atores. Vou selecionar uma estrela entre os atores. Ou, a propósito, se você não sabe o que temos em atores, novamente, você pode usar o esquema Se eu rolar para cima e olhar para os atores, o que temos? Ah, bom. Temos o ID do filme, temos o nome e o sobrenome. Vou ver o primeiro nome e depois inserir o ID do filme. Sim, isso é suficiente. Pronto, esses são todos os nossos atores. Você pode ver que começa aqui. Às vezes, isso pode ser confuso, mas por tentativa e erro será muito fácil identificá-lo Então você verá, em primeiro lugar, que temos Al Pacino e temos dois Al Pacinos Por quê? Porque eles atuam em dois filmes diferentes. Eles atuam na segunda parte do Poderoso Chefão. E no Poderoso Chefão você verá até mesmo a conexão. Porque observe, e isso é muito importante que você entenda agora sobre os atores. Aqui nos atores temos a identificação estrangeira, que é a identificação do filme. Referencia filmes. ID do filme. Portanto, há uma conexão entre Al Pacino com o ID aqui e o padrinho, muito importante Portanto, há uma conexão entre os filmes e os atores. E também temos Al Pacino Nine porque ele também estrela a segunda parte de O Poderoso Chefão Senhoras e senhores, muito obrigado. Peço desculpas, muito obrigado por assistir até agora , porque agora vamos falar sobre a adesão e o que é a adesão A junção basicamente nos permitirá criar a conexão entre esses dois IDs de filmes, o ID do filme no ato e o ID do filme nos filmes. A junção é usada para combinar estradas de duas ou mais tabelas com base em uma coluna relacionada entre elas. Então, no nosso caso, a coluna relacionada é o ID do filme. Aqui estão os tipos mais comuns de união. Portanto, temos a junção esquerda, junção externa completa e junção esquerda se nula, junção direita, se nula, junção direita e junção interna Todas essas são juntas diferentes, não se preocupe por enquanto. O que vamos focar é na junção interna. Todos os outros são para casos muito especiais. 90% das vezes você fará juntas internas porque deseja a conexão entre elas. O que há em comum entre as duas tabelas ou combine as funções entre as duas tabelas em que elas tenham colunas relacionadas. Vamos dar um exemplo para deixar isso mais claro. Vamos voltar ao nosso prompt de comando. Aqui, vou selecionar o primeiro nome. A razão pela qual estou fazendo isso ficará muito clara e algumas. Primeiro de tudo, quero o primeiro nome dos atores da tabela de atores. Isso está indicando a tabela. Em seguida, quero saber o sobrenome do ator. Portanto, tenha em mente que, aqui, esse deve ser o sobrenome. Vá lá, e então eu quero o título do filme. Estou recebendo o primeiro nome dos atores, o sobrenome dos atores. E o título dos filmes. Agora, de onde estou conseguindo isso? Bem, é claro que estou recebendo isso dos atores, mas isso não é suficiente. Porque eu não estou recebendo isso apenas dos atores, estou recebendo isso dos atores. Junte filmes, eles se juntam. E então eu vou dizer sobre em que estamos nos juntando a eles? Qual é a conexão que estamos tentando criar? Está no ID do filme dos atores, onde é igual ao ID do filme do filme. E lá vamos nós. Então, como você pode ver, nunca antes tivemos o ator e o filme exibidos na mesma mesa. Mas nós mesmos criamos essa tela. Então, imprimimos o nome, o sobrenome e o título. Por exemplo, Tim Robbins, The Shawshank Redemption. Vamos dar um exemplo. Aqui vamos nós. Aqui é Tim Robbins. Você pode ver que Tim Robbins tem sua própria identificação pessoal. A ideia do ator de um primeiro nome é Tim, sobrenome Robins Ele nasceu nesta data. Ele é americano e seu ID de filme é um. Se formos ao estábulo de cinema, onde fica o estábulo de filmes? Este é o estábulo de filmes que está sendo exibido aqui. Se formos ao estúdio de cinema, qual filme tem suas ideias para filmes? Nós, eu quero que você o encontre. É o Shawshank Redemption? Isso está correto. Esse é o ID do filme. Nosso comando aqui disse o seguinte. Quero selecionar o nome e o sobrenome dos atores e o título do filme. É por isso que temos a tela. A segunda parte é de onde queremos mostrar isso? De onde queremos obter essas informações? Queremos que atores participem de filmes. Não estamos recebendo isso apenas de atores, estamos recebendo isso de atores unidos a filmes. E como vamos juntá-los na identificação do filme dos atores e nos filmes? ID do filme. Eu entendo que você provavelmente está muito confuso. Como Michael, o que diabos está acontecendo? Como se eu tivesse acabado de aprender o pedido agora. Você está jogando todas essas informações sobre mim. Eu entendo que a junção não é algo fácil de dominar. Mas, novamente, como sempre, você chegou até aqui no curso. Você deve confiar em mim que em algum momento isso se tornará muito intuitivo. O mais importante é entender a conexão que está sendo criada. Por exemplo, George Mckay é britânico com dez IDs de filme, que significa que ele atuou no Onde está o filme? Então, esses são os filmes que ele atuou em 1917 Qual deve ser a saída na parte inferior? Vamos descobrir quem estamos procurando? George McKay George McKay. Se olharmos para onde está George? Na verdade, não consigo encontrar George em lugar nenhum. Pronto, 1917. É muito importante que você entenda a união antes de prosseguirmos. Algo muito importante é que, quando dizemos união, automaticamente queremos dizer união interna. Está bem? Porque só estamos recebendo as coisas que têm em comum dos dois lados. É muito importante saber que estamos obtendo a junção interna. Finalmente, aqui, digamos que queremos obtê-las, mas queremos criar uma certa ordem. Vou remover o ponto e vírgula do final e vou dizer ordenar por e depois filmes, atores-título ou, na verdade, vamos atuar, primeiro nome, Lá vamos nós. Então, começamos do topo. Al Pacino, o padrinho. Al Pacino, o padrinho, segunda parte. Você deveria ter previsto isso porque aqui, veja isso aqui, quando tínhamos esses dois, tínhamos 2,9, o que significa o padrinho e o padrinho Você pode ver no ID do filme que, quando rolamos para baixo, é isso que obtemos. O padrinho e o padrinho, segunda parte. Senhoras e senhores, alguns de vocês podem estar ficando loucos. Alguns de vocês podem estar entusiasmados com o desafio. Alguns de vocês dizem que eu não me inscrevi para isso. O que diabos está acontecendo? Confie em mim, tudo com o tempo se encaixará em um lugar. Todos os quebra-cabeças se encaixarão em seus lugares. Não tenha pressa, respire um pouco de ar fresco e depois relembre isso. Entenda como participar de obras. Tente testar algumas coisas. Tente ver como você pode estragar as coisas. Não se preocupe, você tem o backup, você sempre pode restaurá-lo. Então, muito obrigado por assistir. No próximo vídeo, vamos nos aprofundar nas consultas conjuntas Portanto, certifique-se de entender isso agora, antes de seguir em frente, e nos vemos no próximo vídeo. Tchau tchau por enquanto. 140. 6. Consultas de JOINs de encadeamento: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo Neste, vamos encadear várias consultas conjuntas Agora vamos começar a escrever SQL mais complexo, que significa que talvez cometeremos mais erros, que significa que teremos que reorganizar nosso código de uma maneira melhor E quando estamos trabalhando com prompts de comando, isso não é realmente flexível e possível O que vamos fazer é criar um novo documento de texto dentro da nossa pasta de banco de dados de filmes, que será o arquivo de teste de consulta. É aqui que escreveremos nossas consultas SQL e, em seguida, enviaremos para o comando prom Dessa forma, se cometermos um erro, podemos copiá-lo da pasta de texto. E eu vou te mostrar o que quero dizer com isso mais tarde. Primeiro de tudo, e aqui vamos selecionar os gêneros e os filmes e vamos juntar os filmes e gêneros Vou selecionar os gêneros, o gênero, os nomes dos filmes, o filme, era só o título E será a partir de quais filmes se interconectam em filmes, ID de gênero igual a final, desculpe, gêneros, gênero D Vou simplesmente entrar e vou ordená-los por gênero, faça o nome do gênero. Acabei de cometer um grande erro aqui e sei que cometi o erro, mas cometi por um motivo específico. Eu os escrevi. Eu estava pensando neles, mas acabei de escrevê-los. Digamos que você cometeu um erro, como você o corrigiria? Você não pode voltar aqui e mudar isso. Isso é impossível. E se voltarmos com as setas, você verá que só podemos obter certos termos Então, teremos que reescrever muitas coisas. Então, o que podemos fazer aqui é onde o arquivo de texto SQL que criamos entra em ação. Vamos selecionar isso, abriremos o documento de texto e colaremos tudo aqui. E, claro, vamos remover essa flecha. Agora, posso simplesmente corrigir isso removendo-o. Copie isso e cole aqui. E aperte Enter. Lá vamos nós. Muito bom. Novamente, não existe uma coluna como gênero, nome do gênero. Onde está isso? Vou escrever muito bem. Mudamos isso uma vez, copiamos a base, pressionamos Enter e pronto. Como você pode ver, essa é uma ferramenta muito útil para salvar tudo o que fazemos dentro de um documento de texto. E talvez às vezes você queira refazer alguns deles. Ter isso é uma ferramenta muito útil. Ótimo, vamos ver agora o que aconteceria se quiséssemos acessar três tabelas ao mesmo tempo. Em vez de apenas dois, vamos tentar imprimir o gênero, o filme e os atores ao mesmo tempo. Então, vamos seguir em frente e fazer isso. Em primeiro lugar, o que queremos mostrar? Queremos selecionar gêneros, nome do gênero, ok. Em seguida, obteremos o título do filme. Em seguida, vamos obter o primeiro nome do ator. Atores pontuam o sobrenome novamente. Lembre-se de que, quando estamos trabalhando com os nomes dos nossos campos, está tudo bem. Não importa se temos maiúsculas ou minúsculas e depois de atores, certo? Mas é claro que isso não é o fim, porque, em relação aos atores, vamos até o topo e ver o que temos no esquema ao trabalhar com atores. Temos o primeiro nome, a data de nascimento e, em seguida, temos os quatro e chave que faz referência ao ID do filme. Em que devemos nos juntar aqui? Bem, é claro que devemos juntar o ID do filme dos atores ao ID do filme dos filmes. Vou rolar para baixo, já que já estamos recebendo coisas dos atores. Vou criar uma união interna com os filmes dos filmes. ID do filme. Igual ao ID do filme do ator. salva de palmas para o antivírus de tubarão por nos manter seguros. E isso não é patrocinado pela Shark. A menos que eles queiram entrar em contato comigo e me dar algum dinheiro , sim, somos patrocinados pela Shark, VPN De qualquer forma, junção interna aos filmes e ao ID do filme. ID do filme do filme com o ID do filme do ator. Agora, o próximo passo é saber quais são os gêneros e onde estão os gêneros Novamente, se rolarmos para cima, eu sei que isso é um pouco complicado, mas isso é necessário O que temos são os filmes, temos o ID do gênero e, nos gêneros, temos o ID do gênero. Perfeito. Então, vamos nos juntar a eles, por favor. Eu recomendo que você dedique alguns segundos aqui para corrigir isso também, ou faça você mesmo. Então, em nossa opinião, os gêneros dos filmes se movem da mesma forma que os gêneros, ID do gênero, e eu realmente espero que cometamos um erro aqui E, finalmente, por que espero que cometamos um erro? Porque eu quero te mostrar o poder. Ok, obrigado. Quero dizer, essas duas digitalizações em alguns minutos. Quero dizer, isso tem que ser um recorde. Eles estão se certificando de que estamos seguros. De qualquer forma, quero que você reserve um tempo para realmente apreciar o que está acontecendo aqui e como os estamos conectando E espero que você cometa um erro ao mostrar o poder de usar o documento de texto que acabamos de criar aqui. Queremos ordenar por gêneros, nome do gênero e, em seguida, pelo título do filme e depois pelo primeiro nome do ator E eu acho que isso é o suficiente. Então, vamos pressionar Enter. E lá vamos nós. Temos tudo correto. Mas para o caso de eu copiar isso, basta colocá-lo aqui se quiser. Você também pode adicionar uma descrição do que isso faz, talvez acima dela. Isso seria muito útil, mas vou manter isso aqui e depois controlar S para salvá-lo. Lá vamos nós. Como você pode ver, juntamos o ID do filme nos filmes ao ID do filme nos atores. Conseguimos associar cada ator ao seu filme. Em seguida, juntamos o ID do filme ao ID do gênero restante. Lá vamos nós. Nós cometemos um erro aqui. Algo definitivamente não está correto. Vamos tentar descobrir isso. O que fizemos foi juntar os gêneros no ID do filme e depois no ID do gênero G. É por isso que não temos todos os, e temos algumas coisas estranhas acontecendo aqui Vamos mudar isso de novo. Temos comédia. A Lista de Schindler definitivamente não é uma comédia E o documentário não funciona. Fizemos a coisa errada. O que tivemos que fazer aqui para corrigir isso é selecionar, depois ir para a junção interna, depois para a segunda junção interna, etc., etc Obviamente, não temos tempo para isso. Em vez disso, o que podemos fazer é mudar isso para o gênero, agora podemos simplesmente copiar isso, bum, colar aqui e digitar Tudo bem, lá vamos nós. Então, agora temos tudo configurado corretamente. A ação, a aventura, o crime e o drama. Então, como você pode ver, economizar é muito, muito importante. Então, o que fizemos aqui? Associamos o ID do filme nos filmes ao ID do filme nos atores. Então criamos a primeira conexão, depois criamos a segunda conexão partir do ID do gênero nos gêneros, com o ID do gênero e os filmes E escrevemos tudo corretamente para nós. Espero que você goste antes de partirmos, há um pequeno desafio aqui para você. Então, queremos obter apenas de um único filme, então queremos o mesmo resultado que acabamos de obter. que significa que queremos o nome do gênero , o título, o primeiro nome e o sobrenome dos atores. Mas só queremos que os atores de Pulp Fiction apareçam aqui. O desafio aqui é saber onde inserir a consulta. Coloque-o onde A parte importante é onde inserir isso. Pause o vídeo agora mesmo e obtenha todas as informações Mas só do filme Pulp Fiction. Bem vindo de volta. Como você conseguiu lidar com isso? Basicamente, aqui não vamos copiar tudo. Copiaremos essas três primeiras linhas porque elas são exatamente iguais. Vamos clicar em Enter e agora vamos dizer qual título de filme é igual a Ficção. Espero ter escrito Pulp Fiction corretamente. E então, aqui, copiarei a última linha porque sou preguiçoso e pressionarei Enter Error Não existe esse filme C. Isso é exatamente o que eu quero dizer. Erros sempre podem ser cometidos, especialmente quando estamos trabalhando com SQL, onde o menor erro de pronúncia pode causar grandes problemas Deixe-me removê-los, salvar uma cópia, colar , Enter e pronto. Agora temos todos os atores do filme Pulp Fiction. Senhoras e senhores, espero que tenham gostado deste vídeo. Espero que você tenha entendido a importância de usar os arquivos de texto. No próximo vídeo, veremos como curingas e criaremos visualizações. Coisas muito empolgantes. Mal posso esperar para te mostrar como tudo isso acontece. Muito obrigado por assistir e nos vemos em alguns segundos. 141. 7. COMO Wildcards: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste, veremos como curingas e como criar visualizações. Em primeiro lugar, do que diabos estamos falando? Digamos que você não tenha certeza de qual será o nome do filme que está tentando pesquisar ou imprimir as informações, mas sabe aproximadamente qual será o nome dele. É aqui que usaríamos algo chamado similar. Então, primeiro de tudo, vamos fazer o seguinte. Eu vou, primeiro de tudo, vamos tentar L S aqui. Está bem? Isso não funciona. Precisamos sair. E depois abra novamente. Você sabe o que? Vamos manter as coisas como estão. Está tudo bem E aqui eu quero voltar e quero obter o seguinte. Acho que selecione fronteira por gêneros. Sim, acho que isso é bom o suficiente, então vou imprimir tudo isso. Ok, então, neste momento, é uma boa ideia começar a colocar nosso CodinSXDFile porque ele será muito mais extenso será muito mais extenso Então, se você ainda não começou a fazer isso, recomendo que este seja o ponto em que você faça isso aqui, digamos que queremos obter todos os filmes com a palavra ou o que você quiser chamá-la, por exemplo, O Padrinho ou O Senhor dos Anéis Ou, por exemplo, não queremos Pulp Fiction nesse caso. A maneira como fazemos isso é a seguinte. Vou copiar isso aqui. Vou mudar o juro que o do filme dois ou o título do filme é igual, para onde está o título do filme, como onde está, isso e depois o sinal de porcentagem novamente, não se preocupe Vou explicar para você o que isso significa. Então, vou copiar e colar aqui. E quando eu clicar em Enter, você verá que todos os filmes com o vão aparecer. Tudo o que não tem o não aparecerá. Isso é curinga. Se você quiser primeiro, usamos a palavra-chave. Em vez de um segundo igual, usamos o caractere de porcentagem, que é chamado de curinga Daí o nome desse vídeo, wildcards. E uma terceira coisa, você também pode usar curingas sem curingas. Então, por exemplo, se a palavra for como aqui, por exemplo. Se simplesmente removermos esses curingas , procuraremos um filme com o título. Mas vamos examinar um pouco mais profundamente os curingas porque há algo diferente da porcentagem. Os curingas são um caractere especial usado na correspondência de padrões nas consultas. Então, você está tentando combinar um padrão em sua busca por dados específicos. Eles permitem que você realize pesquisas flexíveis e poderosas representando partes desconhecidas ou variáveis de sua string. Existem dois curingas. O primeiro é o sinal de porcentagem, que representa qualquer sequência de mais 02 caracteres, como se você tivesse um caractere, dois ou talvez nenhum deles, apenas nada dentro e o sublinhado que representa qualquer caractere único OK. Então, com isso resolvido, é claro que, neste caso, não precisaríamos , onde está a consulta? Não precisaríamos do sinal de porcentagem por trás disso. Mas estávamos pensando na ideia de que talvez queiramos que isso apareça em algum lugar dentro de nossa palavra ou que o título do filme não precise estar no início. Obviamente, todos os filmes que temos começam no começo, mas talvez possam estar no meio. É por isso que também usamos o sinal de porcentagem no lado esquerdo. Então, com todas essas informações, agora é hora de enfrentar um pequeno desafio. Seu desafio será encontrar algo assim. Encontre todos os atores que têm um primeiro nome com apenas três letras. Desafio interessante. Imprima o título e o ano em que foram lançados, dos filmes cujos diretores foram publicados em algum lugar em seu nome. Essas são duas tarefas completamente diferentes que você precisa fazer, ok. Então, primeiro, faça o primeiro, depois imprima o título e o ano em que foram lançados nos filmes cujo diretor tem em algum lugar? Pegue os diretores que apareceram em algum lugar em seu nome e imprima o título do filme e o ano em que o filme foi lançado dos diretores que têm um nome em algum lugar em seus nomes. Pause o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Em primeiro lugar, precisamos selecionar a estrela entre os atores, onde os atores fazem o primeiro nome, como sublinhado Sublinhado. Sublinhado. Lá vamos nós. Então, quando pressionamos Enter, como você pode ver, temos Tim, Tim, Ben, Eli Lee e Lee. Muito bom. Esses são todos os atores com apenas três letras no primeiro nome. Agora precisamos pegar todos os filmes e o ano em que foram lançados, quando o diretor tem um nome que contém, precisamos selecionar o título. Solte aqui, é assim que isso é chamado? Título do primeiro nome. OK. Não, não está aqui. Teremos que ir mais até o topo. Vamos apenas ir para onde. OK. Lá vamos nós. Filmes. Temos o lançamento aqui. Sim. Lá vamos nós. E o diretor. OK. Perfeito. Lance aqui. E então, nos filmes em que a porcentagem foi veiculada, porcentagem fechou os parênteses Sam Colin, clique em Enter the Shawshank Redemption. Na verdade, sei o que seria uma boa ideia aqui também imprimir o nome do diretor, o também. Tudo bem, então temos Frank Arrabon. Você pode ver que temos Ran, temos Francis Ford Copola Temos Quentin Tarantino e outro filme de Francis Ford Copola E esses são os filmes. Então, senhoras e senhores, esta é uma pergunta rápida, esta também é muito importante No próximo vídeo, veremos a criação de visualizações. Então, muito obrigado por assistir. Achei que estaria nesse vídeo, mas aparentemente não. Aparentemente, descobri que é muito longo, então tive que criar dois vídeos em vez disso. Muito obrigado por assistir. Eu vou te ver. E o próximo. Tchau tchau por enquanto. 142. 8. Crie visualizações: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, veremos a criação de visualizações. Vamos falar sobre pontos de vista e o que eles são. As visualizações são tabelas virtuais baseadas em tabelas existentes. Se quisermos combinar uma ou mais, se quisermos combinar duas ou mais tabelas, podemos combiná-las em uma mesa virtual, que é uma visualização. Eles nos permitem agrupar dados de várias tabelas e apresentá-los de uma forma mais fácil de entender. As visualizações podem ser usadas para simplificar consultas complexas, dados sensíveis à altura e conceder aos usuários acesso limitado a determinados dados Para criar visualização, você usa a instrução create view. Depois disso, vou te dar um desafio diretamente. Quero dizer, quem não adora um vídeo que começa com um desafio? Seu desafio é criar uma visualização, você precisará criar uma visualização, nomeá-la, título de sublinhado de filmes ou títulos de sublinhado de filme Deve ter todos os títulos de filmes ordenados pelo título. Veja como você pode criar a pesquisa de visualizações, o Google quatro criar visualizações e o SQLW três escolas Mesmo que eu tenha te mostrado um pouco de ajuda com Inter, passe o vídeo agora mesmo e vá fazer o desafio Ok, bem-vindo de volta. Como você conseguiu lidar com isso? A partir daqui, vou criar títulos de visualização e, em seguida, sublinhados de filmes seguida, selecionarei o título dos filmes E então ordene pelos forros que agora dou pela cabeça do título Lá vamos nós. Agora, se eu selecionar a estrela do filme, sublinhar os títulos, veja isso Temos apenas o título de todos os filmes e olha, selecionamos tudo. Então é assim que começamos a analisar as visualizações. Eles simplificam quadrados complexos. Está bem? Embora esse não seja um quadrado complexo , ele simplifica a consulta Ele também oculta dados confidenciais. Então, por exemplo, o ID do gênero. Talvez não queiramos que as pessoas tenham acesso ao ID do gênero. Agora, ocultamos esses dados confidenciais. E também concedeu aos usuários acesso limitado aos dados. Por exemplo, digamos que não quiséssemos que os usuários vissem o ano em que o filme foi lançado. Eu sei que tenha paciência comigo, esses exemplos são um pouco absurdos, mas ainda assim entendem Talvez apenas substitua o ID do gênero uma senha e o ano de lançamento por, sei lá, localização ou algo ao vivo. Ele dá aos usuários acesso limitado a determinadas informações. E é simplificado , veja, agora essas três linhas são uma única linha. Podemos selecionar tudo com muita facilidade. Na verdade, deixe-me copiar isso e colocá-lo em nosso arquivo de texto aqui para sabermos como criamos essa visualização, mesmo que não seja muito complexa, mas ainda possa ser útil mais tarde Com isso, vamos ver como talvez possamos destruir ou excluir uma visualização. Vou remover a visualização dos títulos sublinhados. Lá vamos nós. Agora, se eu tentar selecionar estrelas dos títulos de filmes, você não verá essa tabela. Vamos criá-lo novamente, mas desta vez com algumas modificações. Vou colocar isso aqui mesmo. Vou me certificar de dar um título e garantir que também não haja nenhum caso. Estrondo. Lá vamos nós. Selecione uma estrela dos filmes, ou por que é assim? Onde está a verdadeira estrela selecionada dos títulos de filmes? Lá vamos nós. Mesmo que não haja nenhum caso aqui. Não há problema com o estojo. Achei que seria uma boa ideia adicionar isso. Isso é muito simples. Isso não é algo que realmente gostaríamos. Queremos analisar um melhor uso de nossa visão. Vamos seguir em frente e criar uma visão mais substancial mais complexa e ver seu uso. Em primeiro lugar, vou criar uma visualização e chamá-la de Lista de sublinhados de gênero E vamos dizer que criamos a lista de visualizações como, em seguida, vamos selecionar Gêneros, Nome do gênero como gênero aqui Observe que tínhamos o título como título, mas se tivéssemos outra coisa, como o chamaríamos? Agora especificamos que queremos que os gêneros nome do gênero sejam representados como o gênero, então também queremos que os filmes o façam Título como nome do filme. Talvez então queiramos ter um primeiro nome e acho que o primeiro nome será suficiente ou devemos adicionar o sobrenome? Sim, vamos ficar com sobrenome dos atores. Vamos apenas, sim, vamos manter o nome e o sobrenome. Não precisa mudar nada aqui. Acho que os atores clicaram em Enter. Agora vamos ter uma junção interna dos filmes, e você já deve saber disso , dos atores. ID do filme igual aos filmes, ID do filme, pressione inserir a junção interna dos gêneros no GreenD igual aos filmes, ID do gênero e vamos ordenar pelo nome de John, filmes, título e atores fazem o primeiro nome filmes, título e atores Ótimo. Vou copiar isso. Vou colar aqui e vamos remover este. Essa. Essa. Essa. OK. Qual é o problema aqui? Está me dizendo que o título do filme é o nome do filme Oaks. OK. Não gosta de ter espaços. Então, talvez tenhamos que fazer um sublinhado, ou vamos chamá-lo de filme Por que passar por todo esse incômodo aqui? Lá vamos nós. Agora, se tentarmos selecionar Star na lista de sublinhados do gênero, veja isso Temos essa consulta complexa impressa usando apenas uma simples linha de código. Agora temos uma visualização, que é uma tabela virtual, que nos fornece as seguintes informações. E isso vai ser muito útil no próximo vídeo onde teremos alguns desafios para você. Será um vídeo muito especial com muitos desafios que você precisará encontrar sozinho. Muito obrigado por assistir. Espero que tenham gostado. Espero que você tenha entendido o uso e a utilidade de ter visualizações e mesas virtuais Isso é basicamente, isso é tudo o que eu tenho a dizer. No próximo vídeo, veremos a restauração de backups e algumas funções , além de um conjunto de desafios para finalizar com o banco de dados, para que possamos continuar usando Dados e o SQL em Python Muito obrigado por assistir. Nos vemos no próximo vídeo. 143. 9. Restaurando backups e funções: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, estaremos restaurando backups e examinando as funções E, como eu disse, faça os grandes desafios antes de tudo Aqui, como dissemos, já criamos um backup para nossos filmes, mas queremos criar outro backup. Então, teremos backup, depois os filmes sublinhados, de volta. Espere, deixe-me verificar. Como chamamos o primeiro? Os filmes apoiam um. Filmes de backup, 1. Ok, então este será um filme de volta. Agora temos um segundo backup que é o backup de filmes em Excelente. Agora vamos excluir dos atores todas as nacionalidades ou todos os atores que têm nacionalidade americana Vou excluir dos atores onde a nacionalidade, é esse o nome, na verdade, deixe-me copiar isso Deixe-me excluí-lo e fazer o esquema novamente. Ok, obrigado por esse esquema. Ok, o que temos para os atores? Sim, é de fato, controle de nacionalidade. A nacionalidade é igual à entrada americana. Agora, se selecionarmos um boom, veremos que não temos nenhum americano aqui porque excluímos todo mundo. Agora vamos tentar excluir todos que não são britânicos. Veremos que temos um australiano, um irlandês e um neozelandês também, que Vamos tentar deletar todos , exceto os britânicos. A forma como fazemos isso são atores cuja nacionalidade é diferente da britânica britânico. Agora, se selecionarmos a estrela dos atores, você verá que ainda temos apenas britânicos. Vamos seguir em frente e fazer o seguinte. Eu também vou te mostrar a contagem. Selecionamos Count Star de um boom, você verá que ainda temos nove atores. 12.345.678,9 Vamos fazer o mesmo com os filmes para ver quantos filmes Acredito que temos dez. Boom, exatamente. Lá vamos nós. E então, finalmente, vamos fazer os gêneros. E acho que tivemos seis ou seis. Pronto, muito bom. Vamos restaurar o sublinhado dos filmes, voltar ao boom, e agora, se contarmos os atores novamente, aí está, voltamos aos 39 Então, como você pode ver, a restauração é muito útil. Basicamente, é claro que isso não cobre todo o SQL. O SQL, por exemplo, precisaria de talvez centenas de horas para garantir que entendêssemos cada pequeno canto e recanto, mas isso é basicamente No próximo vídeo, usaremos banco de dados dentro do Python, ou seja, dentro do Mas antes de irmos, tenho uma série de desafios para você. Primeiro de tudo, você precisa selecionar os nomes de todos os atores do filme Pulp Fiction. Em segundo lugar, você precisará repetir a consulta anterior, mas desta vez exibir os atores na ordem dos nomes. Mostre todos os atores do gênero. A ação definiu a nacionalidade de Al Pacino como italiana. Selecione os títulos de todos os filmes do gênero dramático em ordem alfabética, inclua apenas o título e a saída Conte o número desses filmes. Pesquise na Internet para descobrir como obter uma lista dos filmes da etapa seis sem duplicatas Essa é muito legal. Em seguida, pesquise novamente na Internet para descobrir como fazer uma contagem dos filmes sem duplicatas Além disso, recomendo que você sempre mantenha a visão que criamos. Então, criamos duas visualizações, a lista de gêneros e os títulos dos filmes. Então, pense em como você poderia usar essas visualizações a seu favor em algumas das etapas posteriores ao vídeo agora. E tente fazer o possível para enfrentar esses desafios. Porque se você pode enfrentar esses desafios, isso significa que você se tornou intermediário no SQL. Não é super avançado, mas intermediário e superior. E você sabe muito sobre SQL neste momento. Obviamente, com mais prática, com mais exemplos, com exemplos do mundo real, e quando analisarmos isso em Python, isso se tornará muito, muito mais evidente para Mas, por enquanto, faça o possível para enfrentar esses desafios. E nos vemos em alguns minutos. Ok, bem-vindo de volta. Então, como você conseguiu fazer isso? Primeiro, vamos selecionar os nomes de todos os atores do filme Pulp Fiction. Isso deve ser bem simples, só precisamos pegar todos os atores. Selecionaremos ator, primeiro nome, ator, sobrenome e, em seguida, de onde vêm os atores. E então criaremos uma junção interna dos filmes sobre atores. ID do filme igual aos filmes, ID do filme e, em seguida, onde o título é igual a Pulp Fiction. Tudo bem, vamos lá. Então, esses são todos os atores do filme Pulp Fiction. E, obviamente, precisávamos criar uma junção interna apenas para garantir que tivéssemos o mesmo ID do filme, onde temos Pulp Fiction como título. Eu vou salvá-lo. Aqui mesmo. Lá vamos nós. Guarde isso. O que precisamos fazer a seguir? Precisamos repetir a consulta anterior, mas desta vez exibir os atores na ordem dos nomes. Isso deve ser bem simples aqui. Vou apenas copiar essas linhas. Na verdade, vamos escrever isso aqui. Precisamos fazer o pedido pelo nome. Na verdade, copie isso e coloque aqui. Copie isso e coloque aqui, e pronto, como você pode ver. Bruce Willis, Harvey Keitel, John Travolta, Samuel . E lá vamos nós. Sim. Abc, D, E F G H I, J K Mano Pi R S, T U, V, etc Vamos continuar e dar uma olhada em três. Mostre todos os atores do gênero de ação. Muito bom. Novamente, voltamos aqui, deixe-me realmente usar as setas para selecionar o nome e o sobrenome dos atores Então, vamos criar uma união interna com os filmes porque não temos acesso aos gêneros dos atores Para conseguirmos todos os atores de ação, precisamos primeiro obter todos os filmes de ação. Em primeiro lugar, criamos uma junção interna dos filmes no do filme do ator igual ao ID do filme do filme. Em seguida, criamos uma segunda interligação entre os gêneros ou com os gêneros dos gêneros ID do gênero igual ao ID do gênero dos filmes, onde temos gêneros, nome do gênero igual à ação Uh hein. Muito bom. Temos um erro. Não se preocupe. Copiamos isso, colamos aqui. Você sabe o que? Na verdade, só para maior segurança, para que saibamos que temos os filmes, vamos comprar filmes. Filme, é só título e depois gênero, nome do gênero. Isso é para proteção extra. E qual foi o erro? Não é proteção extra, apenas para garantir que a recebemos corretamente. E o que temos aqui? O erro não foi uma coluna como filmes do gênero D, onde eu escrevi isso? ID de gêneros. Ok, filme, gênero D. Sim, vamos lá Então, se eu copiar isso, cole aqui, pressione Enter, e vamos ver, o nome, sobrenome, título e gênero. O Cavaleiro das Trevas, A Noite das Trevas, o Bom. Deb e Ugly O bom e o feio. Sim, lá vamos nós. Temos mais alguma coisa? Vamos tentar selecionar estrelas de livros, filmes. Vamos ver, temos o que é até mesmo o gênero. Vamos selecionar também os gêneros. Nos gêneros que temos, a ação está em três, então temos dois OK. Sim. Então vamos lá. Nós nos certificamos, só estou me certificando que este aqui está realmente correto. Então, só temos dois filmes de ação, que são o bom, o ruim e o feio E, na verdade, contratamos todos os atores por isso muito bem. Mas nessa situação, poderíamos ter feito algo ainda melhor. Então, lembra da lista de gêneros que criamos? Vamos selecionar, oh meu Deus, selecionar estrela. Da lista de gêneros que criamos, mas como você pode ver, já temos os atores associados a um gênero. O que podemos fazer aqui é dizer o seguinte. Selecione primeiro esperar, deixe-me verificar os cabeçalhos. Ok, primeiro nome, sobrenome, gênero. Lista de sublinhados, onde acredito que foi chamada de Gênero. O gênero é igual à ação. E veja isso. Tivemos a mesma produção que tivemos aqui, Christian Bail, a ação da noite escura Vamos ver, aí está, Christian Bail. Agora, obviamente não temos, mas é Christian Bail, Heath Ledger, Clint Eastwood, Três ou quatro da crise da noite escura e três do filme na cama. E o feio, que legal é o que conseguimos fazer. Olha o quão grande esse era. Oh meu Deus, onde está? Sim, pode ficar um pouco confuso. Então vamos lá, olha. Tínhamos 1234 linhas de SQL por causa da visualização que criamos Foi feito em um. Sim. Lá vamos nós. Em seguida, precisamos definir a nacionalidade de Al Pacino. Vamos seguir em frente e fazer exatamente isso. Como fazemos isso? Precisamos fazer a atualização. Se você se lembra, precisamos atualizar os atores e definir a nacionalidade igual a ela, onde o primeiro nome é igual a todos e seguida, selecionar a estrela dos atores Al deveria estar no topo. Oh, não, ele não está aqui. Al Pacino agora, não é? Ele não é mais o americano Al Pacino. Onde está a segunda vez é apenas uma vez. Não, ele não é. Nós o vimos aparecer várias vezes. Só precisamos encontrar Al Pacino, que também é italiano. Lá vamos nós. Número quatro, pronto. Desafio número cinco, selecione os títulos de todos os filmes do gênero dramático em ordem alfabética, inclua apenas o título na saída Novamente, é aqui que você pode começar a pensar na visão que criamos porque já temos uma mesa ou uma mesa virtual em que temos o filme e o gênero no mesmo lugar. Se voltarmos e aqui , podemos fazer o seguinte. E eu acredito que foi um filme. Sim. Filme, não o título. Muito bom. Também é muito importante ter em mente que, na visualização, você pode ter uma alteração no nome dos cabeçalhos Selecione o filme da lista de sublinhados do gênero em que o gênero é igual ao drama. Foi drama? Sim, o sucesso do drama do gênero dramático. Digite Boo. Lá vamos nós. Filme 12 Angry Men. E observe o que temos aqui. Temos duplicatas. E por que você acha que temos duplicatas aqui? Por que temos quatro listas de Schindler, duas redenções de Shashank São muitos homens raivosos. O que está acontecendo? Bem, se eu selecionar uma estrela na lista de sublinhados, você verá que, por exemplo, ok, ação Como você pode ver, a noite escura aparece três vezes. 12 Angry Men aparece duas vezes. A Lista de Schindler aparece quatro vezes. Por quê? Porque para cada ator, temos que mostrar o gênero e o título do filme. Então, como podemos evitar isso? Evite isso com o desafio número seis. Desafio número sete. Primeiro de tudo, precisamos contar o número desses filmes. Se eu voltar aqui, eu volto para este, e aqui selecionamos os filmes, mas desta vez nós os contamos. Em vez de exibi-las, conte , bum, boom, boom, e temos dez. Mas, obviamente, isso não é verdade. Temos dez porque os contamos várias vezes no desafio número sete. Precisamos ter certeza de que os obtemos sem duplicatas. Espero que você tenha feito o possível para pesquisar isso na Internet. Então, a forma como fazemos isso está aqui. Precisamos adicionar o seguinte. Selecione um filme distinto da lista de gêneros. Lá vamos nós. Agora, se tentarmos contar, mas observe que essa também é uma parte muito importante. Como contamos esses distintos? Precisamos contar os distintos. Lá vamos nós. Agora temos quatro. E esse é o fim da nossa série de desafios. É o fim do uso de um prompt de comando para trabalhar com bancos de dados. Espero que tenham gostado. Espero que você tenha aprendido o máximo possível. Se você ainda não tiver certeza, volte e revise isso. Usar SQL é muito importante? Não consigo enfatizar isso o suficiente. Muito obrigado por assistir. No próximo vídeo, veremos bancos de dados SQL e Python Mal posso esperar para começar ou voltar ao nosso Intelligent, voltar ao Python e usar SQL Python e combinar nossas Muito obrigado por assistir. Espero que tenham gostado e nos vemos no próximo vídeo. Tchau tchau por enquanto. Ah, também me deixe um comentário. Quer dizer, se você não tem nada, se está satisfeito com o curso, vá lá, deixe-me um comentário. Entre em contato comigo. Diga-me como é ótimo. Vamos. 144. 10. Faça alterações: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E este estará, na verdade, confirmando nossas mudanças por meio de conexões, cursores e fazendo transações Vamos começar. Primeiro de tudo, vamos criar um novo arquivo Python que será o contato número dois Entre em contato com dois, entre aqui. Vou importar o escult three. Vou criar a conexão do banco de dados e dizer que é igual a escult three connect e vai se conectar ao contato, desculpe, culte aquele, o banco de dados que criamos Vou dizer que quatro linhas em B são executadas ou executadas porque ainda não quero criar um cursor. Eu vou te dizer a diferença entre o cursor e a conexão. Selecione uma estrela nos contatos. Vou imprimir o papel e vou dizer Db close. Se executarmos isso, deveríamos, não obteremos nada estranho Se você esperava imprimir todas as informações, nada acontece O problema não está no código. O problema é que não confirmamos nossas alterações e isso é diferente de gravar em um arquivo. Deixe-me explicar para você o que isso significa. De volta aos nossos contatos, criamos uma tabela, inserimos informações, mas não confirmamos realmente nossas alterações. Você se lembra de quando estávamos trabalhando com prompts e fizemos o esquema Você pode até mesmo testá-lo em seu próprio prompt de comando. Fizemos o esquema, na verdade, deixe-me tentar ver se consigo replicar Deixe-me tentar perguntar a você a luz três, teste B e eu farei o esquema Espero que apareça. Isso não aparece. Vou ter que abrir a pasta de filmes por enquanto. Eu simplesmente não tenho tempo. Eu recomendo que você experimente o esquema e verá que a última linha tem ponto e vírgula, a função Porque sempre que fazemos mudanças, temos que fazer essas mudanças. Se eu fizer isso, confirme aqui, agora confirmamos as mudanças. Agora, quando eu escrevo, clique e corro, se eu voltar para os contatos dois, escreva, clique e execute. Pronto, temos todas as informações, o quão legal é isso? Mas vamos continuar e dissecar isso um pouco. Então, em vez de apenas ter a fila aqui, vou ter o nome, o telefone e o e-mail. Vou fazer e imprimi-las, assim como fizemos antes. Na verdade, vamos fazer com que pareça mais apropriado, mais fácil Clique com o botão direito e execute. E bum, lá vamos nós. Temos todas as informações necessárias. E lembre-se de que não precisamos comprometer as coisas aqui. E eu as chamo de coisas de propósito. Por que comprometemos as coisas? Porque não fizemos nenhuma alteração. Não precisamos comprometer essas mudanças. Ok, então vamos continuar e agora tentar atualizar algumas coisas dentro de nossos contatos também. Aqui, criamos a conexão com os contatos. Vamos seguir em frente e fazer algumas coisas. Vou atualizar o SQL de sublinhado, e esse será nosso consultor de SQL aqui Vou atualizar os contatos. Defina o e-mail igual à atualização em update.com Onde, deixe-me me livrar disso Vou colocá-lo aqui onde os contatos do telefone são iguais. Vamos mudar Michael. Lá vamos nós. Agora vou criar o cursor de sublinhado de atualização e dizer que é igual ao cursor b. Então eu vou fazer o cursor de atualização, executar o SQL de atualização. Vou imprimir isso, vamos fazer como neste campo de substituição, vou dizer as atualizações, vou te dizer o que isso faz. Atualizado. E precisamos ter certeza fechar o cursor aqui. Depois de terminarmos a atualização. Feche o cursor. Na verdade, é melhor colocarmos tudo isso no final. Fechamos o cursor, fechamos o banco de dados. Se observarmos o que a contagem de linhas faz, vamos passar o mouse sobre isso, ok? Não fornece nada para você. Quer dizer, você pode consultar a documentação se quiser, mas basicamente ela informa quantas linhas foram atualizadas. Clique com o botão direito e execute. E devemos ver aqui mesmo que foi atualizado. E você pode ver que foi de Michael. Com isso esclarecido, se lançarmos um desafio para você fazer algumas mudanças, você deve ser capaz de fazer isso, trocar o telefone para que não corresponda ao que queremos mudar. E, a propósito, você já deve saber, porque não cometemos nada. Se fizermos o seguinte, por exemplo, veremos que o e-mail volta ao que era. Obviamente, temos um erro porque estamos tentando fechar um cursor que não criamos. Mas lá vamos nós. Agora, seu desafio será trocar o telefone para que ele não corresponda ao que queremos mudar. Remova toda a consulta Were e, claro, teste-a em todos os pontos. Antes de tudo, altere o número para que ele não corresponda. Em seguida, execute-o. Em seguida, tente remover a consulta inteira. Execute-o. Crie um novo arquivo Python chamado checkdbtpy e imprima a lista de todos os contatos E lembre-se de que eu disse a lista. E então, o que obtivemos como saída? Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Eu vou mudar isso. 6958-69 2047. Agora, os números não coincidem. Se escrevermos click e executarmos, você verá que não temos nenhuma linha atualizada e ainda temos contato em dois contatos de desenvolvimento de python Obviamente, nada é atualizado porque não confirmamos nossas alterações anteriores. A próxima coisa a fazer é remover toda a cláusula Were. Qual você acha que será o resultado? Você deve saber disso por todo o trabalho que fizemos. No prompt, no prompt de comando, tente, clique e execute. Estrondo. Lá vamos nós. Porque não especificamos onde queremos fazer essas atualizações. Ele fez as atualizações em todos os lugares. Agora, antes de prosseguirmos, desculpe-me, precisamos criar um novo arquivo Python e chamá-lo de check DB aqui Vamos importar o escult three, vamos criar a conexão E desta vez vamos chamá-lo conexão, não apenas banco de dados. E então contatos lite, desculpe-me, Contactes E então vamos fazer, eu disse, lista, certo? Vamos imprimi-las. Normalmente, se você os imprimiu usando o fetch, tudo bem Eu disse lista, mas acabei de mudar de ideia. Quatro em conexão são executados e vamos selecionar a estrela dos contatos e imprimir a linha, e eu esqueci os dois pontos E é claro que precisamos fechar a conexão. Se eu escrever, clique e corra, veja isso. Eu ainda tenho os e-mails antigos e você sabe o que? Eu só quero copiar isso. Gosto de ter uma boa estrutura aqui. Embora tenhamos feito a atualização nos contatos , ela não funcionou. Por quê? Porque não cometemos nossas mudanças. Como comprometemos as mudanças? Já comprometemos as mudanças. Olhe para trás aqui. Antes de fecharmos o cursor de atualização, precisamos confirmar a atualização. Opa. Mas não o temos porque primeiro precisamos fazer a confirmação da conexão. Deve funcionar se fizermos o commit diretamente no cursor, pronto. Podemos ver que não podemos. No cursor, precisamos fazer isso na conexão. Agora, se eu escrever, clicar e correr, aí está. Fizemos a atualização de tudo. Se verificarmos B, devemos começar , pronto, porque atualizamos ou confirmamos as alterações. As mudanças também aconteceram no cheque. Destruímos oficialmente nosso lindo banco de dados e fizemos com que todos recebessem a mesma atualização por e-mail. E pouco antes de prosseguirmos, quero mostrar mais uma coisa aqui nos contatos aqui. Quero mostrar a vocês que a conexão do cursor de atualização é a mesma que temos aqui no B. Vou imprimir aqui. Basta imprimir e depois vou imprimir se as conexões são do mesmo campo de substituição Responda que este é um campo de substituição e eu direi conexão do cursor de atualização é igual a B. E isso basicamente deve retornar verdadeiro se for e falso se não for. E sim, essas são a mesma conexão. Muito obrigado por assistir. Espero que você tenha gostado de algo sobre o qual não falamos que duas funções foram atualizadas porque removemos a palavra cláusula Isso é algo que eu esqueci de te dizer, mas já deveria estar óbvio Muito obrigado por assistir. No próximo vídeo, veremos o hacking. Mais ou menos, não é oficialmente um hacking, mas vou mostrar o quão vulnerável nosso banco de dados realmente é Ele pode ser facilmente explorado. Então, eu vou te ver no próximo vídeo. Obrigado por assistir você. 145. 11. Como hackear (tipo): boas-vindas de volta aos meus desenvolvedores favoritos de Python em um vídeo totalmente novo Neste, veremos como hackear. Não é bem como hackear, mas apenas uma introdução do que acontece nos bastidores quando alguém tenta se infiltrar em um Vamos começar. Em primeiro lugar, nos contextos dois, queremos criar uma nova atualização aqui Vou criar outra atualização. Onde devo fazer isso? Acho que vou fazer isso aqui mesmo, logo acima da atualização que tivemos. E eu vou criar o novo e-mail com sublinhado e será outra atualização em.com. Então, aqui, eu vou ter o número de telefone que será igual a 65 O que foi, na verdade, deixe-me comentar isso. Clique com o botão direito e execute. Que número eu tinha? Vamos copiar esse. Cole aqui e depois co, e então eu vou dizer que o contato de atualização configurou o e-mail para ser igual ao campo de substituição interno. Eu receberei o novo e-mail. Deveria ser isso. Ah, e também precisamos ter certeza de que só atualizamos onde o telefone A é igual ao campo de substituição e, em seguida, o telefone Isso deve ser bom o suficiente. Se eu escrever Clique e eu corro, devo ver se tenho outra atualização aqui no Michael onde o número de telefone é diferente. Tudo bem, agora que sabemos que isso está funcionando, a próxima coisa que queremos fazer é mudar esse telefone de apenas um telefone típico para uma entrada, digamos que o usuário queira inserir qual pessoa ou entrada de dados deseja alterar. Aqui vou mudar isso Forneça o número de telefone, dois pontos e aqui vou chamar isso de outra entrada de atualização E vou chamar isso de uma entrada, só para que sempre saibamos distinguir entre cada atualização. Agora, se eu escrever Clique e eu corro, você verá, por favor, me forneça o número. Vou apertar o controle V. Ok, isso não funcionou. Qual era o número de novo? Eu não tenho ideia. Vamos refazer isso bem rápido. E agora funciona. Está bem? Vamos duplicar isso Se comentarmos isso, também funcionará. Você sabe o que? Vamos verificar B. Clique com o botão direito e execute. Ok, copie o número. Isso não é mais necessário. Isso pode ser descomentado. Clique com o botão direito e passe pelo número. Pressione Enter e aí vai outro. Atualize a entrada em update Input.com Então, pudemos alterar esse e-mail. Tudo bem, isso parece ótimo, mas uma última coisa que eu quero fazer é atualizar ou executar o SQL de atualização usando não executar, usando o script de execução. E, basicamente, o que o script de execução faz é nos permitir executar várias linhas de comandos SQL. Então, por exemplo, aqui temos apenas uma única linha que é o SQL de atualização, que significa que esse é o único comando que estamos fornecendo. O que quero dizer aqui é, por exemplo, que alguém pode ter uma coluna Sem e depois continuar com outra atualização. Você sabe o que eu quero dizer? Esse é o propósito de usar o script de execução. Ele permite que você tenha várias execuções. Mas, por enquanto, não queremos só isso. Eu quero, ok, eu quero imprimir o SQL de atualização, na verdade aqui, talvez eu queira criar uma impressão apenas para que possamos ter uma linha de código vazia. Isso será muito útil mais tarde, quando realmente começarmos a hackear Mas, por enquanto, vou falar um pouco sobre a injeção de SQL e o que ela é. A injeção de SQL é um tipo de ataque em que um invasor pode injetar código malicioso na consulta SQL Então, eles injetam código malicioso. E agora você pode ter começado a formar a ideia do que vai acontecer em alguns minutos. Portanto, esse código malicioso pode ser usado para obter acesso não autorizado a um banco de dados, modificar os dados ou até mesmo excluir dados, que é a parte mais assustadora Os ataques de injeção de SQL podem ser realizados adicionando caracteres especiais ou consultas ao campo de entrada de um usuário a cada vez Você sabe, como quando você está tentando trabalhar com o banco de dados, geralmente o usuário tem a opção de pesquisar nesse banco enviar consultas SQL Não é óbvio, mas quando você clica em um botão para pesquisar, não sei, por nomes de usuário ou para encontrar seu amigo no Facebook Normalmente, essa é uma consulta SQL ou é convertida em uma consulta SQL. O que o atacante faz é injetar um código malicioso nesse mecanismo de pesquisa, que então produz algum resultado e lhes dá acesso. Então, por exemplo, você pode usar aspas simples, obter todas as funções no banco de dados Isso é algo muito assustador, e vou mostrar algumas dessas formas de acesso Mas antes de eu te mostrar, você tem que tentar hackear o banco de dados sozinho. Que tal isso? Em vez de apenas fornecer o número, quero que você forneça algum código malicioso. E o que eu quero que você faça é excluir a tabela de contatos. Interessante, não é? Vou te dar uma dica de como isso funcionaria Por exemplo, se tivermos o número, quero que você adicione um ponto e vírgula e digite os contatos da tabela suspensa Então eu quero que você entre na verificação B, e eu quero que você a execute. E eu quero que você me diga quais são os resultados que você obtém. Pause o vídeo agora mesmo e vá fazer o desafio. Bem-vindos de volta, meus colegas hackers. Como você conseguiu fazer isso aqui? O que vou fazer quando escrevo Click e executo é fornecer o número. E então eu vou colocar ponto e vírgula nos contatos da tabela e pressionar Enter Oh, o que acabou de acontecer? Em primeiro lugar, temos menos uma atualização. Você pode ver como era o comando ou a atualização real do SQL. Tinha um ponto e vírgula e depois deixou cair a mesa. E então, quando tentamos acessar os contatos, o que isso nos disse? Não existe uma tabela como contatos. Algo estranho acontecia se eu tentasse executar o B. Ah, eu também recebo um erro Então, o que aconteceu? Bem, o que aconteceu é que a tabela de contatos foi descartada, foi excluída pelo nosso hacker. E isso não é nada bom. Agora, digamos que o hacker não saiba quais são os nomes das tabelas desde o início, eles não têm ideia do que são. Deixe-me te mostrar. Primeiro de tudo, quero entrar em contatos e executar isso novamente para que possamos recriar a tabela Agora, se verificarmos o B, clique com o botão direito do mouse e executemos, você pode ver que recuperamos nossas informações e tabelas. Isso é devido à execução dos contatos. Eu quero que você veja uma coisa. Eu quero que você veja o seguinte. Vou adicionar uma impressão aqui e depois vou dizer quatro linhas na conexão. Executar. Em seguida, selecione a estrela do mestre de sublinhados do culto. Essa é uma proposta assustadora, porque aqui vou imprimir a linha. E se eu clicar com o botão direito do mouse e correr, veja o que recebo. O mestre Esculte fornece muitas informações sobre o que está acontecendo O hacker pode usar essas informações e usá-las para acessar todas as tabelas disponíveis E até eles podem ver como foram feitos. Assim, eles podem ver os campos reais. Eles podem ver os nomes, o telefone, o e-mail e o tipo de tudo isso, e podem usar essas informações a seu favor. Essa é uma perspectiva muito assustadora. Obviamente, ao longo dos anos, as pessoas encontraram maneiras de se defender contra essas injeções maliciosas Mas uma das mais simples é voltar aos contatos dois e em vez de executar o script, podemos simplesmente executar. Agora, o motivo pelo qual estávamos usando o script de execução é porque, como eu disse, ele permite que você use ou forneça vários comandos SQL ao mesmo tempo. O que fez com que pudéssemos derrubar a mesa ou que nosso hacker conseguisse derrubar a mesa Mas o que a execução faz ou o cursor executa, porque lembre-se de que esse é o cursor de atualização. O que ele permite que você faça é escapar e ignorar quaisquer outras instruções SQL Depois de chegar à primeira ou depois de passar pela terceira. Vamos tentar executar isso novamente. Se eu escrever Click e executar fornecer o número e tentar eliminar os contatos da tabela, pressione Enter, você só poderá executar uma instrução por vez. Ok, isso gerou um erro. Isso não é uma coisa muito boa de se fazer. Mas pelo menos o hacker não conseguiu destruir nossos contatos É claro que existem camadas muito, muito mais profundas nisso. Os hackers usam centenas e milhares de maneiras de obter acesso às informações. Mas eu só queria mostrar, no nível superficial como seria a injeção de SQL. Muito obrigado por assistir. Espero que tenham gostado do Leave me ribbon. Deixe-me avaliar em algum lugar. Eu adoraria ouvir sua opinião sobre o que você acha das aulas atuais. E nos vemos no próximo vídeo onde veremos os espaços reservados e a substituição de parâmetros Então, obrigado por assistir. Nos vemos em alguns segundos. 146. 12. Placeholders e substituição de parâmetros: Bem-vindo de volta, meus colegas desenvolvedores de hackers, programadores Python Neste vídeo, veremos os espaços reservados e a substituição de parâmetros O que nos fornecerá uma maneira melhor de alocar e fornecer entradas para determinados comandos L do banco e também nos ajudará a evitar Primeiro de tudo, vou voltar aqui e atualizar esse código um pouco. Vou duplicar o SQL de atualização e comentar o primeiro em vez de usar esse e-mail diretamente, ou o que quero dizer com isso é que, em vez de usar os campos de substituição, como sempre fizemos, removerei o F daqui E então vou substituir isso por um ponto de interrogação, e-mail é igual a ponto de interrogação e telefone é igual e telefone Em seguida, farei o formato goal fashion e aqui forneceremos o novo e-mail e telefone. Então, aqui, quando eu desço até o Execute update SQL, também vou comentar e fornecer o novo e-mail e o telefone. Os interrogação são chamados espaços reservados e os parâmetros extras que adicionamos à execução são chamados de higienização da entrada, que verifica se alguma consulta extra foi adicionada Agora, obviamente, esse é um saneamento de nível muito baixo e isso não evitará, novamente, hackers muito experientes e de alto nível Mas, como eu disse, isso é um começo para você entender como esses níveis funcionam. A partir daqui, vou primeiro explicar para você, na verdade, vamos testá-lo. Se eu escrever Click e correr, forneça um número de telefone. Ainda o temos? Não, nós não temos. Qual era o número? Na verdade, deixe-me voltar e tentar fazer isso. Vamos tentar obter esse número. Se eu escrever, clique e corro, forneço isso e tento os contatos da tabela suspensa, boom. Como você pode ver, nada caiu. Nada foi atualizado. E estamos prontos para ir. Nada aconteceu aqui e imprimimos a atualização, o que é ótimo. Nós não derrubamos a mesa. Pelo menos isso foi bom. Vamos falar sobre espaços reservados e o que eles são. Os espaços reservados são caracteres especiais usados para representar parâmetros em instruções SQL Assim como vimos agora, espaços reservados são úteis na prevenção de ataques de injeção de SQL Eles são semelhantes ao uso campos de substituição e declarações impressas, ou qualquer sequência de caracteres A propósito, algo que eu fiz de errado. Você nem precisa do formato aqui porque, embora obviamente não estejamos mais usando os campos de substituição, peço desculpas por isso substituição de parâmetros é feita usando o método de execução do cursor Eles são indicados pela pergunta. Obviamente, do ponto de vista do SQL, eles são muito úteis. Você pode usá-los na execução. Por exemplo, agora, se eu escrever clique e correr , fornecer o número e pressionar Enter, veremos que temos outra atualização. Se escrevermos, clicarmos e corrermos, e tentarmos fornecer o número com os contatos da tabela suspensa, boom. Nada Oh, ele é atualizado. Lá vamos nós. Como você pode ver, oh, porque já cometemos as mudanças. É por isso que temos isso. Vamos tentar adicionar alguns Xs aqui. Clique com o botão direito e execute. E vamos resolver isso novamente com os contatos da tabela suspensa. Boom, lá vamos nós. Ele não foi atualizado, embora tenhamos fornecido o número corretamente. Mas isso é porque tentamos derrubar a mesa. Vamos tentar isso de novo apenas com o número e devemos ter acesso. Lá vamos nós. Muito bom. Então, deixe-me devolvê-lo e isso é o suficiente. Tudo bem, agora que entendemos o que são espaços reservados, vamos tentar usá-los quando estivermos trabalhando na verificação B aqui E se quiséssemos obter as informações apenas para um nome específico? Em vez de obter todas as informações dos contatos, vamos apenas obter o nome de uma determinada pessoa. Então, vou receber a entrada aqui e vou dizer, por favor, forneça o nome. Para pesquisar. Eu quero que você pause o vídeo e eu quero que você tente fazer isso sozinho O tempo acabou aqui, onde o nome é igual ao ponto de interrogação e depois ao nome. Na verdade, não vamos fazer isso aqui. Em vez disso, vamos fazer isso aqui embaixo. Deixe-me pegar essa parte e deixe-me colocá-la aqui onde os contatos perguntam. Vamos primeiro trabalhar na rosa e depois devolvê-la aos contatos em que o nome é igual a ponto de interrogação e o comentário esteja aqui comentário esteja Isso deveria ser isso. Sim. Vamos clicar com o botão direito do mouse e ver o nome que estamos procurando é Michael. Pressione Enter. Tudo bem, o que temos aqui? Michael? Michael, está tudo bem, mas ainda há um problema. O primeiro loop funcionou. E, na verdade, talvez devêssemos nos livrar do primeiro loop só para sabermos exatamente o que está acontecendo aqui. Se eu tentar Michael, boom, o que está acontecendo aqui? Cult three, erro de programação, número incorreto de encadernação fornecida. A declaração atual usa um e são fornecidos sete. Está nos dizendo que fornecemos sete itens aqui? O que você acha que é o problema se você não tem certeza? Vamos tentar outro nome. Vamos pressionar Enter. Está nos dizendo que fornecemos cinco. O que está acontecendo? O que está acontecendo é que os parâmetros que estamos enviando devem ser casais. Quando fizemos isso aqui, você pode ver que fornecemos o novo e-mail e o telefone sob a forma de um casal. Enviamos alguns. O que está acontecendo aqui é que quando estamos enviando o nome, o que está fazendo é dissecar o Estamos recebendo K, L, E e estamos recebendo cinco elementos fornecidos. É aí que o número cinco entra em jogo. E se corrermos e fornecermos isso a Michael, Michael tem 123.456,7. É por isso que está nos dizendo que estamos Qual é a solução aqui? Adicionamos parênteses ao redor do nome com uma vírgula, que o transforma Agora, se eu escrever, clique e eu corro, e eu digito na esperança de que Michael aperte Enter. Lá vamos nós. Eu só recebo as informações de Michael. E se eu tentar clicar com o botão direito do mouse e correr e tentar obter as informações de Kalen Boom, lá vamos nós. Eu também só recebo as informações de Kalen Claro, isso poderia ser aplicado aqui mesmo neste formato. Se eu remover isso e disser aqui um espaço onde o nome é igual a este e, em aqui um espaço onde o nome é igual seguida, fornecido no nome, clique com o botão direito do mouse em executar aqui, apenas Michael e eu obteremos as informações apenas para Michael. Muito obrigado por assistir. Espero que tenham gostado. Mas antes de partirmos, há um pequeno problema aqui É por isso que você sempre precisa testar seu código. Se eu escrevo, clico, corro e digito Michael, não recebo nada. Hmm, isso não é nada bom. Então, o que devemos fazer aqui? Devemos te dar um desafio. Você achou que eu esqueceria de te dar um desafio? Não. O que devemos fazer? Veja como você pode enviar parâmetros para suas consultas SQL sem se preocupar com o caso Esta é uma lição de casa de pesquisa para você fazer, testá-la em nosso programa E eu vou te dar uma dica, mas eu recomendo que você vá e tente fazer isso sozinho Use o semelhante em vez do igual. Passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta aqui, em vez de usar onde o nome é igual ao detentor da paz, usaremos o similar e usaremos o similar. Agora, se eu escrever, clicar e correr, digitar Kalen sem maiúscula no K e pressionar Enter, ainda obtenho as informações corretas Muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, veremos a introdução às exceções porque precisamos lidar com exceções caso surjam alguns erros Isso não é útil apenas para a linguagem SQL, é especialmente útil para a linguagem SQL, mas é útil para qualquer campo do Python que você queira aprender Te vejo em alguns segundos. 147. 13. Introdução às exceções: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste, veremos uma introdução às exceções. Acho que este vídeo será excepcionalmente longo porque temos muitas informações para cobrir e essa poderia ter sido uma seção separada por si só, mas decidi mantê-lo nesta seção usando bancos de dados em Python É muito importante que aprendamos isso não apenas para banco de dados e SQL, mas também para qualquer outro lugar em que você possa encontrar isso ao longo de sua carreira profissional. Para isso, precisamos criar um novo projeto aqui. E esse projeto, é claro, será Python. E certifique-se de salvá-lo no local apropriado. E vou chamar isso de tratamento de exceções. E termine. Sim, essa janela. Primeiro de tudo, vou criar um novo arquivo Python e vou chamá-lo Apenas alguns exemplos em que veremos erros muito superficiais que podem ocorrer. E o que acontece? Em primeiro lugar, vamos dizer que x é igual a oito é igual Agora, obviamente, isso é algo que, por fundo, não gosta. Como você pode ver, mesmo antes de rodarmos, já temos esse erro aqui. Teste se você não pode atribuir esse literal. Se eu tentar escrever, clicar e executar, aí está. erro de sintaxe não pode ser atribuído a um literal, o que significa que você não pode atribuir cinco ao número oito. Você não pode fazer isso. Isso pode ser salvo por meio uma simples correção em que o aluno, o usuário ou qualquer outra coisa cometeu um erro e pretendia escrever oito menos cinco Agora, vamos lá. Não há mais erros. Obviamente, esse é um erro muito simples ou superficial que pode acontecer. Vamos ver algo mais sério. Por exemplo, se eu fizer o seguinte. Se eu disser que quero que y seja igual a x dividido por zero. Agora, esse é um tipo diferente de erro em que não temos nenhuma indicação com uma linha vermelha. Antes de vermos que, mesmo antes de executar o programa, havia algo errado. Agora, não há nada errado. Mas você deve estar ciente de que dividir por zero é um grande não, não, temos um erro específico para esse erro de divisão zero, divisão por zero Isso não é possível. Como você pode ver, o problema aqui é que às vezes podemos receber uma indicação, às vezes podemos não obter uma indicação. E temos muitos tipos diferentes de erros. Então, vou mostrar o seguinte site e, claro, vou fornecê-lo em algum lugar. Se eu não fizer isso, entre em contato comigo e me avise. Portanto, essa é a exceção incorporada nas documentações do Python Você pode acessar todo o site, entender adequadamente todas as exceções. Então, por exemplo, exceto os erros de buffer, como devo dizer isso com mais profundidade Coisas como o erro de buffer e o erro de bloqueio. Mas ainda assim você pode encontrar qualquer erro que desejar aqui. Se eu controlar e digitar na divisão zero, aí está. Então, levantado quando o segundo argumento de uma operação de divisão ou módulo é zero, se eu tentar pesquisar um valor Por exemplo, erro de valor. Há muitas iterações disso. Pronto, gerado quando operação ou função recebe um argumento que tem o tipo certo, mas um valor inadequado. Lá vamos nós. Como você pode ver, existem muitos tipos diferentes de erros. Você pode passar por todos eles. Além disso, recomendo que você confira este site, então essa é uma forma mais compacta porque, às vezes, como você pode ver, a documentação pode ser muito complicada. Tipo, o que eu preciso ver aqui? E, a propósito, a tabela também é muito importante para entender. Você não precisa ler e se lembrar de cada uma delas. Mas agora, pelo menos, você pode voltar a este site e ver alguns exemplos. Agora, aqui, as exceções integradas do Python também são Esta é a W Three Schools. É um dos meus favoritos de todos os tempos. Eu o uso desde que acho que tinha 11 anos agora. Sou muito mais velho do que isso. Eu uso isso há anos, mais de 15 anos. Site incrível, altamente recomendado. Eles não estão me patrocinando, embora eu aceitasse o patrocínio deles e na verdade, eu faria isso de graça porque porque Novamente, analise as exceções, veja o que temos. Por exemplo, erro de índice gerado quando o índice de uma sequência não existe. Eles criaram e compilaram uma lista muito boa aqui e eu recomendo que você a leia. Eu terei o link em algum lugar ao redor. Mas vamos tentar criar algo chamado erro de recursão O que significa que, quando uma função se chama demais aqui, farei o seguinte. Vou definir uma nova função, que será, na verdade, eu acho. Vamos comentar isso. Vamos definir a função na parte superior. E teremos apenas isso, teremos a contagem sublinhada para baixo e contaremos até n. Então aqui eu vou verificar se n é igual a zero, então vou imprimir o último Depois vou imprimir n. Depois vou fazer a contagem regressiva. Estou chamando a mesma função, mas desta vez n menos um Essa é uma função recursiva, o que significa que ela se chama, o que isso acontece, o que isso faz? Quero dizer, se eu imprimir a contagem regressiva que forneci. Na verdade, não precisamos imprimir. Peço desculpas porque já temos uma impressão digital aqui dentro Eu vou fazer dez. Se eu escrever, clique e corra, veja isso, temos 109-876-8321 Nós nos divertimos muito. Essa função pode ter seus problemas porque se fizermos 100 e escrevermos, clicarmos e executarmos, nos divertimos Se fizermos 1.000 boom, você pode ver que conseguimos chegar a cinco e, de repente, tivemos um problema aqui. E esse problema foi que repetimos mais 993 vezes. O Python atingiu sua profundidade máxima de recursão. Foi excedido ao chamar ou chamar um objeto Python. Esse é outro erro que pode surgir. Então, como podemos detectar esses erros e garantir que eles não quebrem nosso código? Como você viu aqui, podemos fazer isso usando exceções e tentar obter exceções Exceções são objetos criados quando ocorre um erro ou condição excepcional Assim como vimos agora, o que você está vendo são objetos sendo criados. Como eu disse, tudo em Python é um objeto. Quase algumas exceções incorporadas em Python são erro de valor , erro de tipo, arquivo não encontrado , erro e erro de divisão zero Esses são apenas alguns exemplos. Aceitar é uma declaração que permite lidar com esses erros e eu vou mostrar como isso funciona. O bloco tri contém o código que você deseja tentar executar O bloco de aceitação contém o código que você executa se ocorrer um erro no bloco tri Portanto, o bloco final contém o código que você executa. O bloco final contém o código que você executará independentemente de ocorrer ou não um erro no seu bloco triplo E veremos o bloco final mais tarde, mas, por enquanto, vamos trabalhar nos três, exceto nos blocos No próximo vídeo, veremos o bloco final. Vamos ver como podemos usar esse bloco tri except para garantir que não recebamos o erro de recursão aqui, onde chamamos nossa função Então esse é o código que estamos tentando executar. O que eu vou fazer, e você provavelmente já viu isso antes, vamos testar o código e, em seguida, vamos fazer uma exceção caso tenhamos um erro recorrente ou recursivo Vamos imprimir que as contagens são muitas. O que devemos chamar de contagens são demais. Então, aqui, imprimiremos o programa encerrado. Se eu escrever, clique e corra, veja isso. Em vez de receber um erro e fazer com que nosso código pare ou quebre. Em vez disso, temos que as contagens são muitas e que o programa foi encerrado E eu adicionei o sprint apenas para mostrar que realmente conseguimos continuar seguindo as linhas do nosso código E isso é ótimo, especialmente do lado do usuário, geralmente é melhor ser explícito ao apresentar a possível isenção que ocorreria Mas às vezes você pode não saber qual poderia ser o erro. Então, agora, claro, sabemos que isso é um erro de recursão porque o testamos. E sabemos que cancelamos a contagem regressiva muitas vezes, mas e se? Tivemos um pequeno erro potencial lá dentro. E, obviamente, mais uma vez, eu quero que você tome isso com um grão de sal. E aqui, é claro, isso não aconteceria. Mas e se isso acontecesse? E se estivéssemos tentando dividir isso por zero? Agora, se eu escrever Click e executar, você verá que nosso código quebra novamente. E por que isso? É porque estávamos simplesmente tentando detectar o erro de recursão e não o erro de divisão zero Para corrigir isso, podemos fazer o seguinte. Posso dizer, exceto erro de divisão zero, depois imprimir. Você não pode dividir por zero. E eu escrevo dividir incorretamente, dividir sim. Agora, se eu clicar com o botão direito do mouse em Executar. Lá vamos nós. Você não pode dividir por zero. Isso é ótimo. Temos o segundo erro. Mas há uma maneira mais eficiente de fazer isso. Em vez de ter duas exceções diferentes, podemos criar algo assim, erro de divisão zero Feche isso e podemos simplesmente comentar isso. Então, aqui, as contagens são demais ou você divide por zero, ok? Portanto, isso permite, é claro, isso não seja tão específico quanto tínhamos antes, mas isso pode ajudá-lo a gerar uma exceção caso você tenha apenas um coletor de erros geral E você não quer usar várias linhas para detectar erros muito específicos, a menos que tenha, por exemplo, tipos diferentes de códigos que deseja executar. Não é apenas uma impressão, caso você tenha uma divisão zero ou caso tenha um erro de recursão Mas em situações como essas em que você só tem uma impressão, você está apenas imprimindo algo na tela, isso não é tão importante. Por exemplo, quando você está inserindo seu e-mail e digita seu nome de usuário e depois digita sua senha e não está certo, uma delas está incorreta. Quando você pressiona enter, eles não especificam, por exemplo, que sua senha está errada ou que seu nome de usuário está errado. Eles informam que seu nome de usuário ou sua senha estão escritos incorretamente. Nesse caso, você tem algo parecido com essa situação. Ok, espero que esteja entendido. Agora, vamos tentar criar um programa que teria muitos erros em potencial para nós e criar as exceções necessárias para isso Vou entrar no arquivo novo e criar um novo arquivo Python que vamos chamar de operações bull e fechar os exemplos E eu deveria ter adicionado um sublinhado entre as operações de captura, mas tudo bem por enquanto Teremos o número um igual ao fluxo fluído inserindo o Duplique esse fluxo número dois, insira o segundo número, então eu vou ter o resultado igual ao número um dividido pelo número Vou imprimir que o resultado é um resultado de dois pontos. Ok, vamos lá. Antes mesmo de lançarmos, você provavelmente sabe que pode haver muitos problemas em potencial aqui. Como, por exemplo, ter o número dois sendo zero. Isso acabou de sair da minha cabeça. Agora, o que eu quero fazer é lançar um desafio para você pegar todos eles como Pokémon. Pegue todos eles. Antes de tudo, detecte todos os possíveis erros que possam ocorrer. Eu quero que você reserve um tempo para pensar sobre eles, porque devem haver pelo menos dois. A parte importante é saber onde o bloco Troy começa e onde o bloco de exceção deve ser adicionado Não quero que você se aprofunde demais e pense em todas as possibilidades. Pense em dois, pelo menos. A principal coisa importante que eu quero que você faça aqui é saber onde adicionar o bloco. E vou te dar uma dica: você deve ter erro de valor e divisão de erro zero Esses são os dois ou os dois primeiros. Eu quero que você pense em um terceiro. Ouça o vídeo agora mesmo. Desculpe, esqueci de te dar alguns segundos antes de mostrar a dica Eu só pensei que essas são coisas muito novas. Talvez você ainda esteja sobrecarregado. Ouça o vídeo agora mesmo e vá fazer o desafio. Ok, como você conseguiu fazer isso primeiro? Ou precisamos criar o bloco tri para o erro de valor. Vou marcar isso. Vou adicionar o bloco triplo aqui no topo porque é aqui que os erros começariam aqui Ou depois de tentarmos imprimir os resultados, vou criar a aceitação. Teremos um erro de valor. Eu vou colocar aqui. Você precisa inserir alguns, você precisa adicionar um número real aqui Se você leu sobre erro de valor, saiba que se, por exemplo, tentarmos pressionar Enter no primeiro número, obteremos um erro informando que você precisa adicionar um número real aqui. Você não pode simplesmente ter um. Se não tivéssemos, eu deveria ter tentado isso antes. Na verdade, vamos copiar o código e adicioná-lo aqui. Vou clicar com o botão direito do mouse e vou correr. E eu vou clicar em Enter. E lá vamos nós. Você pode ver que recebemos um erro de valor e nossas quebras de código. Essa é a primeira coisa que precisamos observar. A segunda coisa, ou a segunda exceção deve ser a divisão zero, porque já vimos isso antes. Vou imprimir quem diabos ainda divide por zero, voltar para a escola Clique com o botão direito, execute o primeiro número 12, segundo número zero, diabos ainda se divide por zero, volte para a escola Agora, com toda a justiça, devemos pelo menos indicar que vamos dividir o número um por dois para que a pessoa saiba que não pode inserir Mas isso não vem ao caso. Nós temos a divisão zero. A última exceção em que podemos pensar é um estouro em que o número é apenas dois. Vou adicionar uma linha extra aqui, uma linha extra. Vou dizer que o resultado é igual ao resultado multiplicado por não multiplicado à potência de 1.000. Não sei se isso é suficiente Vamos tentar 10.000 cliques com o botão direito, executar 12 para explodir. Lá vamos nós. Um resultado de estouro 34 é muito grande. Como lidamos com isso? Bem, aqui dizemos, exceto o erro de estouro, e diremos que o número é muito grande para ser representado Tudo bem, clique em executar 125, desculpe, o número é muito grande para representar 2.4. Onde obtivemos isso? Oh, é o resultado normal que temos aqui. E então o resultado da multiplicação foi 2,4 Agora, você pode estar pensando, espere, Michael, você trapaceou. Você traiu. Eu vi você, você trapaceou porque adicionou uma linha extra de código Como eu poderia saber que isso é um erro de estouro? Bem, mesmo se eu removesse isso, e eu sei que isso vai ser difícil. Mas, por exemplo, se eu digitar, digamos apenas um, eu digito 0.0 0000 0000 0000 0000 0000 Alguns 0,1, ok? Isso ainda funciona. Quero dizer, se você digitar zeros suficientes em algum momento, o número será muito grande. Deixe-me tentar realmente fazer isso. Deixe-me correr. Não sei, mesmo que eu fique bem, isso ainda funciona. Acho que precisamos de muito mais. E, neste momento, quero agradecer muito a vocês por assistirem. Espero que gostem e nos vemos no próximo vídeo. Mas se você estiver interessado nesse experimento, vamos testá-lo. Ah, hein. Quem? Oh, oh, oh, tudo bem. Então, ele o considerou zero antes de termos um transbordamento. Ok. Você pode dizer, Michael, eu trapaceei. Eu trapaceei. Então, o que você pode fazer sobre isso? Muito obrigado por assistir. Espero que tenham gostado, desculpe pelo vídeo muito, muito longo, mas acredito que não foi um vídeo muito difícil de pensar. É por isso que eu o mantive tão grande. Não havia coisas muito cansativas em que pensar. Então, no próximo vídeo, veremos o bloco final e como ele funciona e como ele pode ser muito útil. Muito obrigado por assistir. Te vejo em alguns segundos. Tchau, tchau por enquanto. 148. 14. Finalmente bloqueie exceções: Bem-vindos de volta, meus colegas exceptistas do Python. Vamos continuar trabalhando com exceções e veremos finalmente os blocos e algumas coisas extras aqui Em primeiro lugar, digamos que queremos ter uma exceção geral, não temos certeza do que é, queremos apenas detectar algum tipo de exceção. Podemos fazer o seguinte. Podemos então, como aqui, imprimir um erro inesperado, um erro esperado, dois pontos. Sim, lá vamos nós. O aviso desapareceu. Se eu clicar com o botão direito do mouse e correr e não fornecer um número, você precisará adicionar um número real aqui. Como você pode ver, examinamos essa lista e, na verdade, a pegamos neste momento. Deixe-me, por exemplo, mostrar se eu removo esse erro de estouro e o volto ao clicar com o botão direito do mouse, e digamos que 125 resultam em erro inesperado E eu entendo que o resultado é muito grande. Como você pode ver, caso queiramos entender coisas gerais, não temos certeza do que serão Apenas dizemos um erro inesperado e fazemos o seguinte. Agora vamos dar uma olhada também no último bloco. Finalmente, se eu digitar e imprimir, esse bloco final será executado menos do que independentemente. Se eu estiver aqui, deixe-me remover isso, clique com o botão direito e execute. E se eu digitar 125, apertar Enter, pronto. Finalmente, esse bloco é executado de qualquer maneira, não recebemos nenhum erro Se eu retomar isso ao clicar com o botão direito do mouse em 125 novamente, obteremos um erro. Nós lidamos com isso, mas o bloco final é executado independentemente, o bloco final será o bloco final será executado independentemente de haver uma exceção gerada ou É usado para ser usado para opções de limpeza, como fechar um arquivo ou fechar um banco de dados. E usaremos muito o bloco final. E você verá muitos casos de uso para isso mais tarde. Agora também temos o L aqui. Se o testarmos, você verá que, por algum motivo, não podemos ter o final, ele precisa estar abaixo das exceções E antes de finalmente acrescentar aqui um L L. Poderíamos dizer, por exemplo, que a segunda divisão foi bem-sucedida. Vamos comentar isso porque sempre causa um erro. Se eu escrevo o clique e executo 125, boom, divisão 2.4 foi bem-sucedida, normalmente usada, ou a cláusula else é chamada quando não há erros detectados Isso pode ser útil em situações em que você deseja garantir que, se o código estiver correto, você forneça algo. O que significa que algum código, caso tudo corra bem. Uma última coisa antes de passarmos a levantar nossas próprias exceções é que a ordem das exceções também é muito importante Capturar exceções mais específicas antes de capturar a mais geral é A razão para isso é que, se uma exceção específica for detectada antes de uma mais geral, o programa poderá tomar as medidas apropriadas para resolver as exceções e evitar consequências mais graves Por exemplo, se digamos que mova isso, mantenha pressionada a tecla de controle. Ou mantenha pressionada a tecla shift, shift alt, shift alt. E eu o movo aqui para o topo. Você verá que eu primeiro tenho um superaglomerado de exceção, exceção já foi cortada, viu isso Então, clique com o botão direito do mouse e execute, e se eu apenas pressionasse Enter, um erro inesperado não conseguiu converter a string em float, embora o problema aqui não fosse que não conseguíssemos converter uma string em float O problema aqui é que simplesmente não fornecemos um número. Então, temos que ser mais específicos. Quanto mais específicos formos no início, melhores serão os resultados. Então, muito obrigado por assistir. Espero que tenham gostado. E no próximo vídeo, apresentaremos nossas próprias exceções. Veremos como podemos criar ou usar essas exceções de uma forma situacional mais real, qual criaremos uma conta bancária, o que será muito divertido Obrigado por assistir. Nos vemos no próximo vídeo. E não, não há desafios neste. 149. 15. Como criar exceções: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste, vamos levantar exceções. A primeira coisa que vamos fazer é criar um novo arquivo Python que chamaremos de conta bancária Você acha que eu inventaria um nome mais curto e eloquente Mas como eu sou apenas um humilde instrutor de Python , não apareceu um nome que apareceu no passado , como você pode ver, Estamos criando uma nova turma. Vamos definir o Init, que absorverá o equilíbrio interno do sublinhado Vamos definir o equilíbrio automático igual, igual ao saldo inicial. Em seguida, definiremos o depósito interno. Obviamente, teremos o eu, o que já está escrito, e o valor que gostaríamos de depositar. Então, vamos dizer que o equilíbrio automático mais é igual ao valor. Em seguida, vamos definir a retirada com empate. Então, também teremos uma quantia aqui. Obviamente, esse valor será retirado do saldo menos o valor igual Também teremos o programa Underscore balance. E aqui vamos retornar o equilíbrio automático de retorno. Ok, vamos lá. Essa é a nossa aula. E, na verdade, vou remover esse espaço extra aqui. E agora podemos trabalhar no corpo do nosso código. Então, vou criar a conta de sublinhado bancário 1. E vai ser igual à conta bancária e eu vou depositar 200 lá dentro. Então eu vou pegar a conta bancária um, depositar 120, depois vou sacar, uh, 20 e depois vou pegar minha conta bancária e mostrar o saldo só para que possamos ver. Então, devemos ter 200 mais 120. 320 -20 Deveríamos ter apenas 300. Então, quando corremos bem, não recebemos nada. Oh, eu peço desculpas. Precisamos realmente imprimi-lo. Lá vamos nós. E agora isso deve sair como 300. Excelente. Então, temos tudo funcionando lá. Mas há muitos problemas com esse código. Por exemplo, podemos criar uma conta bancária com um saldo inicial negativo. Por exemplo, se eu fizer a conta bancária dois igual à conta bancária, posso começar com um saldo negativo. Então, na verdade, abro uma conta bancária e já devo dinheiro a eles Então, se eu imprimir a conta bancária dois, saldo holandês, sim, não vai ficar muito bom. Porque eu tenho -300 e vamos fazer com que seja menos 22. Lá vamos nós. Então, deixe-me saber com o que estamos trabalhando. Este é um saldo inicial negativo, não muito bom. O outro problema é que eu posso realmente depositar e sacar valores negativos, o que é ainda pior aqui. Por exemplo, vou criar uma conta bancária, conta bancária três. E eu vou dizer que é igual à conta bancária e vou depositar 200. E então vou dizer depósito em conta bancária -30 E vou imprimir a conta bancária três, mostrar o saldo e, em seguida, escrever click and run e ver que eu realmente depositei quantias negativas que significa que retirei dinheiro, mas não ligo para o saque, o que é E também posso sacar dinheiro negativo. Então, eu posso fazer o seguinte: na conta bancária três , eu posso realmente sacar -20 , o que significa que adicionarei 20 Então, estou usando o saque para adicionar dinheiro e estou usando o depósito para sacar dinheiro. Tudo isso é extremamente, extremamente ruim e também podemos retirar mais do que realmente temos. Então, todos esses são problemas que temos que resolver de alguma forma. conta bancária quatro é igual à conta bancária e vou depositar aqui cerca de E então eu vou fazer a conta bancária quatro, sacar. E eu vou retirar 300. E então imprima a conta bancária quatro, mostre o saldo. Então, agora eu tenho -200 Todos esses são problemas muito grandes dos quais precisamos encontrar uma maneira de eliminar ou, pelo menos, encerrar o programa antes que eles realmente E, claro, eu sei o que você está dizendo, pois obviamente criamos contas bancárias mais eloquentes e melhores antes que lidassem com todas essas situações Mas, por enquanto, eu só quero mostrar como podemos criar exceções para neutralizar Então, o que está gerando exceções? Então, vimos que, às vezes, se usamos métodos não ortodoxos, como métodos não ortodoxos e não ortodoxos, isso significa que, quando você tenta dividir por zero, por exemplo, surge um erro A mesma coisa deveria acontecer aqui. Por exemplo, antes de definirmos o saldo, quero verificar se o saldo inicial é menor que zero, vamos aumentar o erro de valor. E eu vou dizer aqui que o saldo inicial não pode ser negativo. Agora, se eu tentei executar isso antes de fazermos isso, antes de realmente tentarmos fazer isso, precisamos, é claro, adicionar e aceitar blocos. Será um desafio para você obter nossa nova conta bancária adicionar o bloco de aceitação ao nosso código. Mas essa não é a única coisa que você precisa fazer, pois precisa adicionar outras exceções que precisam ser levantadas em casos como o valor do depósito é negativo, o valor da retirada é positivo e o valor da retirada maior do que o valor disponível E, finalmente, tudo isso deve ser feito dentro dos métodos de nossa classe. E, claro, junto com essas exceções levantadas, você deve adicionar o bloco try except para cada uma delas Então, passe o vídeo agora mesmo e vá fazer o desafio A. Ok, bem-vindo de volta. Como você lida com isso? Primeiro de tudo, precisamos adicionar exceto o bloco quatro, ao adicionar o saldo inicial. E, claro, devemos adicionar isso a cada uma, mas como eu criei quatro contas bancárias diferentes, cada uma com seu próprio problema, é por isso que eu só vou adicionar isso a esta. E o que estamos tentando é adicionar um valor negativo aqui. Terei um erro de aceitação de valor porque sabemos que é um erro de valor. E vou imprimir o erro do valor, desculpe quanto imprimir. Lá vamos nós. Qual é o problema aqui? A conta bancária pode ser indefinida. Indefinido, estamos, estamos tentando, essa linha pode não ser executada, isso pode não estar definido O que eu vou fazer é mover isso aqui. Dentro do quarteirão. Vamos tentar criar a conta bancária e mostrar o saldo quando eu escrevo, clico e pronto, aí está. saldo inicial não pode ser negativo, a conta bancária dois não foi executada e não funcionou, mas não quebramos nosso programa. Isso é bom. Em seguida, precisamos trabalhar no depósito. Deixe-me mover isso para o lado porque temos muito espaço horizontal aqui. E o depósito, em primeiro lugar, vamos querer verificar, se o valor for menor que zero, então vou gerar outro erro de valor que nos dirá que valor do depósito não pode ser negativo. Meu Deus, por que não consigo escrever que o valor do depósito não pode ser negativo? Onde adicionamos o bloco triplo? Aqui mesmo. Precisamos testar este depósito e levantar uma exceção, ou apenas quero dizer, pegar a exceção aqui e imprimir. Quando escrevo o clique e corro, o saldo inicial não pode ser negativo e o valor do depósito não pode ser negativo. Temos dois erros até agora, isso é muito bom. Infelizmente, há algumas coisas que também precisamos fazer, que é a retirada daqui. Sobre a retirada, na verdade, há duas coisas que precisamos fazer. É importante garantir que o valor seja menor que zero e também garantir que o valor seja maior que o equilíbrio automático. E o que quero dizer com isso é que, em primeiro lugar, quero verificar se o valor é menor que zero e, em seguida, vou gerar um erro de valor. Quero dizer que o valor do saque não pode ser negativo e vou verificar se o valor é maior do que o saldo automático. Também vou gerar um erro de valor dizendo que, com fundos suficientes, insuficientes. É assim que você escreve insuficiente? Eu não tenho ideia. Insuficiente. OK. Eu esqueci o. Tudo bem, então vamos lá. Agora, onde devo adicionar isso? Bem, eu deveria tentar este. Dentro da aceitação, deixe-me adicionar um espaço, adicionar uma guia, remover isso, aceitar o erro de valor como impressão. Agora, quando escrevo, clico e corro, boom, o valor da retirada não pode ser negativo. Também recebi um erro devido à insuficiência de fundos. Vamos tentar pegá-los também. Onde fizemos isso? Aqui mesmo. Aqui mesmo. Vamos tentar, exceto erro de valor, como imprimir, clicar com o botão direito , executar e pronto. Não temos fundos suficientes. Senhoras e senhores, isso é tudo. Muito obrigado por assistir. Espero que você goste. Espero que você tenha entendido como criar exceções pode ser muito útil No próximo vídeo, vamos realmente criar nossas próprias exceções. É que eu vou te ver no próximo vídeo. Tchau tchau por enquanto. 150. 16. Crie suas próprias exceções: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste, em primeiro lugar, faremos uma pequena limpeza, onde mostrarei como tornar esse código mais eficiente e com melhor aparência. E então vamos criar nossas próprias exceções, ou seja, nossos próprios erros Quão legal é isso? Então, vamos começar. Em primeiro lugar, como você pode ver, isso não é muito viável. Tentando criar uma tentativa e aceitação em cada ponto. Não é muito bom, não é muito eficiente. Queremos uma maneira melhor. E essa forma é fazer o bloco tri accept dentro de nossas definições reais de métodos Por exemplo, em vez de criar o bloco tri accept aqui mesmo na instância do objeto da conta bancária, vamos criá-lo dentro do It ou dentro do construtor Dentro do construtor, vou criar a tentativa e, em seguida, vou avançar com a tecla tab e, em seguida, criarei uma aceitação, e então teremos um erro de valor, pois vou apenas copiar Estamos, estamos imprimindo a impressão. Eu vou dizer erro. Estrondo. Campo de substituição E. Pronto. Agora podemos mudar isso, remover a aceitação, a tentativa, e se eu clicar com o botão direito do mouse, verei, aí está, que temos uma seta. O objeto de conta bancária não tem saldo de atributos. Qual é o problema aqui? Na época, não. Então, o problema aqui é que temos um segundo erro. E de onde veio esse erro? Bem, veio de, então aqui temos um E. Ok, não se preocupe, este é um nome de sombra porque usamos o E aqui e aqui. E não se preocupe, isso desaparecerá mais tarde. O problema aqui é que tentamos esse código, mas como é um saldo negativo, não criamos um equilíbrio automático. E isso é correto, é exatamente o que queremos. Mas o problema é quando tentamos mostrar o saldo ou, quero dizer, devolver o saldo que estava no saldo do show. Se você seguir o erro, descobrirá que, de qualquer forma, não temos um equilíbrio ou equilíbrio de autopensamento. Então, como lidamos com isso? Bem, temos que lidar com isso dentro do show Balance aqui. Vamos criar uma tentativa e vamos tentar se tem atributo. Isso nos permite verificar se temos um atributo em nós mesmos porque estamos nos referenciando e verificando o equilíbrio Então, este é um objeto de string Você pode até mesmo passar o mouse sobre o atributo e ver que, em primeiro lugar, fornecemos o objeto onde queremos verificar se eles têm esse atributo e a string que será o nome desse atributo, então é o eu, que é nosso próprio objeto E então o nome do saldo, ou o nome do atributo, que é saldo. E se tivermos esse atributo , retornaremos o saldo. E então, o que devemos devolver? Vamos gerar um erro aqui que será o erro de atributo. E, na verdade, temos algo chamado erro de atributo. E vamos dizer que essa conta bancária não tem saldo, boom. E então vamos fazer o erro de aceitação do atributo como E e imprimir o erro E. Ok? Então, vamos lá. Agora, se clicarmos com o botão direito do mouse e executarmos, não devemos receber esse erro novamente. Devemos obter um saldo inicial que não possa ser negativo. Isso é daqui mesmo. E você pode ver esse erro. E então essa conta bancária não tem saldo. E também recomendo que, se você se lembra da seção de funções que fizemos, uma das últimas sessões foi quando usamos cores aqui. Eu recomendo que você também use cores. Seja ousado, deixe bem óbvio que há erros aqui. Mas isso é por razões estáticas de estilo, não vou me aprofundar nisso A principal coisa importante aqui é que conseguimos corrigir esse problema. Você notará que não estamos imprimindo nenhuma porque não temos uma conta bancária, acredito que porque a colocamos em uma variável e tentamos imprimi-la. Essa é a linha? Deixe-me verificar o saldo bancário. Vamos nos certificar de onde vem esse nada. Sim, estava realmente vindo desta impressão. Porque estamos tentando imprimir algo e está saindo como se não fosse. Espero que tenha sido entendido e não tenha sido muito complicado. A principal coisa importante e a coisa mais nova que aprendemos é o atributo has que temos aqui. Então, vamos continuar e agora vamos corrigir a retirada. Em vez de tentar aceitar aqui ou primeiro, trabalharemos no depósito. Acho que, em vez de tentar detectar o erro aqui, vamos fazer isso dentro do depósito aqui Vamos tentar isso primeiro, se a quantidade for menor que zero, aumentaremos o erro de valor. E então vamos aceitar o erro de valor. Erro de valor como boom. E então eu vou copiar esta linha. Coloque-o aqui. Lá vamos nós. Agora, se escrevermos, clique e executemos o erro. O valor do depósito não pode ser negativo. Perfeito. Está funcionando exatamente como pretendido. Vamos fazer a retirada. Então, a mesma coisa vale aqui. Vamos fazer uma guia de coluna exceto o erro de valor, pois posso simplesmente copiá-la e colá-la aqui. É exatamente o mesmo. Vou remover o tri , exceto no corpo do nosso código E devemos ter feito todos os erros agora, certo? Sim, lá vamos nós. Erro. Fundos insuficientes. Excelente. Tudo parece estar funcionando perfeitamente bem. Não conseguimos sacar mais dinheiro do que temos e não conseguimos sacar valores negativos. Perfeito. Então, consertamos tudo. E o corpo do nosso código é muito mais confiável, muito mais dinâmico. Não precisamos escrever cada bloco de tentativa e aceitação para cada transação que fazemos. É muito melhor fazer isso dentro de nossas aulas e dentro dos métodos de nossas aulas. Ok, então espero que tenha sido entendido. Agora é hora de começar a criar nossas próprias exceções. Vou criar um novo arquivo Python aqui, um novo arquivo Python, um novo arquivo Python, e vou chamá-lo de criar exceções Exceções. E vamos realmente adicionar um sublinhado para o caso de querermos usá-lo em outro lugar. Aqui, vou criar uma classe que será uma transação inválida ou uma transação que essa classe herdará da exceção de exceção Se mantivermos o controle e optarmos pela exceção, você verá que é uma classe base comum para todas as exceções que não são de saída Podemos ver que podemos inicializá-lo aqui, temos alguns métodos estáticos, podemos fazer algumas coisas com essa exceção Obviamente, você pode ler tudo sobre essa classe de exceção com muito mais detalhes se acessar a documentação do Python Mas, por enquanto, vamos usá-lo apenas no nível da superfície, vou definir o It aqui dentro do it que vamos enviar na mensagem. Então eu vou fazer com que eu pontue uma mensagem igual à mensagem. E eu vou fazer um super porque quero chamar o supervisor de nível superior nele e depois enviar uma mensagem de Seselft Obviamente, você pode criar classes muito mais complexas desses erros de transação inválidos Mas, por enquanto, vamos manter as coisas muito simples. Vou criar uma conta bancária de classe igual à que tínhamos antes, mas um pouco mais simples. Então eu vou definir o It com um saldo inicial, ok? Eu esqueci o aqui. E então eu vou dizer que o equilíbrio da resolução é igual ao saldo inicial. E então eu vou definir o depósito. E teremos uma quantia aqui. Eu vou fazer duas coisas. Em primeiro lugar, vou tentar verificar se o valor é menor que zero, algo que já fizemos antes. Eu vou saber quando vou gerar o erro de transação inválida E o que há de errado com o depósito? O depósito pode ser estático. OK. Não se preocupe com isso aqui. E eu vou enviar o depósito da mensagem. O valor do depósito não pode ser negativo Também vamos dizer aqui que saldo automático do lote mais é igual ao valor e vou pegar a exceção: erro de transação inválido como E e erro de impressão substituição de pontos Lá vamos nós. Em seguida, vou definir a retirada e a retirada. Claro, teremos o eu e a quantia. E vamos verificar duas coisas aqui. Na verdade, deixe-me copiar esse código e modificá-lo. Estrondo. Aqui, erro de valor K em vez de erro de valor, teremos a transação tactvalidvalid inválida Devemos acabar com isso. Vamos, acho que tudo isso está bem criado. Agora, antes de continuarmos, tenho um desafio para você criar uma exceção. Então, eu quero que você crie uma exceção para o saldo inicial negativo. E eu quero que você o use, porque tenha em mente que ainda não o criamos. Criar sua própria exceção, é basicamente como criar uma classe que herda da exceção Nós já abordamos isso. Mas eu só queria dar algumas dicas extras porque isso é algo novo Portanto, sua definição deve ser classe negativa, saldo inicial, erro, exceção e, aqui, exceção, o que significa que ela herda da classe baseada em exceção Ele precisa ter um construtor que receba uma mensagem e envie para o construtor da classe de exceção usando o super Passe o vídeo agora mesmo e crie seus próprios erros. Bem-vindo de volta. Como você conseguiu lidar com isso? Aqui, duas linhas abaixo, vou criar uma classe e vou chamá-la erro de saldo inicial negativo que herda da exceção Vou ter o mesmo que eu tinha no erro de transação inválida aqui Espero que você tenha tentado fazer isso sozinho , mesmo que não fosse parte do desafio. Mas tente pegá-lo aqui mesmo. Vamos tentar verificar. Se o saldo inicial for menor que zero, aumentarei o saldo inicial negativo, dizendo ao usuário que o saldo não pode ser negativo. Oh meu Deus. Deixe-me verificar. Ok, então vamos resolver isso porque isso deve fazer parte do bloco triplo que estamos tentando criar o equilíbrio inicial E então aceitaremos o erro de saldo inicial negativo como E e imprimiremos o erro. Lá vamos nós. Então essa é nossa conta bancária. Vamos tentar criar uma conta bancária aqui. sublinhado bancário um é igual à conta bancária -300 Clique com o botão direito do mouse Devemos receber o erro. O saldo inicial não pode ser negativo. Tudo bem, vamos tornar isso normal. Recebemos algum erro? Não, nós não temos. Não temos nenhuma impressão. Está tudo bem. Não há necessidade do saldo do show. Você quer o exercício extra? Eu recomendo que você crie o saldo exibido com seu próprio erro ou exceção que você pode levantar caso alguém não tenha o atributo conta bancária um, conta bancária 300. Vamos agora tentar depositar algum dinheiro negativo. -30 Clique com o botão direito do mouse em executar. Devemos obter que o valor do depósito não seja negativo. Muito bom. Vamos tentar sacar quantias negativas de dinheiro. Quantias de dinheiro não podem ser negativas. valor da retirada não pode ser negativo. Perfeito. O que mais podemos fazer? E, a propósito, como se pudéssemos fazer algo assim. OK. Isso não nos permitirá. Vamos tentar levantar isso para que possamos ver nosso próprio erro em jogo. Clique com o botão direito e execute. Estrondo. Lá vamos nós. Erro de transação inválido. Quão legal é isso? valor da retirada não pode ser negativo? Lá vamos nós. Você pode ver que fomos capazes de criar nossos próprios. Então, muito obrigado por assistir. Espero que tenham gostado. No próximo vídeo, vamos tornar nossa conta bancária muito mais sofisticada. Então, nos vemos onde também estaremos, como se começássemos a construir um novo projeto que é um banco de dados de contas bancárias. Então, vai se tornar muito mais sofisticado. Vamos usar todas as coisas que fizemos até agora, incluindo as exceções, incluindo os bancos de dados, incluindo as classes Então, esse será um dos nossos maiores projetos. Então eu vou te ver então. Tchau tchau por enquanto. 151. 17. Uma conta bancária mais sofisticada: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo Eu acho que este vai ser curto. Vamos apenas configurar nosso banco de dados de contas bancárias porque esse será o início de, não sei o quão grande esse projeto será, mas será um projeto bastante grande. Primeiro de tudo, vamos entrar em um novo arquivo e, em seguida, criaremos um novo projeto em Python E será chamado de livro de banco de dados de contas bancárias. Abra o projeto nesta janela. Sim. Então, aqui, vou criar um novo arquivo Python que serão as contas bancárias Lá vamos nós. Agora temos uma classe de contas bancárias aqui. Vou criar uma conta bancária para a turma. Só vai herdar do objeto. Obviamente, não precisamos fazer isso, mas às vezes você adquire o hábito de fazer coisas. Acho que é um bom hábito de se ter. Em seguida, vamos inicializá-lo e este será muito mais complexo do que o outro Vamos fazer uma anotação profunda. O nome será STR. O saldo inicial do sublinhado será do tipo float, e vamos defini-lo como 0,0. Vamos dar a ele um valor padrão Então, teremos nome próprio igual a nome. E aqui precisamos adicionar um espaço. Então, teremos o Self Balance. E será igual ao saldo inicial. E vou imprimir a conta criada para o nome próprio do campo de substituição. Lá vamos nós. E também mostraremos o equilíbrio, mas ainda não temos isso. Então, vamos adicionar um comentário aqui para mostrar o equilíbrio. Em seguida, definiremos o depósito do depósito. Teremos o eu e a quantidade que será do tipo float Ele também retornará um carro alegórico. Vamos adicionar a seta aqui dizendo que ela retorna um flutuador E verificaremos se o valor é maior que 0,0 teremos saldo mais igual ao Vamos imprimir o valor do campo de substituição depositado Retornaremos o autoequilíbrio. A propósito, quero ocultar o equilíbrio, adicionarei um sublinhado atrás do equilíbrio a partir de agora É melhor tê-lo escondido. Vamos continuar e agora vamos trabalhar nas retiradas. Aqui, vou definir o saque novamente consigo mesmo, novamente com o valor que será F e ele retornará também. E então, aqui, vou verificar se temos a quantidade entre ou maior que zero e menor ou igual ao equilíbrio de pontos próprios, então terei o saldo de pontos próprios menos igual ao valor Vou imprimir o valor do campo de substituição. Com o sorteio, devolverei a quantia que vou imprimir. Agora, aqui, eu estava sempre pensando: devo criar exceções para esse projeto em particular Para ser honesto com você, achei que talvez agora não seja uma boa ideia, porque queremos nos concentrar no tratamento real das coisas no banco de dados. Posteriormente, adicionaremos exceções ao depósito de saque Vamos mantê-los simples. Adicionaremos blocos de tentativa e aceitação quando estivermos trabalhando com a execução de comandos do banco de dados Será muito mais importante lá, mas, por enquanto, vamos manter as coisas simples. Só teremos condições e trabalharemos dentro dos parâmetros necessários. Aqui, diremos que a quantidade deve ser maior que zero e não deve exceder, caso precisemos transformá-la em um caractere especial. Não deve exceder o saldo da conta E retornaremos 0,0 Finalmente, vamos definir mostrar saldo de sublinhado Deixe-me encerrar este para que você possa ter um melhor não deveria. Eu acho que está tudo bem. Não se preocupe. Então, equilibre a si mesmo. E simplesmente imprimiremos aqui o saldo para substituição da conta. O nome do campo é o campo de substituição Self Balance. Lá vamos nós. Esta é a nossa conta bancária que cobrimos, acho que quase tudo. Ah, sim, sim. Lá vamos nós. Aqui, nós apenas mostramos equilíbrio. Então, saldo, é quando criamos nossa conta bancária aqui. Vamos testá-lo com algumas linhas, vou criar Michael. E vai ser a conta bancária. O nome vai ser Michael. Sem depósito inicial. Vamos pegar Michael e depositar 10.5 Clique e corra Vamos ver o que obtemos como conta de resposta criada para saldo da conta do Michael Bank. Talvez devesse ser a conta do Michael, não sei. São 0,0 10,5 depositados. Então, vamos tentar retirar Michael Withdrawh 2.5 Vamos ver o que obtemos. Estrondo. Ok. 2.5 Retirado Retirado. Eu acho que deveria ser retirado naquele momento. Você escreve retirado. Sim. Ok. Retirado. Agradável. Mostramos o equilíbrio? Não sei se devemos mostrar o saldo toda vez que fazemos uma transação. Veremos, veremos como isso progride e trabalharemos adequadamente Vamos fazer o balanço do show agora mesmo, manualmente. Clique com o botão direito e execute. Então, isso está correto, 10,5 -2,0 está correto. Vamos fazer outra retirada de 2,8. Vamos ver se isso é preciso. Mostre o saldo, clique com o botão direito, execute. Pronto. 5.2 Muito obrigado por assistir. Espero que tenham gostado. Estamos apenas configurando as coisas porque no próximo vídeo, adicionaremos banco de dados à nossa classe de backcount e começaremos a realmente colocar todas essas coisas em bancos de E trabalharemos com um Database Explorer ou um navegador que nos permitirá examinar nosso banco de dados. Vai ser muito, muito divertido. Então eu vou te ver então. Tchau, adeus a partir de agora. 152. 18. Adicionando um banco de dados: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste vamos adicionar um banco de dados à nossa conta bancária. Primeiro de tudo, precisamos estabelecer o que vamos realmente fazer. Queremos criar um banco de dados para duas coisas. Queremos criar um banco de dados para nossas contas e um banco de dados para nossas transações. Então, vamos ter duas mesas, e deixe-me mostrar como essas mesas vão se parecer. Em primeiro lugar, teremos a tabela de contas, que será uma tabela muito simples. Teremos apenas os nomes, que serão PK Agora, o que é um PK? Pk significa chave primária E já vimos o que é uma chave primária antes, quando estávamos trabalhando com o banco de dados do filme. O que significa que a chave primária, bem, é uma chave primária e não pode ser duplicada O nome será um texto e queremos ter certeza de que não é nulo Então temos o saldo que será um número inteiro e também não deve ser nulo Em seguida, temos a tabela de transações que também terá sua própria chave primária, que será do tipo timestamp e também não será nula Agora, o timestamp é um valor ou tem valores que armazenam dados de hora e de um determinado evento e são atualizados automaticamente E eu vou te mostrar como tudo isso funciona. Na verdade, não sou eu quem vai te mostrar, você vai fazer isso em um desafio, mas isso só vai acontecer alguns minutos depois. Antes de tudo, precisamos saber também que a conta também será uma chave primária. Sim. Cada tabela pode ter várias chaves primárias. Vai ser um texto e não vai ser nulo. E, finalmente, teremos o valor que será um número inteiro e também não deveria ser Vamos agora analisar um desafio que você terá que enfrentar. Você precisará criar duas tabelas, assim como fizemos antes, onde importamos o Esqulite, criamos a conexão, etc., etc Você terá que fazer o mesmo dentro do arquivo de classe da conta bancária ou como foi chamado? Deixe-me verificar. Sim, classe de conta bancária. Primeiro você precisa estabelecer uma conexão. Use a conexão para executar consultas. Certifique-se de que as tabelas ainda não existam e que tenhamos visto o que é isso. E defina a chave primária e certifique-se que os campos não estejam agora. Se você não tem certeza de como fazer isso, esta é a oportunidade perfeita para pesquisar como fazer essas coisas. Por favor, tome seu tempo, faça o seu melhor. Não há pressa, mas é muito importante que você comece a fazer as coisas sozinho, especialmente neste momento. Nós, é claro, essa aula ou master class sempre seremos atualizadas, mas estamos quase no final da aula usual ou normal. Então, por favor, tome seu tempo. Vá tentar fazer o seu melhor. E eu vou te ver em alguns segundos. Bem vindo de volta. Como você conseguiu lidar com isso? Primeiro de tudo, certo, aqui no topo, vou importar meu Sqlite Three Então aqui eu vou criar a conexão. Eu direi B, podemos chamá-lo de conexão, podemos chamar de DB. Depende do que você quer fazer. Sqlite três se conecta e vamos nos conectar ao Accounts Light, aí Vamos criar um novo arquivo aqui. Vou fazer com que o B seja executado. E vamos querer criar uma tabela, caso não existam contas dentro das contas. Teremos o nome que será texto e será a chave primária nula Isso é o que precisávamos escrever para criar o nome. E também teremos o saldo que é um inteiro nulo Agora, é claro, existem falhas nesse estábulo e nesse banco de dados Ter um nome como chave primária não é muito bom Porque imagine se duas pessoas chamadas Michael quisessem abrir a conta, é melhor ter um ID que aumentasse automaticamente Mas, por enquanto, queremos apenas manter as coisas simples. Então, teremos apenas o nome, o texto, a chave primária. Não, vou duplicar isso porque quero criar uma tabela Não existe, mas desta vez será a das transações e teremos algumas coisas diferentes. Transações. O que eu escrevi incorreto. Está bem? Eu adiciono um extra lá. Em primeiro lugar, teremos a hora e será do tipo carimbo de data/hora Na verdade, vou adicionar ou pressionar Enter aqui para ir para uma segunda linha. Então, teremos a conta que será do tipo texto, não será nula E, finalmente, temos o valor que é inteiro. Por que não consigo escrever um número inteiro de hoje e não será nulo Finalmente, queremos ter certeza de que temos essas duas chaves primárias. Agora, aqui, não precisamos especificar que essa é uma chave primária, porque teremos duas chaves primárias. O que podemos fazer é escrevê-lo dessa forma, chave. Então, opa, vá lá. Poderíamos ter definido a chave primária aqui e a chave primária aqui. Mas também podemos fazer isso dessa forma se a tabela não existir. Hora da transação, hora do tempo nula, valor nulo do texto da conta, número inteiro, ok, parece bom E nós temos a aula aqui. Agora vamos fazer algumas alterações em nosso construtor para que ele recupere informações do banco de dados e preencha os dados Se os dados não estiverem na tabela, vamos criar um e adicioná-lo à nossa tabela. Aqui mesmo no T, vou criar um objeto cursor. Aqui eu vou ter a capa. E será igual a ser executado. E vou selecionar o saldo do nome a partir das contagens em que o nome é igual E vamos adicionar espaços aqui. Lembre-se, como já falamos sobre isso, eles deveriam ser derrubados aqui Teremos linha igual ao cursor, busque um. Em seguida, vamos verificar a linha. Ou seja, se tivermos algo dentro de uma linha e não for apenas um vazio, então vamos dizer nome próprio. saldo do sublinhado automático é igual à linha e imprimiremos o registro da conta Recuperado. É assim que você escreve Retrieved guys? Sou instrutor de Python. Eu não recuperei. Sim, lá vamos nós. Eu sou muito ruim em inglês, então eu sou quatro. Lá vamos nós. Isso deveria ser bom, o que significa que não temos nenhuma função. Vamos criar essa função. Mas antes de realmente dizermos que o criamos, queremos realmente executá-lo ou inseri-lo no cursor da tabela. Vamos inserir valores nas contas aqui. E os valores serão espaços reservados. E então teremos um nome, saldo inicial. E, claro, precisamos comprometer essas mudanças. Confirmação do cursor ou confirmação da conexão. Boom, lá vamos nós. E algo para ter em mente. Você pode pensar que acabei de imprimir uma conta criada de maneiras convenientes. Eu coloquei aqui embaixo do encarte. Mas, na verdade, é muito importante que imprimemos que a conta foi criada para o nome depois de nos certificarmos de que confirmamos nossas alterações. Porque às vezes você pode executar o programa ou fazer alguma coisa e a conexão com o banco de dados não ser confirmada e, em seguida, você imprime que a conta foi criada quando, na verdade, não foi. Portanto, é muito importante que façamos isso. E, na verdade, aqui, a última coisa que eu quero fazer, talvez possamos mostrar equilíbrio de qualquer maneira Eu acho que não. Acho que só devemos fazer isso por precaução. Mas você sabe o que? O único problema é que às vezes acho que devemos mostrar equilíbrio de qualquer maneira Porque se recuperarmos um valor, gostaríamos de mostrar o saldo se não tivermos recuperado um valor e criado Em vez disso, também queremos mostrar equilíbrio. Portanto, o saldo do show deve estar do lado de fora. Então, como você pode ver, vamos tentar executar esse programa, escrever um clique e executar. Devemos obter o seguinte saldo do saldo da conta bancária , 5.0 Ok, vamos lá. Então, conta criada para Michael. Essa foi a primeira corrida. Agora vamos tentar escrever o clique e executar e devemos recuperar o registro da conta E esperemos que isso funcione. Sim. Agradável. Como você pode ver, o registro da conta agora foi recuperado para Michael Não foi criado para Michael, foi recuperado. Se inserirmos as contas esculitas aqui em nossos arquivos de projeto, podemos ver que a conta Este foi criada Antes de prosseguirmos, vamos criar mais algumas contas bancárias aqui. Vou duplicar isso duas vezes e vou para a conta bancária de Kalos, obviamente será Al Thomas capital K capital Vamos também criar um para Mark. Eu quero que muitas contas marquem 500. Vamos dar a Galen 35400 no final. Sempre precisamos ter certeza de estar perto, vamos escrever, clicar e executar. E devemos fazer com que três contas sejam criadas, conta recuperada para Michael, depois uma conta criada para Kalen e, em seguida, uma conta criada para Thomas também Se você escrever, clique e executamos novamente. Boom, lá vamos nós. Você pode ver que o saldo para Michael é zero. Isso ocorre porque não fornecemos nada. E então as contas de Thomas e Kalen, de fato, foram recuperadas Antes de prosseguirmos, há algo muito importante que eu quero que você faça acesse este site e baixe o navegador de banco de dados do Su. Isso nos permitirá examinar o banco de dados que criamos. Deixe-me mostrar como isso funciona. Depois de baixá-lo, é muito simples. Basta rolar para baixo ou clicar em baixar. Descubra qual versão você precisa baixar. É muito simples. Você deveria ter algo parecido com isso. Esse é o navegador do banco de dados. Então eu quero que você vá para Skylight. Vamos tentar arrastá-lo diretamente. Vamos colocar isso aqui. Se eu arrastar diretamente, acho que não funciona. Sim, nenhum arquivo de banco de dados foi aberto. Ok, não tem problema. Clique com o botão direito e abra com o Explorer. Deveríamos tê-lo aberto aqui mesmo. Ok, vamos lá. Agora, a partir daqui, acho que podemos arrastá-lo. Sim, lá vamos nós. Então, como você pode ver, temos duas mesas. Podemos até ver como eles foram criados. Deixe-me configurar as coisas. Então, aqui podemos ver que temos contas, o nome e o texto do saldo. Inteiro nulo, não nulo. Podemos até ver que é uma chave primária ao lado da pequena chave dourada da pequena chave dourada ao lado do nome abaixo das transações. Também temos conta de tempo e número inteiro. E podemos até mesmo navegar pelos dados. Então você pode ver aqui nas contas que temos Michael com zero, Kalen com 350, Thomas com 400 e Mark com 500 E se formos às transações, ainda não temos nada. Mas em breve faremos o download do navegador do banco de dados. Você pode até mesmo dar uma olhada no banco de dados que eu lhe forneci, o dos filmes, vai ser muito, muito bom. Você pode passar, ver todos os atores, ver tudo. E você pode estar pensando, por que não me mostrou isso antes? Como se eu estivesse perdendo meu tempo fazendo seleções e tudo mais. Porque eu quero que você adquira o hábito de encontrar coisas sem o navegador de banco de dados. Isso é uma muleta. Isso não é algo que deva ser ensinado ou mostrado no início, na minha opinião. Isso deve acontecer mais tarde, quando você já souber como recuperar dados usando apenas as linhas de comando do QL Quando você pode fazer isso com confiança, você aproveita a facilidade do navegador de banco de dados. Espero que você goste. Espero que você tenha entendido, e vemos no próximo vídeo, onde, na verdade, atualizaremos e inseriremos nossos saques e Então eu vou te ver então. Tchau tchau por enquanto. 153. 19. INSERT Levantamentos e depósitos: boas-vindas de volta aos meus programadores de python favoritos em um vídeo totalmente novo E neste vamos atualizar inserir saques e depósitos em nosso Espero que você tenha baixado o navegador de banco de dados porque será, ou será muito útil à medida que avançarmos nisso Portanto, primeiro de tudo, precisamos ter certeza que fazemos tudo corretamente, o que significa que sempre que fazemos um depósito ou saque, ele é adicionado ao saldo de nossas contas. Então, vamos começar com isso. Em primeiro lugar, dentro do depósito, depois de verificarmos se o valor é maior que zero e criarmos um novo saldo, que será um novo sublinhado, o saldo será igual a si mesmo, mas o saldo mais o valor Este aqui, eu só vou removê-lo porque vamos criar um código completamente diferente. Vamos manter esse código, mas vamos escrever um novo código e você verá a justificativa para criar uma nova variável E só um pouco, primeiro de tudo, precisamos definir o tempo de depósito. Vamos criar o tempo de sublinhado do depósito e será igual ao PytzutcLocalize Então, teremos data e hora utc agora. Data, hora e hora, utc, agora. E já vimos isso antes em nossa seção oop, ou programação orientada a objetos Espero que você esteja familiarizado com o que está acontecendo aqui. Mesmo que não nos aprofundemos muito nisso, você deve estar ciente de que isso apenas retorna nossa hora atual. Em seguida, vamos fazer o DB Execute e, por dentro, vou atualizar as contas, definir o espaço reservado para o saldo, onde o nome é igual a E vamos substituí-los pela nova balança. O saldo será o novo equilíbrio. É por isso que criamos uma variável forward e um nome próprio para o nome da conta. Em seguida, também faremos a inserção nas transações. Insira valores nas transações. E os valores serão três espaços reservados. E então teremos o tempo de depósito, nome do ponto próprio e o valor que tínhamos. E, finalmente, vamos nos comprometer um pouco. Depois de nos comprometermos e garantirmos que o banco de dados foi atualizado, atualizaremos o saldo em nosso objeto. Por fim, imprimiremos que realmente fizemos o depósito. E eu realmente posso separá-los para que tenhamos uma distinção clara entre onde estamos trabalhando no banco de dados, nesta parte. Na verdade, são apenas essas três linhas. Mas você sabe o que, na verdade, podemos separá-los. É aqui que trabalhamos no banco de dados, é aqui que apenas configuramos algumas variáveis e é aqui que trabalhamos no objeto real. Então, vamos lá. Então, aqui, criamos uma nova variável, que será o novo saldo, porque queremos usá-la aqui para atualizar o saldo do banco de dados dessa conta. Depositamos o tempo e fazemos a execução, atualizamos o saldo porque lembre-se de que já temos essas contas presentes. Você não pode depositar em uma conta que não existe, é por isso que estamos atualizando a conta. Mas quando se trata de inserir ou quando se trata de transações, precisamos inserir e não atualizar Na verdade, não podemos atualizar as transações. Isso não seria certo. Não queremos poder alterar as transações. Como você pode ver, tudo aqui faz sentido. Mas há algo que podemos fazer para aliviar a dor de olhar para essa linha o tempo todo E já fizemos isso antes porque vamos atualizar a hora da mesma forma de sempre. É uma boa ideia criar um método estático. Aqui no topo, vou criar um método estático estático. E vai ser o sublinhado, obter o sublinhado atual, a hora do sublinhado Você já viu isso antes, então eu vou voltar, onde está, Bo. Esta linha, vamos devolvê-la, mas também adicionaremos o fuso horário do IS, que, mas também adicionaremos o fuso horário do IS, que, se você tem ou mais não fornece nada. Isso só me levará de volta ao meu fuso horário atual, o que não é uma boa ideia, porque você saberá minha localização aproximada. Mas tudo bem. Tenho armas em que estou. Vamos fazer com que a conta bancária obtenha hora atual e ela nos fornecerá a hora atual. Agora que fizemos isso, se, por exemplo, clicar com o botão direito do mouse e eu executar, vamos ver, não há essa tabela como conta. O que estamos fazendo aqui? Errado? Nova conta de saldo. Então, vamos ver, aqui deve estar a conta. Clique com o botão direito e execute. Boom, vamos lá, analisando o saldo na conta oito. Vamos dar uma olhada em nossas transações. Se eu atualizar, veja isso, quão legal é isso Na verdade, nós realmente temos um encontro. Temos a conta Michael e temos o valor 10.5 Por quê? Como depositamos 10,5 Vamos tentar talvez duplicar isso e talvez fazer com que, não sei, 6,5 ou 6,3, não sei, 6,5 ou 6,3, E agora, se analisarmos nosso banco de dados, veremos, quando atualizarmos, que também temos 10.5. Agora, isso deve ser óbvio para você, é porque estamos constantemente atualizando nossa E você também notará que conta de Michael realmente cresceu. Por quê? Como estamos comprometendo essas mudanças e porque elas se sobrepõem umas às outras, elas estão se acumulando Então, agora nossos dados estão realmente sendo salvos. Mas, como você pode ver, se executarmos isso novamente, obteremos outro 10,5 e outro 6,3 Lá vamos nós. Então, essas são nossas transações. Bem, finalmente estamos trabalhando com bancos de dados, então nossas ações realmente têm consequências. Mas antes de continuarmos analisando isso mais profundamente, precisamos configurar a retirada também. E isso vai ser um desafio para você. Portanto, seu desafio é que, assim como atualizamos os depósitos, você precise atualizá-los ou fazer o mesmo com os saques no método de saque Certifique-se de fazer as alterações apropriadas. Há apenas uma pequena alteração que você precisa fazer, então precisaremos encontrá-la, publicar o vídeo agora mesmo e enfrentar o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Primeiro de tudo, garantimos que o valor seja menor que o equilíbrio automático e maior que zero. Então, assim como fizemos antes, diremos que o novo saldo, na verdade, eu vou trapacear e vou copiar tudo isso Que tal esse boom? Porque é quase idêntico, mas há algumas mudanças. Em primeiro lugar, obviamente, o novo saldo será menos o valor O tempo de depósito permanecerá o mesmo. conta bancária obtém a hora atual, isso não vai mudar. Vamos atualizar contas e definir o saldo onde está o nome, é tudo igual ao novo saldo e ao nome do conjunto, essa linha não muda. Em seguida, temos o ponto Db executado. Vamos inserir nos valores das transações o nome definido do tempo de depósito, mas desta vez o valor será negativo porque estamos retirando E, finalmente, é claro que vamos confirmar as mudanças e definir o albot e o novo equilíbrio E essa linha não é mais necessária. Como você pode ver, é basicamente o mesmo. E vamos tirar proveito disso daqui a pouco. Mas, por enquanto, vamos listar o que fizemos, certo? Clique e execute. Então, fizemos algumas retiradas. Se escrevermos: Clique aqui e olharmos, bum, aí está, 2,5 e 2,8 retirados E você pode ver que nossos valores estão começando a ficar um pouco obscuros A razão para isso é porque estamos tendo pequenos números flutuantes mudando, e isso às vezes pode fazer com que o Python comece a cometer erros Vamos resolver esse problema. Talvez possamos mostrar apenas dois números ou apenas um número após o decimal, mesmo que não seja uma boa solução Mas para corrigir isso, é uma tarefa meticulosa. Vou tentar encontrar uma mais fácil. Eu não fiz até agora. É por isso que vou manter as coisas do jeito que estão. Mas em algum momento, quando eu atualizar este curso, vou me certificar de me livrar desse problema da maneira mais simples possível. Com isso, fora do caminho, há algo que precisamos analisar aqui. Você deve ter notado que, na verdade, temos um código duplicado Temos exatamente o mesmo código com apenas pequenas alterações. O que devemos fazer quando temos isso? Precisamos extrapolar essas informações em uma função. Vou criar uma nova função aqui que estará logo abaixo dela. Vai ser. Aqui mesmo. Defina sublinhado, salve e atualize o sublinhado E nós vamos receber eu e a quantia enviada. Na verdade, vou basear isso aqui. Vamos criar o novo saldo que será o saldo automático mais o valor que você verá quando se trata da retirada. Enviaremos o valor negativo, Enviaremos que se traduzirá em um valor negativo aqui, o que funcionará E o código aqui permanecerá exatamente o mesmo dentro do depósito. Em vez de escrever tudo isso, podemos simplesmente salvar, atualizar e enviar o valor. E faça o mesmo. Tudo bem aqui, atualize o valor. Mas o que fazemos aqui? Enviamos uma quantidade negativa, então a única diferença será o uso de menos um E antes de testarmos as coisas, quero reduzir os saldos de nossas contas para zero Michael agora tem 55,6. Você pode ver que isso está refletido corretamente no banco Ok. Portanto, no banco de dados, não temos problemas. Na verdade, a parte mais importante em que temos problemas é na exibição do Python Eu não acho que isso seja um grande problema, para ser honesto com você aqui. Tudo o que precisamos fazer é digitar zero e ter certeza de escrever as alterações. Se eu escrever, clicar e correr, você verá que o saldo volta a zero. Agora, infelizmente eu esqueci Na verdade, vamos para a conta Como você pode ver, 11.5 é preciso nas transações, ainda as temos O que podemos fazer é selecionar tudo isso e excluir. Espere. Selecione tudo isso e exclua, aí está. Escreva as alterações de volta na conta, defina como zero, grave as alterações. Agora, quando eu escrevo, clique e corro, devo ver oficialmente que Michael tem zero, ok? Não tem problema. Devemos ver nas transações 10,5 depositados, 6,3 depositados, 2,5 retirados e 2,8 retirados Se eu for às transações, lá vamos nós. Temos tudo representado com precisão. Então, espero que você esteja gostando do que está vendo. Na verdade, estamos fazendo coisas muito avançadas, então você provavelmente enfrentará coisas semelhantes ao trabalhar com um computador ou ambiente de desenvolvimento Python real Em seu trabalho, é claro, será muito mais complicado com suas próprias complexidades, mas isso é o básico Você tem objetos, você tem bancos de dados. Você está atualizando as coisas aqui e ali, tudo está funcionando em conjunto. No próximo vídeo, analisaremos a reversão de transações e veremos o que aconteceria se tivéssemos algum tipo de problema ao fazer nossas atualizações. Então, eu vou te ver no próximo vídeo. Tchau tchau por enquanto. 154. 20. Retornando no SQL: boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste, vamos tentar quebrar nosso banco de dados para ver o que acontece e analisaremos a reversão de transações em bancos de dados. Então, vamos começar. Em primeiro lugar, vamos excluir tudo em nosso banco de dados para começar do zero. Então, vou selecionar todas as transações e excluí-las. Certifique-se de escrever as alterações e as contas também selecionar todos, excluí-las e escrever as alterações. Então, vamos começar a simular todas as coisas que podem dar errado enquanto salvamos nosso banco Então, a primeira coisa que precisamos entender é que temos chaves primárias. E as chaves primárias devem ser exclusivas. Nossa chave principal é uma combinação de tempo e conta. Quando estamos trabalhando com transações, isso sempre deve ser exclusivo. Vamos tentar fazer com que nossas chaves primárias não sejam exclusivas. E a maneira mais fácil de fazer isso é simplesmente mudar o tempo que temos. Por exemplo, aqui temos retorno YZ, qualquer que seja. Isso sempre será único. Vou duplicá-lo e vou alterá-lo para um. E eu vou comentar isso. Então, agora vamos obter vários. Então, vou executar meu banco de dados e você verá que temos um problema. Fizemos o depósito e funcionou. Mas quando tentamos esperar, espere. Deixe-me verificar. Quando tentamos fazer outro depósito, recebemos um erro. E esse erro foi um erro de integridade, em que a restrição exclusiva falhou no tempo da transação e a conta da transação era a mesma Se voltarmos ao nosso banco de dados e atualizarmos os dados aqui, você pode ver que temos Michael 10.5 e funcionou Então, o depósito funcionou. Comprometemos as mudanças. Se analisarmos as transações, temos um depósito, mas você pode ver que o tempo é um. E quando tentamos fazer um segundo depósito, isso não funcionou porque houve um tempo em que havia um lá dentro. Para evitar esse problema, precisamos criar um bloco Tri except dentro de nossa atualização segura Aqui temos o novo saldo mais o valor. Precisamos adicionar um bloco triplo na execução porque era uma questão de integridade exclusiva da chave Vamos tentar fazer isso e, antes de nos comprometermos, vamos tentar capturar uma exceção que será o erro esculite three Qualquer erro que possa surgir do esculite três. E se tivermos um erro, obteremos a reversão do banco de dados. Então, finalmente, nos comprometeremos. O que é a reversão de pontos? Em primeiro lugar, agora vamos executar o código e, se houver uma exceção levantada, faremos essa reversão e sempre confirmaremos Mas vamos entender por que sempre nos comprometemos, porque estamos fazendo uma reversão Então, qual é a reversão? Se eu passar o mouse sobre ele, obteremos alguma informação? Reversão, a transação atual, ok ? Faz muito sentido. Basicamente, essa é uma função usada para desfazer qualquer alteração não confirmada feita em uma transação de banco de dados Se eu clicar com o botão direito do mouse e executar, você verá que pelo menos meu programa não trava. Não trava. Mas você verá que algumas coisas deram errado. Especialmente se você abrir o banco de dados e atualizar, quais são as coisas que deram errado? As coisas que deram terrivelmente errado. É que agora no banco de dados, se eu olhar a conta, você verá que eu tenho Michael 10,5 mas aqui eu tenho que Michael tem 24,8 e depois 22 Portanto, os depósitos e saques estão realmente funcionando, mas não estão registrados no banco de dados, o que é um grande problema É um grande problema. Então, o que precisamos fazer é corrigir a maneira como estamos estabelecendo o equilíbrio aqui. Estabelecemos o equilíbrio independentemente do que aconteça. E isso não está correto logo antes do final, precisamos adicionar um L's porque, lembre-se, o Ls só funciona quando não há erros ou exceções E então teremos o seguinte: qual é o problema aqui? Só uma linha, ok? Então, agora devemos tentar recuperar esse zero e escrever as alterações nas transações. Eu também vou deletar este. Escreva as alterações. Agora, se eu escrever, clique e eu corro, bum, lá vamos nós. Temos 10,5 para Michael. E se eu atualizar e entrar na conta, sim, eles são iguais Corrigimos um dos erros. Mas algo a considerar aqui é que, de qualquer forma, nem gostaríamos de confirmar nosso banco de dados. Essa seria uma boa ideia por vários motivos, porque quanto menos fizermos transações desnecessárias ou obtivermos acessos desnecessários ao nosso banco de dados, melhor Como pode haver vazamento, pode haver danos nos dados, seja o que for Então, vamos fazer o seguinte aqui. Não vamos nos comprometer a menos que tenhamos certeza de que não há exceções para que possamos nos livrar do Finalmente. Eu o mantive propositalmente porque queria que você visse o processo de Se eu tivesse colocado o DB.com diretamente em outra coisa, você poderia estar pensando por que não fizemos isso? Finalmente, por que não nos comprometemos de qualquer maneira? Então é por isso que eu fiz isso aqui. Mas, como toque final, é uma boa ideia mover o commit do banco de dados acima da atualização do nosso atributo de equilíbrio. Agora, por que isso? Isso garante que o saldo não seja atualizado caso a confirmação falhe por algum motivo. Isso pode acontecer muito. Às vezes, você está tentando acessar o banco de dados. Você pode pensar que tudo está funcionando. No nosso caso, agora, porque é um banco de dados local e estamos usando o Sqlite, acessar o banco de dados não é um grande problema Mas quando você está interagindo com um servidor e executando comandos SQL, pode haver problemas ao longo do caminho porque você está trabalhando pela Você sabe, às vezes nem tudo funciona tão bem quanto o esperado Portanto, garantir que você tenha primeiro um erro na confirmação antes de atualizar o atributo de saldo é uma boa ideia, pois você não quer que discrepâncias entre o saldo que a pessoa vê, o usuário que está usando esse caixa eletrônico ou essa conta vê o Eles não veem o banco de dados real. O banco de dados é o back-end. Esse é o front-end. Então, você pode estar se perguntando: por que queremos reverter uma transação se o commit não está mais sendo chamado? De qualquer forma, estávamos usando a reversão para garantir que nenhuma das alterações confirmadas Então, por que deveríamos reverter isso de qualquer maneira? Bem, vamos executar o código e ver Thomas em nossas contas. Boom, se você olhar aqui, temos Thomas que tem 400 se o deletarmos, e então tentamos executar isso novamente. Como você pode ver, nada realmente mudou , exceto por algo estranho acontecendo aqui Por que está diminuindo a velocidade? Acho que houve algum tipo de erro ou algum tipo de lentidão. Ok, deixe-me tentar isso de novo. O que está acontecendo? Pare a conta bancária. OK. Palavra-chave interrompida, linha 29 Ok, deixe-me deletar isso, clique com o botão direito e execute novamente. Então, você pode estar se perguntando: por que queremos reverter nossas transações se o commit não estiver mais sendo chamado? Porque agora mudamos o commit do final para o else. Portanto, ele não será executado a menos que tenhamos tudo funcionando e não haja erros. E, como eu disse, a função de reversão é usada para desfazer quaisquer Então, qual é seu uso atualmente? Bem, deixe-me te mostrar. Em primeiro lugar, quero mover a criação dessas três mudanças de controle de pessoas e movê-las até o fim. Está bem? Isso vai ser muito crucial. Mantendo pressionada a tecla de controle e movendo essas três pessoas para o fundo. Agora vou entrar no meu banco de dados e vou deletar Thomas. E eu vou escrever essa mudança. Agora, se eu escrever Click e correr, você verá que temos tudo funcionando normalmente, certo? Portanto, temos Michael 10.5 Se examinarmos o banco de dados e atualizarmos, você verá que temos Thomas e, novamente as transações não mudaram Qual é o problema real aqui? Bem, se eu tentar remover a reversão , vou comentar esta linha. Vou adicionar um passe porque você não pode manter o aceito sem nada nele. Então, vou apenas adicionar um passe. Se eu agora voltar ao meu banco de dados e excluir Thomas, escrevo a alteração e tento executá-la novamente. Se você observar a saída, podemos ver que Michael tem 10,5, o que é , você sabe, aceitável porque não fizemos nenhuma alteração aqui Por quê? Porque não há uma chave primária correta, blá, blá, blá Mas não fizemos uma reversão e nada mudou. Certo? Bem, se eu olhar meu banco de dados e atualizar, há algo horrível que acabou de Michael, na verdade, agora tem 7,7 em vez de 10,5 o que é muito, muito importante para mim Quando você olha o código, parece normal, certo? Não deve haver nenhum problema aqui. Bem, eu não vou te dizer o que é. Vou te lançar um desafio. Para encontrar o problema, você precisa examinar o código passo a passo e entender o que acontece em cada linha de código para encontrar o problema. Sim, esse é um grande desafio, mas se você conseguir descobrir isso, posso dizer com 100% de certeza que você finalmente entendeu como trabalhar com Python e SQL Então, pause o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta. Como você conseguiu lidar com isso? Então, para entender o que está acontecendo aqui, precisamos examinar nosso código com muito cuidado. Agora, uma dica deveria ter sido muito óbvia aqui de que isso acontece quando excluímos Thomas e, em seguida, Thomas é criado novamente. Vamos ver o que acontece quando Thomas é criado, ou qualquer objeto, dentro da construção ou do construtor O construtor é chamado, o cursor é executado. Está bem? Pegamos a fila, pegamos uma Se a linha estiver lá, teremos o nome e o saldo iguais à linha. E dizemos que a conta foi recuperada se a conta já estiver no banco de dados. Ótimo. Perfeito. Não tem problema. Mas o que acontece quando a conta é realmente criada do zero? Temos o nome, temos o saldo que inserimos na conta e nos comprometemos. E a conta é criada. Se você ainda não passou ou não conseguiu concluir o desafio, tente pensar em qual linha. Obviamente, o problema está aqui porque é quando o objeto é criado, onde você, qual linha tem o problema? Qual linha está criando a coisa terrível que está acontecendo? Deveria ser bastante óbvio que isso está acontecendo no commit, nesta linha. O que estamos fazendo é aqui mesmo fazer a execução dessas linhas. Estamos atualizando o saldo da conta e inserindo nas transações Agora, as transações não estão funcionando porque temos uma aqui. Fizemos questão de evitar esse problema, mas o que está acontecendo é o saldo está realmente sendo atualizado. Estamos fazendo o comando, não estamos nos comprometendo, mas também não estamos revertendo Quando Thomas é criado, depois de fazermos os depósitos e saques, isso significa que tudo que fizemos aqui na verdade é atualizado no banco de dados porque é confirmado aqui Quando você confirma uma mudança, ela não acontece exatamente onde você disse, todos os comandos são escritos e, pronto, quando você confirma, tudo está comprometido com ela. Novamente, deixe-me explicar isso novamente, embora não estejamos nos comprometendo aqui na atualização segura Porque Thomas foi criado depois de todos esses saques e depósitos E quando Thomas é criado, temos um commit, que significa que tudo o que fizemos com a atualização e a inserção e tudo o que fizemos em todo o banco de dados será confirmado eventualmente porque estamos criando Thomas. E dentro de Thomas, não estamos comprometendo Thomas especialmente Estamos apenas confirmando todas as linhas de comando que tentamos fazer nessa conexão agora nesta sessão É muito importante entender isso. Fazer a reversão é muito importante porque, nessa situação, quando temos uma reversão, revertemos essas Então, deixe-me tentar excluir tudo para que tudo funcione sem problemas. Preciso escrever as alterações, escrever, clicar, executar, ok? Agora vamos voltar. Certo, clique em atualizar contas, Michael tem 10,5 anos. Tudo bem. Tudo está bem. Se eu escrever, clique e corra novamente, isso não deve ser um problema, porque ainda não recriamos Thomas. Então, se tentarmos excluir Thomas do banco de dados, para que ele seja recriado novamente, clique com o botão direito do mouse em Executar Thomas foi criado novamente, não recuperado. Agora, se voltarmos ao banco de dados, veremos quando atualizarmos que o valor em Michael não mudou Por quê? Porque estamos revertendo as transações mais recentes que fizemos. Espero que tenha sido óbvio. No próximo vídeo, vamos mudar para um projeto diferente, que será o navegador Netflix, que terá o TK Enter. O que é algo que , no momento em estou gravando, ainda não abordamos. Mas se você seguir as etapas, é uma coisa muito fácil de entender, muito básica, que os detalhes minuciosos não funcionarão. Portanto, não se assuste ao receber essa parte. A parte mais importante é entender como podemos recriar o pegajoso Muito obrigado por assistir e nos vemos no próximo vídeo. Tchau tchau por enquanto. 155. 21. Crie Netflix (mais ou menos): boas-vindas de volta aos meus programadores de Python favoritos em um vídeo totalmente E neste vamos começar com nosso navegador Netflix. o navegador Netflix não será Obviamente, o navegador Netflix não será tão sofisticado quanto o que você assiste. Mas vamos usar nosso banco de dados de filmes que vimos antes para criar uma interface gráfica de usuário na criar uma interface gráfica de usuário qual poderemos escolher um gênero, escolher um filme desse gênero e, em seguida, selecionar um dos atores. Obviamente, essas coisas só serão exibidas em nossa tela usando o Gooey Não vou me aprofundar muito nas pequenas complexidades do uso do K inter, que é a ferramenta ou o módulo que usaremos para criar essa Posteriormente, criarei projetos separados. Talvez quando você estiver assistindo a esta seção atual, eu tenha uma relação sexual completa com TK Mas, para ser honesto com você, não é algo sobre o qual eu realmente valha a pena falar. Porque a maioria das pessoas que criam uma interface gráfica de usuário usa outras ferramentas além do TK Inter e existem maneiras mais modernas de criar uma interface gráfica de usuário Mas eu só queria a coisa mais simples, porque nosso foco principal aqui será a conexão entre um banco de dados e o Python Sem mais delongas, vamos começar criando um novo projeto aqui no topo, que será o navegador Netflix. Navegador, é você, certo navegador? Sim, acho que sim. Vou abri-lo nesta janela agora mesmo. A primeira coisa que precisamos fazer é acessar o banco de dados de filmes que vimos antes. E precisamos clicar e abrir isso no Explorer, dentro do navegador Netflix. Aqui, vou enviar o banco de dados que temos. Onde está o banco de dados? Aqui mesmo, os filmes. E, na verdade, vou copiar e colar aqui. Agora temos o VDB dentro das pastas do Netflix, e você deve ver aqui que temos o VDB Apenas como um exercício interessante, vou abrir esse banco de dados aqui mesmo no navegador do banco de dados para que possamos dar uma olhada nele arrastar os filmes. Estrondo. E lá vamos nós. Então, como você pode ver, temos todos os nossos atores, temos nossos gêneros , temos nossos filmes e também temos as visões que criamos Então, quão legal é isso? Você pode acessar o banco de dados que tínhamos, o banco de dados de filmes por meio desse navegador de banco de dados, mas certifique-se de não excluir ou adicionar nada. Tenha cuidado com isso. Com isso resolvido, vamos agora continuar. A primeira coisa que precisamos fazer é criar um novo arquivo dot py, que será o navegador de filmes. Então, seremos o navegador de sublinhados do filme. E o IntellJ acabou de travar. Excelente. Use o poder da edição para ver você em alguns segundos. Ei, bem-vindo de volta. Então demorei um pouco. Com o poder da edição. Deveria ter sido um pequeno inconveniente, então estou importando o SQA Lit e também o TK Essa será a ferramenta que usaremos para criar nossa interface gráfica de usuário Gooey Stands, caso não esteja clara Então, aqui vamos criar a conexão que é igual a Schulte three connect e estamos nos conectando ao Netflix ou ao arquivo de filmes aqui O único problema é que, se continuarmos usando o filme B, ele não se conectará corretamente. Vai ter alguns problemas. Agora, vou usá-lo de qualquer maneira, ok? Porque gosto de correr riscos e quero ver o que aconteceria Caso precisemos mudar isso, a próxima coisa que queremos fazer é começar a criar a janela para nossa interface gráfica de usuário. Este vídeo será sobre como criar essa janela, mas primeiro precisamos realmente ver essa janela. E esse é o resultado final que devemos ter. Teremos os gêneros, filmes e atores, e teremos a lista de gêneros A lista de filmes e a lista de atores. E toda vez que clicarmos em um deles, obteremos os outros. Eu sei, não é tão impressionante, mas fique comigo. Então, primeiro de tudo, isso é a dissecação. Teremos 1234 linhas. Então, esses são os números 012,3, essas são nossas linhas. A primeira linha indicará o rótulo, então o gênero, o filme e os atores. A segunda linha será, ou a linha número um indicará os atores e os filmes. Linha número dois. Combinado com a linha número um , indicará os gêneros. Agora, a razão pela qual fiz isso não é por nada em particular, mas eu só queria mostrar como podemos criar uma grande caixa de listagem que abrange duas linhas Só algumas coisas extras aqui. Eu sei que isso não parece nada bonito, mas fique comigo. E então três vai ser esse espaço vazio aqui, então não parece ruim. E também temos as colunas, então teremos 012.3. Obviamente, é claro que as três serão apenas para fins expansivos E teremos a primeira coluna para o gênero, a segunda coluna para os filmes, terceira para os atores. Sem mais delongas, vamos criar essa janela aqui. A primeira coisa que precisamos fazer no K inter é criar a janela principal E diremos que a janela principal é igual a K terk K e é uma função Então vamos dizer que o título da janela principal será net flicks rouser Cada janela principal também precisa de uma geometria de tamanho, que será de 1024 por Lá vamos nós. Essa é a criação da janela principal. Só para começar a testar as coisas, precisamos criar o loop principal. Vou adicionar um comentário aqui, sinal de igual ou h, se usarmos traços ou sinais iguais, usaremos sinais iguais aqui Teremos o circuito principal e o 31234567, certo? Temos sete aqui? Basta copiar para que possamos ter simetria. Ok, nós temos sete aqui. Diremos que a janela principal é mainloop. E então vamos imprimir que estamos fechando a conexão. E conexão, próxima. Adicione uma linha extra quando eu escrevo Clique e eu corro, bum, lá vamos nós. Criamos o navegador Netflix. Agora, obviamente, ainda temos muito que fazer aqui. Mas isso é um começo. Vamos fechar isso e continuar fechando a conexão. Eu posso fechar isso aqui, e eu posso fechar isso aqui. A próxima coisa que queremos fazer é criar todas essas colunas e linhas aqui embaixo disso. Vamos dizer que temos a coluna da janela principal, a coluna configure. Na configuração da coluna, teremos zero com um peso de dois. Então, vamos duplicar isso quatro vezes. Essa será a coluna espaçadora à direita. Este é o último, e esses três serão os principais. Eu vou ter 012,3 com um peso de dois. Agora, o uso de pesos e a troca pesos dependerá ou afetará o momento em ou afetará o momento que tornarmos essa janela cada vez maior Como isso afetará essas colunas, ficará mais evidente quando começarmos a adicionar coisas lá. Agora, além das colunas, também precisamos criar as funções, direi que o rolo da janela principal está configurado aqui. Eu vou ter zero e o peso será igual a um. E vou duplicar isso três vezes. As janelas do meio terão um peso de cinco. Aqui, teremos 012.3. Lá vamos nós. Essas são nossas colunas. Obviamente, eles não ficarão aparentes quando executarmos o programa porque são apenas dissecações da nossa janela principal Não há nada mais do que isso no momento, mas veremos isso quando começarmos a criar, primeiro lugar, os rótulos. Novamente, adicionarei esse comentário aqui para distinguir os rótulos. São os rótulos? Sim. OK. Então, como eu disse, eu não sou o melhor em pronúncias no inglês K, inter label E vamos colocá-lo na janela principal O texto será uma grade para colocá-lo em algum lugar. E vamos dizer que temos uma linha igual zero e a coluna será igual a zero. Agora, quando escrevo, clico e corro, devemos ver no topo que o gênero é excelente. Como você pode ver, estamos ancorados na janela principal. Ele deve estar na janela principal. O texto é sobre gêneros na grade. Nós o configuramos para linha zero, coluna zero. A grade nos permite configurá-la nas linhas e colunas corretas. Vou duplicar isso porque também teremos os filmes E os atores, o papel vai continuar o mesmo porque, obviamente, estamos no mesmo caminho. A única diferença será a coluna, então essa será a coluna um e a coluna dois. Quando eu escrevo Click and I run bone, lá vamos nós. Agora acho que podemos começar a testar como isso vai mudar. Olha isso. Então, como você pode ver, tudo isso se deve à maneira como dissecamos os pesos Por isso, garantimos que nunca possamos realmente esmagá-los. Do fundo, podemos esmagá-los, mas do lado não podemos Sempre terá algum espaço. Observe que, quando a expandimos, ela não é simétrica. É por causa da coluna extra que adicionamos na lateral. Vamos continuar e agora vamos criar a caixa de listagem de gêneros A caixa de listagem de gêneros. Antes de tudo, precisamos criar uma caixa de listagem. Vamos fazer com que a lista seja igual a K entre na caixa de listagem. Ele estará na janela principal. Agora precisamos configurá-lo corretamente. Vamos ter uma grade de lista de gêneros e vamos defini-la na linha número um, coluna zero. Temos que colocar algo que seja adesivo e vamos colocá-lo no sudeste oeste Isso significa que queremos expandi-lo em toda a coluna que temos. Então, vamos garantir que a extensão das linhas seja duas porque lembre-se de que os gêneros abrangerão as duas linhas Também o configuramos para nordeste. Vai cobrir toda essa diagonal aqui, na diagonal, vai cobrir a, vamos chamá-la de toda a caixa que temos. A propósito, se você está perguntando por que esses dois não são simétricos, é por causa da forma que criei para este navegador para tirar uma captura A extensão da linha é duas, porque abrange duas linhas. E, finalmente, temos que adicionar um pouco de preenchimento no lado direito, 30.0 Você sempre pode passar o mouse sobre essas coisas para ver o que elas significam ou essas coisas para ver o que elas significam ou pode sempre procurá-las e Agora está me dando um erro esperado de união de tipo. Acho que vai se resolver sozinho. Eu não acho que haja grandes problemas. Finalmente, precisamos configurar isso. Vamos adicionar uma pequena borda e um relevo. Todos esses são apenas pequenos detalhes minuciosos sobre o estilo que teremos. Então, quando escrevemos, clicamos e corremos, boom. Olha isso. Como você pode ver, ele se estende por duas colunas. Teria sido simétrico, mas o que fiz quando fiz uma captura de tela foi fazer assim OK. Agora, como você pode ver, as coisas começam a ficar estranhas aqui quando começamos a adicionar coisas K inter não é a coisa mais amigável para iniciantes e amigáveis Honestamente, eu não gosto muito, mas eu só queria ficar com o básico desta lição A próxima coisa que queremos fazer é criar a caixa de listagem de filmes. A caixa da lista de filmes será um pouco diferente aqui. Eu vou ter a caixa de listagem de filmes. Teremos a variável da lista de filmes porque os gêneros sempre permanecerão os mesmos Não vamos mudar de gênero, mas os filmes vão mudar Se você selecionar o gênero de ação, por exemplo, terá filmes diferentes. Se você selecionar o documentário, obterá filmes diferentes. Haverá uma variável de lista que será igual ao K dentro da janela principal. E então teremos a variável do filme definida. E vamos configurá-lo, por enquanto, para escolher o gênero aqui. Vou abrir isso e vou dizer que escolha um gênero, obviamente. Em primeiro lugar, a lista de filmes ficará vazia. E então, quando escolhermos um gênero, teremos toda a lista de filmes. Em seguida, faremos a mesma coisa que fizemos com a lista de gêneros. Mas é claro que essa será a lista de filmes. Copie e cole nesses dois lugares. A caixa de listagem é a janela principal. A linha permanecerá uma, a coluna será duas e a extensão da linha será uma. Vamos simplesmente removê-lo e, em seguida, afundaremos a borda dois do filme Acho que tudo isso é bom, exceto que acho que isso vai nos causar um pequeno problema. Mas quando corremos, devemos ver se está em ação. Interessante. Por que temos isso nos atores? Vamos ver, você disse coluna dois. Deveria ser a coluna um, clique com o botão direito do mouse em Executar e pronto. Mas, como você pode ver, não temos que escolher um gênero. Por que isso? Porque, como eu suspeitava, precisamos que isso seja um casal. Precisamos impedir que isso seja executado e agora executá-lo novamente. Ainda não temos nada nos filmes. Eu peço desculpas. por isso que é melhor não copiar e colar o código porque esquecemos na caixa de listagem de adicionar a da lista igual à variável Agora isso vai aparecer. Lá vamos nós. Vamos tentar não ter uma blusa porque esse não era o problema. Ok, vamos lá. Portanto, isso não funciona porque agora temos três elementos em vez de apenas um. Então, precisamos ter uma queda aqui. Lá vamos nós. Porque é um elemento. Se não o derrubarmos, ele simplesmente pensa que cada um deles é um elemento separado e o imprime. Lá vamos nós. Agora temos a caixa de listagem do filme. Agora, obviamente, a última coisa a fazer é criar a caixa de lista de atores atuantes. Será um desafio para você criar os atores usando o mesmo código com os ajustes necessários para criar a caixa de listagem de atores, fechar a conexão do banco de dados no final, ou já fizemos isso. Passe o vídeo agora mesmo e vá fazer o desafio. Bem vindo de volta. Como você conseguiu lidar com isso? Vou selecionar tudo isso e colar aqui. E eu vou ter uma caixa de listagem de atores aqui. Altere isso para para, em seguida, copie e cole. Cole aqui. E então essa será a lista de atores. Sim. Tudo bem, copiar, colar, colar. E, claro, as colunas serão duas: norte, sul, leste e oeste, então as colocaremos em todos os lados. Preenchimento 30, borda duas variáveis da lista submersa em relevo Feche o que escolhermos Escolhemos um filme, clicamos com o botão direito, corremos e pronto. Senhoras e senhores, alguns de vocês podem estar ficando loucos agora Mas confie em mim, isso não é algo muito complicado. Se você quiser se aprofundar no TK Inter, existem muitas documentações, mas, como você pode ver, essas são coisas muito elementares para ser honesto com Como se eu não visse a real necessidade de explicar cada pequeno detalhe aqui. Nosso foco não é criar uma interface gráfica de usuário, mas sim criar um banco de dados sólido e esse foi o começo. Muito obrigado por assistir. Nos vemos no próximo vídeo, onde adicionaremos a barra de rolagem ao lado da nossa lista, o que é um tópico complicado. Como você verá, nos vemos em alguns minutos. Tchau tchau por enquanto. 156. 22. Adicionando barras de rolagem a listas: Bem-vindos de volta, meus desenvolvedores favoritos de Python. E neste vídeo, começaremos a adicionar barras de rolagem para percorrer nossos dados. Em primeiro lugar, na caixa de listagem de gêneros, adicionaremos o pergaminho de gêneros. Aqui eu vou colocar o gênero Scroll. E será igual a K scroll, scroll bar. Lá vamos nós. Em seguida, teremos a janela principal. Precisamos definir a orientação para ser vertical, K, inserir vertical. Então, vamos fazer com que o comando seja igual à visão geral da lista y. Apenas a visualização y sem os parênteses da função. Em seguida, teremos a grade de rolagem do gênero. E vamos configurá-lo, é claro, na linha número um. Será a coluna zero, pegajosa, norte, sul, leste, isso não estamos expandindo para o oeste do lado E então a extensão da linha será duas, porque lembre-se de que o gênero abrange duas linhas. A lista de gêneros terá esse comando y scroll, que nos permitirá realmente percorrer os dados que estão na lista de gêneros e, em seguida, rolar o conjunto. É assim que criaríamos isso. Agora, se eu clicar com o botão direito e pronto, veja isso. Eu tenho uma barra de rolagem aqui no lado direito dos gêneros Agora, antes de continuarmos, eu só queria mostrar como podemos adicionar algumas informações à variável da lista de filmes. Por exemplo, já vimos isso para qualquer variável , porque será parte do seu desafio. Por exemplo, aqui eu posso adicionar 12345, ok? Então, quando eu escrevo clique e corro, isso é o que eu obtenho, 1.234,5 dentro da lista de filmes E isso será crucial quando quisermos começar a testar nossas barras de rolagem. Com isso resolvido, agora é hora de adicionar barras de rolagem às outras duas caixas de listagem criar alguns 100 elementos adicionados aos gêneros para verificar se a barra de adicionados aos gêneros para verificar se a rolagem está realmente funcionando Pause o vídeo agora mesmo e vá fazer o desafio. Bem-vindo de volta. Como você conseguiu lidar com isso? Assim como tínhamos nos gêneros. Vou copiar isso e colar nos filmes. E este será o rolo do filme, copie, cole. E então a lista aqui. E então o rolo do filme. E o que mais precisamos mudar? Claro, a coluna será uma, a roseira não estará presente aqui. Também precisamos mudar isso para a lista de filmes. E acho que isso é tudo, se não me engano. Sim, acho que vamos copiar isso também. Coloque isso nos atores. Este será o pergaminho dos atores. Ator baseado em cópia. Lista de atores do Actor Scroll. Devemos estar prontos para ir. Se eu escrever, clique e corra bem, nosso peso. Esquecemos a coluna. Aqui estão dois. Lá vamos nós. Temos nossas barras de rolagem, muito boas. Agora, o próximo passo é adicionar uma queda de 100. E isso vai ser muito simples. Tudo o que precisamos fazer é primeiro criar aqui a lista de testes. E será igual a um intervalo de 100. Meu Deus, 100. E então vamos converter isso em algumas das listas de testes. E acho que te contei nos gêneros. Ok, você pode colocá-lo nos gêneros, nós podemos colocá-lo realmente nos gêneros Não podemos colocar isso, precisamos criar uma variável para os gêneros, o que é um erro que eu cometi Vamos colocá-lo nos filmes Red click run e pronto. Você pode ver que agora temos uma barra de rolagem que podemos usar, até mesmo a roda do mouse ligada. Muito obrigado por assistir. Espero que você goste. No próximo vídeo, importaremos nosso banco de dados e, na verdade, representaremos os filmes que temos Te vejo lá. 157. 23. Importando nosso banco de dados: Bem-vindos de volta, meus colegas programadores de Python , a um novo vídeo E neste vamos importar nosso banco de dados e preencher nossas caixas de listagem com informações reais desse banco de A primeira coisa que precisamos fazer é entrar em nossa caixa de listagem de gêneros e, bem, apenas importar dados para ela Então, já abrimos a conexão com os filmes Dob e, como eu disse no primeiro vídeo, talvez precisemos alterá-la para pedir uma luz para que isso funcione Mas antes de tudo, vamos tentar com o B e ver se funciona. Porque às vezes as coisas mudam de tempos em tempos. E quando eu uso pastas diferentes, bancos de dados diferentes, funciona, às vezes não, vamos apenas testá-lo. Vamos fazer quatro gêneros em Connection Execute e depois vou selecionar gêneros, nome do gênero a partir da ordem, ordem por gêneros Esse é o nosso primeiro comando. E então, para cada um, vamos obter uma lista de gêneros, inserção, boom. E então vamos colocá-lo no final. Então, vamos acabar, acabar, acabar. Lá vamos nós. Em seguida, vamos colocar o primeiro elemento que recebermos. Basicamente, o que queremos garantir é que, depois de extrairmos os gêneros do banco de dados, queremos colocá-los no final da lista, não no início Isso garante que façamos isso, que o coloquemos sempre no final. Também estamos extraindo do gênero o primeiro elemento que recebemos quando escrevo, Click Iron Estrondo. Quão legal é isso? Temos drama policial, comédia e documentário. E, obviamente, a comédia e o documentário são do que adicionamos antes de removê-los. Eu recomendo que você os remova para que tenhamos navegadores Netflix com aparência mais limpa. Mas isso depende de você em seguida. Tenha a capacidade de clicar em um desses gêneros e fazer com que todos os filmes apareçam à nossa frente Para fazer isso, precisamos ter uma maneira de realmente selecioná-los. Vamos criar uma nova função que será a de obter filmes. Na verdade, vou criá-lo aqui no topo. Eu vou definir quais filmes eu vou enviar em um evento. E você vai entender o que quero dizer com evento. O evento será um clique. Vou ter o widget de eventos iguais LB. Eu vou ter o índice. Confie em mim, todas essas linhas serão explicadas em slides. Não se preocupe. Em seguida, teremos o LB, que é a referência real para a caixa de listagem Será a seleção do cursor, mas por algum motivo não estou recebendo nenhuma referência de dados aqui. De qualquer forma, não se preocupe. Então, teremos o nome de sublinhado do gênero igual a LB Não obtenha nenhuma indicação índice porque este será o Apple, é por isso que adicionamos um. Então, teremos o ID de sublinhado do gênero igual à execução da conexão Selecionarei o ID do gênero em que o nome do gênero é igual ao espaço reservado Aqui teremos o nome do gênero, é por isso que era Apple. Vamos apenas buscar um. Em seguida, vamos criar uma lista de gêneros. E será igual a apenas uma lista vazia. E vamos dizer que quatro linhas na execução da conexão. E agora vamos conectá-lo aos títulos dos filmes. Vou selecionar filmes, títulos dos filmes. Vamos entrar aqui porque será uma longa fila em que ID do gênero do filme será igual ao campo de substituição. E então vamos ordenar por filmes, título, gênero, ID. Aqui, teremos a lista de gêneros preenchida com o primeiro elemento que obtemos desses papéis , que serão os filmes Então, finalmente, aqui, teremos a variável da lista de filmes definida. E vamos converter a lista de gêneros em uma população Também vamos definir a variável da lista de atores para escolher um filme, mesmo que já tenhamos feito isso, mas queremos sempre voltar atrás. Escolha um filme. Uma vez que povoamos, vá lá. Tudo bem. Então, adicione um espaço aqui. Adicione um espaço aqui. Este é o nosso melhor filme. O que está acontecendo aqui? Agora eu quero que você abra esse código na sua frente e, em seguida, veja o slide a seguir. Então, primeiro de tudo, temos o widget de evento LB equals. Isso nos dá a referência da caixa de listagem, para que possamos usá-la. Portanto, esta é uma referência à referida caixa de listagem quando, na verdade, clicamos em um dos elementos. Em seguida, queremos buscar esse elemento. qual elemento realmente clicamos dentro da caixa de listagem A função de seleção ou usada em uma lista nos dá uma visão geral dos elementos E queremos obter os IDs acessando o primeiro elemento. Clicamos em um dos itens da nossa lista. Temos acesso a esse elemento e agora temos uma referência a ele. Temos que extrair desse índice o nome do gênero em que clicamos Fazemos o seguinte LB, obtenha o índice. Essa linha recupera o valor do item selecionado no índice especificado usando o get E a vírgula final a converte em uma queda com um único elemento, porque lembre-se de que a usaremos mais tarde em nosso espaço reservado Então, temos o gênero D igual à execução da conexão. E tudo dentro disso seleciona o ID do gênero da tabela de gêneros, filtrando com base no nome do gênero fornecido e o método fetch one que você vê no final recuperará a primeira linha do resultado e, em seguida, o valor do ID do gênero é atribuído à variável do ID do Finalmente, temos o quatro loop que seleciona a coluna de nome do estábulo do filme ou a filtragem do título com base no ID do gênero obtido anteriormente E os resultados são ordenados pela coluna do nome. Os quatro loops são iterados em cada linha e recebemos resultado da consulta TLDR muito longo para Basicamente, o que está acontecendo é estamos referenciando a caixa de listagem, é por isso que eu a chamei de LB, aliás Em seguida, acessamos o índice. Onde clicamos nessa caixa de listagem? Em seguida, obtemos as informações desse índice. Clicamos em algum lugar na caixa de listagem extraímos as informações. E agora podemos usar essa informação, que é o nome do gênero, para acessar nosso banco de dados e encontrar o ID do gênero. Depois de encontrarmos o ID do gênero, podemos entrar na tabela do filme e, com base no ID do gênero, obter todos os filmes que temos lá. Para a conexão da linha D, anexaremos nossa lista, nossa lista de gêneros Na verdade, estou pensando aqui, talvez devêssemos mudar isso para a lista de gêneros de filmes. A lista de gêneros de filmes, acho que é melhor porque estamos preenchendo a lista de filmes Isso deve fazer mais sentido. O conjunto de variáveis da lista de filmes. Nós convertemos isso em um par e depois mudamos na final, que é o conjunto de variáveis na lista de atores. Escolha um filme para preencher os atores. Vamos ver se isso funciona. Se eu escrever, clicar e correr, você verá que, se eu clicar em Crime, Interessante, ainda não recebo nenhum. Bem, na verdade, precisamos vincular esse método ou chamá-lo nos gêneros aqui na parte inferior Eu vou dizer que a lista de gêneros, mas vou clicar na caixa de seleção. E esse é um evento que acontece quando obtemos filmes, mas não estamos chamando a função, esse é o evento real, a seleção da caixa de listagem. Quando clico em Aventura, não recebo nada porque tenho um erro que me diz isso. Não é rock. Lá vamos nós. Então, agora, quando eu escrevo, clique e eu corro. Espero que desta vez, ao clicar em Aventura, eu receba Pulp Fiction e O Senhor dos Anéis, O Retorno do Rei Se eu clicar no crime, recebo o drama O Poderoso Chefão, Comedy Action É claro que, em comédia e documentário, não temos nada. E você pode ver aqui nos atores, nós escolhemos o filme. Então, se eu escolher um filme, bem, eu não ganho nada. Acabei de receber um erro. E esse erro sempre será comum por algum motivo. Eu simplesmente não consigo descobrir como consertar isso. Mas de qualquer forma, temos uma seleção funcional. A próxima coisa a fazer é fazer o mesmo com nossos atores contratados. Portanto, será um desafio para você, que é criar os melhores atores. Portanto, use o mesmo código dos filmes get para criar os atores do método. Certifique-se de fazer os ajustes necessários no código e na consulta. E passe o vídeo agora mesmo e vá fazer o desafio. Ok, bem-vindo de volta. Então, vou selecionar tudo isso e apenas controlar D para duplicar. Vou chamar isso de Get Actors. Eu serei um curso de widget de eventos. Selecione o nome do filme, desculpe, o nome do filme obtenha o índice do ID do filme. E vamos ter o nome do filme aqui e vamos ter o ID do filme aqui. Selecione o ID do filme. Os filmes fazem o ID do filme a partir dos filmes em que o título do filme é igual ao nome do filme e nós buscamos um Temos a lista de filmes de atores, lista de atores. Copie isso e cole no, nesses dois lugares. E então selecionamos o primeiro nome do ator entre os atores. E onde os filmes em que os atores fazem a identificação do filme são ordenados pelo primeiro nome do ator, vamos. Então, neste caso, acho que não precisamos adicionar nada na variável actors. Vamos configurá-lo aqui mesmo. Na verdade, definiremos a lista de filmes de atores como uma variável de lista, para algumas listas de filmes de atores. Sim, acho que é tudo. A última coisa a fazer é realmente vinculá-lo. Os atores são, na verdade, filmes aqui. Vou fazer com que a lista seja vinculada. Vamos selecionar a caixa de listagem. Vá lá, faça com que os atores não liguem. Acho que está tudo pronto. Acho que não temos mais nada. Certo, clique, corra. Temos um erro porque está mal formado. De onde estamos falando? Ok, aqui é Binds. Não funciona, eu vou, certo, vamos lá. Então, selecionamos ação, selecionamos a noite escura e pegamos todos os atores, exceto por esse erro persistente que não consigo simplesmente superar porque simplesmente não faz nenhum sentido. Estamos selecionando tudo corretamente, mas, infelizmente, como você pode ver, não entendemos. Agora, a última coisa que eu gostaria de mudar é, por exemplo, clicar em Drama. OK. Eu tenho uma lista diferente ou é bom realmente saber o que acho que todos nós fizemos aqui. Senhoras e senhores, muito obrigado por assistir. Espero que tenham gostado e isso seja basicamente o fim. Não tenho certeza se faremos algo extra mais tarde. Na verdade, não. Eu acredito que vamos adicionar muito mais projetos a essa master class. Muito obrigado por assistir. Obrigado por fazer todo o curso. Confie em mim agora, com todo o conhecimento, se você realmente dedicou um tempo para entender tudo o que fizemos até agora, quero dizer, não há nada que o impeça de se tornar um incrível, incrível e incrível desenvolvedor de Python em não há nada que o impeça de se tornar um incrível, incrível e incrível desenvolvedor de Python em qualquer campo que você quiser, seja ciência de dados, análise de dados ou qualquer outra coisa Senhoras e senhores, muito obrigado por assistir. Foi uma honra ensinar você. E nos vemos em qualquer lugar onde possamos nos ver, qualquer mídia social, em qualquer outro lugar. Eu sempre estarei lá. Agradeça ao seu instrutor. Seja grato pela ajuda deles e eu o farei. Sim, é isso mesmo. Não tenho certeza do que dizer. Esse é o fim. Estamos apenas encerrando. Espero que tenhamos nos conhecido em um nível mais profundo. Tchau tchau por enquanto.