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.