ROSS Rheingans-YOO: Oi, eu sou Ross.
E este é um seminário CS50.
Ele irá levá-lo de programação em C para programação em Python.
>> Python é uma linguagem de script.
É em grande parte como C na sintaxe, embora alguns
dos detalhes técnicos de como que a sintaxe é executado
são ligeiramente diferentes.
É menos poderoso do que C em alguns aspectos.
É menos expressivo para onde exatamente em seu computador
memória é colocado para fora, como ele é colocado para fora,
quando fica liberdade, e esses tipos de coisas.
>> É mais útil do que C em alguns aspectos, porque é mais fácil programar em.
O idioma é, até certo pessoas, mais intuitiva.
E realmente, o objetivo é que que seja mais rápido para programar
e potencialmente mais lento para executar.
>> Agora, se você pensar sobre a quantidade de tempo
você gastou em seu último conjunto de problemas de escrita
seu código contra a quantidade de tempo que você gasta
em seu último problema definir a execução de seu código,
você imaginaria que a linguagem que foi duas vezes mais rápido para escrever,
e duas vezes mais lento para executar, pode ser uma melhoria sobre C em alguns aspectos.
Certamente, quando você está tentando escrever pequenos programas para fazer coisas pequenas,
Python é uma linguagem útil de escolha.
>> E no final da presente seminário, eu espero que você
ser capaz de fazer o escolha em projetos futuros
sobre qual a linguagem é correta de usar, não a idéia
uma língua que é mais corrigir o tempo todo.
Algumas coisas sobre o que o seminário é.
Este seminário não se destina a ensinar-lhe Python a partir do zero.
Python é muito semelhante a C, e eu estou supondo
que você é um estudante CS50, ou alguém com uma familiaridade semelhante com C.
>> Se você é estudante CS50 em torno de problema ajuste 6,
Então você vê um monte de coisas em C, eu vou te dar
as principais diferenças, e algumas das coisas
que fazem Python diferente e especial e útil,
mas eu não estou indo para ir para o que é uma linguagem de programação
e como escrever programas.
No entanto, este seminário vai ensinar você a escrever uma programas em Python
se você é um daqueles poucos grupos.
Mais uma vez vamos ver como você poderia implementar psets--
que deve ser em 1-6 Python-- e fornecer ponteiros
a documentação oficial para referência futura.
A outra coisa que é importante sobre como esta conversa é atribuído,
este vídeo será on-line, cortesia de CS50,
para que você não deve se sentir como você precisa para tomar notas.
Você pode sempre ir para trás e olhar para ele mais tarde como referência.
Além disso, os diapositivos estão disponíveis no momento
neste local, que deveria levá-lo fazer um doc Google.
É uma versão ligeiramente abreviada do que eu estou mostrando na tela.
>> Uma ressalva cuidado antes nós saltar, Python 3
é uma língua diferente do Python 2.
Eles parecem muito a mesma; existem diferenças técnicas muito ligeiras
que vai fazer com que programas escrito em Python 2
não ser capaz de ser executado no ambiente Python 3.
>> O aparelho vem com CS50 Python, por padrão ele usa Python 2.
Você pode verificar isso digitação em sua linha de comando
--version python, que deve saída 2.7.6 no aparelho actual.
Tente Python 3, que faz funcionar no aparelho,
se padrões Python para 2.X.Y, quer por o aparelho ou em suas próprias máquinas.
Você deve substituir Python 3 a qualquer momento nesta conversa que escrevo Python.
Se a sua máquina é executando 2 por padrão, tipo
Python 3, a fim de ser capaz de efectivamente acompanhar e executar essas coisas.
>> Além disso, eu vou apontá-lo em recursos oficiais agora.
docs.python.org/3--~~V cuidado que isso é um 3 e não um 2--
tem referências úteis.
Tutorial irá levá-lo através muito das mesmas coisas
que eu estou fazendo agora, a não ser em forma de texto.
Referência é útil como um referência para a linguagem,
ea Biblioteca Padrão dá você algumas das extensões
com uma funcionalidade adicional.
>> Assim, um primeiro programa Python.
À esquerda temos C padrão, à direita, temos Python.
Você pode ter reconhecido este problema, que é
um dos primeiro problema CS50 em conjuntos, e estes
resolvê-lo com a mesma solução.
Agora, a razão que nós somos olhando para estes lado a lado
é assim que nós podemos olhar para diferenças sintáticas.
Um dos elefantes no quarto que você pode ter notado direita
fora do bastão, é que Python não tem principal função embrulho em torno do código.
Assim, em C, você escrever um monte de arquivos, você ligá-los juntos,
eo programa começa a executar a essa coisa chamada int main.
>> Em Python, você escreve um arquivo que você, executar o arquivo,
o programa inicia a execução no topo do ficheiro.
Por isso, vai começar na parte superior do arquivo
ir para baixo até encontrar outra coisa.
Se ele encontrar uma definição de função, ele não vai realmente executar esse código,
ele simplesmente irá definir a função.
Mas aqui, quando o primeiro programa é n igual a 10,
a primeira coisa que este programa vai fazer é levar esse valor de 10
e configurá-lo em uma variável chamada n.
>> Falando dessa linha, um dos outra coisas- sorry-- este
significa que programas em C, você vai escrevê-los,
você vai fazê-los, que será invocar alguns comandos clang,
e então você vai executar um resultando executável.
Programas em Python, você corre o texto file-- este pode mario.py
ser este arquivo que eu mostrei você-- você executar esse arquivo
e você vai executar, e o conteúdo do mesmo
vai ser executado por o interpretador Python.
Você pode fazer isso em seu IDE.
>> Então, se eu tenho um arquivo Olá, que simplesmente tem este conteúdo.
Este é na verdade o Python 2, não Python 3, por isso não
se preocupar com a sintaxe para agora.
Mas eu vou correr Python, em hello.py, e ele é executado.
>> Outra maneira que eu possa usar Python que Eu não vou lidar com tanta coisa nesta conversa,
é se eu apenas digitar Python, ele me cai em um ambiente onde
Eu posso alimentá-lo linha por linha Python.
Então, aqui, se eu digitar espaço de impressão 'Olá, mundo ".
Escreva entrar.
Ele vai me cuspir isso de volta os resultados aquela linha indivíduo imediatamente.
>> Isto é pode ser útil.
Nesta palestra vou fazer as coisas em slides.
E então você vai ser capaz de seguir ao longo de ambos aqui, ou por escrito
arquivos reais e, em seguida, executá-los.
>> Mas, voltando ao presente código, outra coisa
que você pode ter noticed-- bem, há
duas coisas que você pode aviso sobre esses blocos.
O primeiro, um pouco mais mundano, é que o Python não tem ponto e vírgula final.
>> Semicolons são opcionais em todos os lugares e inofensivo em todos os lugares.
Você pode adicioná-los.
Ele pode fazer as pessoas que escrevem Python para uma risadinha de estar em você
atrás das costas, porque eles não são necessários.
Eles são frequentemente um sinal de que está sendo realizado durante de C. Os designers da linguagem
sinto que é mais claro desta forma e que não é necessário declarar
cada vez que você terminar uma linha.
>> Outra coisa estranha sobre este n é que ele não tem um tipo de anexo.
Uma das peças mágicas de Python-- e eu vou chamá-lo de mágica,
mas há muito motivos técnicos para isso
um dos works-- peças mágicas de Python
é que as variáveis ​​podem expandir ou encolher para conter todos os dados
tipos que você gostaria que eles.
>> Portanto, esta é a 10.
Se mais tarde para baixo Eu atribuído a este n 0.5, levaria que 0,5.
Não importa o que é um int aqui e flutuar lá, qualquer coisa que usa este n
vai, mais ou menos, ser capaz de engole junto se ele fica um desses.
A menos que haja algum muito real razão pela qual não pode usar os dados
digite que n tem atualmente, em que ponto ele vai ficar
entalado e lançar um erro, e esses tipos de coisas.
>> Mas aqui, Python realmente não se importa com o que
que é que eu vou ficar neste sentença, como, você quer isso?
Esta coisa em que?
Sim, é um tipo de coisa.
Vou colocá-lo no final.
Vai ser um problema mais tarde, se alguém que quer usar esse efeito
não pode lidar com isso.
Esta é uma das principais diferenças entre Python e C
que torna mais fácil para escrever grandes programas em C
e torna mais fácil para escrever programa muito pequeno Python.
>> A sintaxe para não é muito diferente no que faz.
É um pouco diferente em como ele é expresso.
Portanto, este é um muito, o que é chamado Pythonic, modo de escrevê-lo.
para linha na gama (N), esta é a gama de números de 0 a N,
inclusive na parte inferior e exclusiva no topo.
Portanto, é de 0 a n-1, que é exatamente o que o código C está fazendo,
exceto que é muito mais fácil olhar para talvez.
>> O bloco em causa é não partiu por chaves,
em vez disso ele é definido off por este recuo.
Então, todas essas linhas são quatro espaços para a direita,
ou como sobre uma largura de elefante.
E esses são os que são vai ser executado no presente para.
Se eu estragar a recuo sobre isso e eu
empurre que volta para impressão o recuo inicial,
que vai deixar a impressão de loop.
Em contraste com C, onde eu realmente aqui precisa mover essa cinta fechada ao redor.
>> Isso significa que você não obter erros que saltam em você porque você
colocar uma cinta no lugar errado.
Isso significa que você obter erros que saltam em você porque você
recuadas uma linha errada.
Por isso, faz recortes super cuidadosa.
Esperemos que você estava sendo super- cuidado com o seu recuo de qualquer maneira,
e por isso este não é que muito mais de um fardo.
>> Mas uma regra básica para Python, e nós vamos ter um par destes
que nós vamos passar por meio o curso da conversa,
é tentar sintaxe naturais antes de olhar qualquer coisa.
Portanto, esta sintaxe, para este número no intervalo,
é muito distinto em termos de estilo.
Muitas coisas em Python vamos ver tomar este formulário.
>> E então se você vir para cima com um novo objeto que você
acho que você deve ser capaz de iterar sobre isso, neste formato,
Acontece que, provavelmente, suporta esse formato.
Nós não estamos indo para ir no fundo de super- os motivos técnicos pelos quais isso é verdade.
>> Mas é uma intuição útil ter quando você está se aproximando programas Python,
que essa coisa é só ir para o trabalho.
Experimente.
Arrancar a linha de comando Interpreter, ver se funciona,
seguir em frente com as coisas, antes de ainda precisa abrir o Google e dizer:
o que é a sintaxe para esta coisa em particular?
Lotes de Python que você poderia descobrir apenas tentando.
>> Este caso é ainda mais semelhante para C, em seguida, as fors são.
Note que não há nenhuma parênteses.
Os parênteses são, novamente, inofensivo, mas desnecessário.
Há dois pontos na extremidade assim como o de loops,
e, novamente, os blocos são relativos recuado em vez de detonar por chaves.
Este resto é para o original nível de recuo,
e seu bloco em causa recuado novamente.
Aqueles trabalhos exatamente como eles fazem em C.
>> Isso é realmente muito muito mesmo.
Mais uma vez, impressão perde um personagem fora de printf Você passa algumas cordas.
Acontece cordas tanto pode ser marcada fora
por aspas simples ou duplas.
Não há nenhuma diferença, excepto que dentro
de aspas simples você pode usar aspas duplas com abandono,
em vez de ter de escapar todos eles.
E dentro de aspas duplas, você pode usar aspas simples com abandono
sem ter que escapar deles.
Se você queria misturar -los, você pode certamente
olhar para cima on-line como fazer isso.
>> Você vai notar que aqui, Eu já passou no final = esta coisa.
Este é um exemplo de um opcional argumento, que é uma daquelas coisas
que suporta Python que torna bastante útil.
Assim impressão realmente tem um monte de argumentos, que são geralmente
definida para o seu padrão valor, mas aqui eu tenho
decidiu substituir o chamado final.
A razão que eu tenho que substituí-lo com uma seqüência vazia
é que de impressão em Python, por padrão, imprime uma nova linha
depois a coisa que você disse isso também.
>> Portanto, este hash é realmente indo para imprimir um hash em uma nova linha.
E se eu não quiser hash para imprimir uma nova linha após isso, então eu tenho que dizer
não imprimir um.
Mas, ainda assim, a uma última coisa que este programa está em falta que se tem é
uma inclusão no topo.
Imprimir é cozida em Python então basicamente que não há nenhum cabeçalho ou módulo
que você precisa incluem, embora se queria
para incluir outras coisas em um script Python,
Eu faria isso em um format-- muito semelhante as palavras são apenas um pouco diferente.
>> Eu mencionei que nós não precisa de um principal aqui,
porque o Python começa execução no topo.
Se eu queria envolver isto em função, I
poderia fazê-lo como eu isto-- diria def nome da função,
argumentos pode entrar aqui e nós vamos ver alguns dos mais tarde, dois pontos,
e depois, novamente, Toda bloco partiu
é o que é o operacional bloquear para essa função.
Portanto, esta é a definição da função.
E há uma declaração, em seguida, para baixo aqui, eu só posso chamar a função.
E, novamente, o programa intérprete, começando no topo,
vai ver isso é a definição.
Ele não será executado até que este chegar aqui, e então é como, oh
agora você chamou, eu acho que eu deveria executá-lo.
>> Uma coisa que é muito comum ver em arquivos Python,
especialmente arquivos Python que são liberados para o público
e desenvolvido e desenvolvido e por-- mantida, é algo desta forma.
Isto é assim porque basically-- Python, você começar no topo
e então você executar até o fundo, Eu se eu só tinha Mario chamou aqui,
em seguida, a qualquer momento eu incluído esse arquivo em outro arquivo, porque eu queria usar
é função de Mario, que seria outro arquivo também têm esta chamada para Mario nele.
E quando eu corri esse arquivo, ele chamaria Mario.
>> Portanto, é possível que eu só deseja executar este se eu realmente
executado este arquivo em particular.
E assim que eu posso quebrar isso em um idioma como este, onde eu digo,
se o nome desta execução ambiente é o principal,
então eu quero fazer essas coisas.
Caso contrário, alguém pode use-- incluir o meu function--
meu arquivo, e apenas para obter o acesso a essas funções
sem ter que executar as coisas que eu quero executar neste arquivo.
Isto é, de novo, opcional mas muito comum.
>> Essas coisas são entirely-- são exatamente o mesmo entre C e Python,
certamente em três.
Eu acho que em 2, o operador de divisão às vezes dá-lo de volta quando flutua
você operado ints, e quer você queria que você ou não.
Mas mais, menos, e os tempos funcionam exatamente como você esperaria,
exceto ao longo de pouco mais tipos.
Então você pode multiplicar por carros alegóricos ints, e esses tipos de coisas.
>> conjunto funciona exatamente da mesma.
Você pode usar dois sinais de igual.
inequals-- maior que, menor que, esses tipos de coisas-
têm os significados que você está familiarizado com eles.
>> Onde C usa esses operadores, Python usa um pouco mais Inglês
aqueles legível.
Então, ao invés de dois, ampersands, você literalmente digitar a palavra "e", "ou"
ou não."
Como em seu se-- em sua instruções condicionais,
Vimos anteriormente que esta sintaxe em C corresponde a esta sintaxe em Python.
E há não muito diferente lá, com exceção de um pouco
de pontuação em torno dos lados.
Mais uma vez, em que C seria mais se, Python usa elif,
mas estes são principalmente mudanças de nível de superfície.
>> Iteração como este é muitas vezes escrita neste idioma em Python.
Você pode fabricar este tipo de coisa com um loop while no exterior
se você quiser, mas você certamente não tem que.
E, novamente, se você queria o imprimir elementos de uma matriz
você pode fazê-lo desta maneira.
Uma das coisas divertidas sobre Python, porém,
é que você não precisa para usar este paradigma,
e você pode usar um um pouco mais elegante.
Você diz que para um em ary.
>> Então, ao invés de ir aqui e correndo ao longo dos índices,
e, em seguida, puxando para fora elementos individuais,
você dizer a verdade apenas para a atropelar os próprios elementos.
E então o que você está fazendo interior pode operar diretamente
sobre os elementos, o que é muito divertido.
E nós vamos see-- usaremos que idioma novo e de novo
como nós caminhamos através de código.
>> Isto é, de novo, um exemplo de algo que eu vou
Python chamar mágica, embora existam razões técnicas muito porque trabalha.
E há coisas que técnicos precisa ser verdade sobre array em ordem
para este trabalho nos bastidores.
A coisa é que a maioria dos tipos que você esperaria que isso funcione
ter tido esta implementada para na língua embutido.
>> Outra coisa que seria bom se isso funcionou em todas as línguas,
mas existem algumas razões por que não pode, imprimir esta string vezes este número.
Acontece que em Python, isso faz exatamente o que você gostaria, que é apenas diversão,
e significa que nós podemos, na verdade, reduzir este programa, novamente mario.c.
Em vez de iteração muito, nós podemos apenas dizer, eu quero um pouco número de espaços,
Eu quero o número de hashes, e alguns hash no final.
E, novamente, nós usamos este formato.
>> Aqui, nós estamos passando em uma variável dessa maneira.
Mais uma vez, nós não precisamos de dizer que tipo de variável é,
ea única vez que vai obter erros é em tempo de execução.
Quando alguém tenta para passar algo em,
ele vai vir para a função muito bem.
Se calçar aqui, porque este não é o coisa que você pode criar intervalos mais,
Vou pegar um erro de execução lá, e eu vou ter de depurá-lo dessa forma.
Mas, entretanto, eu não tenho de ser muito cuidadosos sobre o que
é passado em, tanto tempo como no real execução tudo funciona muito limpa.
>> Eu poderia até fazer isso um pouco mais limpo
usando uma função interna, em particular, em cordas, o que é justificado à direita.
Esta é apenas uma função útil mentindo ao redor da biblioteca.
É na documentação se você ir e olhar para ele.
E eu digo, bem, eu vou ter essa seqüência, algum número de hashes,
e eu gostaria de justificar direito pad ele-- -lo com espaços para ser esse comprimento.
>> Novamente, isto é na documentação, que traz US--
Na verdade, eu vou clicar these-- o que nos leva à nossa segunda regra
para a biblioteca padrão Python-- métodos de função são seus amigos.
E é muitas vezes vale o seu tempo para ir à procura de eu me pergunto
se há uma coisa que só faz isso.
Há provavelmente é.
Se você gostaria de almofada uma seqüência de caracteres, se você
gostaria de aproveitar a volta metade de uma corda, se você
gostaria de pesquisar através de uma corda, se você gostaria de esmagar um par de coisas
com uma corda com vírgulas entre eles,
existem biblioteca padrão funções para fazer isso.
>> E isso torna a sua vida mais fácil se você usá-los
em vez de rolar para fora tudo por conta própria
em cinco linhas de código aqui, cinco linhas de código aqui.
Isso realmente começa em adicionar até tempo real.
>> Uma das coisas interessantes sobre como este é chamado.
Você vai notar que há uma coisa de ponto.
Eu tenho algum objeto à esquerda, e, em seguida, liguei para uma função um ponto.
Este é um dos paradigmas que Python usa métodos para a fixação de objectos.
Vamos falar sobre o que este é muito brevemente, no final,
mas sabemos que podemos ambos operam em coisas por tomar essa coisa dizendo dot
o que quer, ou pelo telefone uma função que leva
esse objeto e alguns outros argumentos.
>> Então, essas são as duas maneiras que as coisas são feitas em Python.
E se um determinado funcionalidade é implementada
neste estilo ou este estilo é algo que você
deve olhar para cima até conseguir um jeito para os quais um que é provável que se enquadram.
Há um mais ou menos coesa filosofia por trás Python
que absorvem principalmente escrevendo um monte nele.
Em algum ponto, o que um desses algo vai ser implementado como
torna-se natural.
Por enquanto, é apenas algo você aprende como você descobrir
cada coisa individual.
>> Então biblioteca padrão funções são seus amigos,
e elas permitem que você escreva coisas que ocupar esse espaço muito em breve,
realmente elegante.
E este é, na verdade, provavelmente mais legível, eu diria, do que o programa C
bem ali.
Para não mencionar o fato de que é tão suma, você pode caber um elefante inteiro
no espaço que temos guardado.
>> Outra coisa, esta é uma implementação de mario que é ponto C, que eu acho que
é o mais curto que você pode obtê-lo.
Ele não tem o get int, mas ele rígido códigos o valor de 10
da mesma maneira que esta não.
Acontece que este aqui relógios em 84 caracteres, ao passo que Python é de 64.
E isso é infinitamente mais legível do que esse lixo aqui.
Assim Python é mais eficiente no espaço.
É um pouco menos eficiente no tempo, mas não por muito.
>> As listas são uma coisa importante em Python.
Nós não vimos eles, mas eles operam como matrizes fazer em C.
Então aqui, você pode declará-los, você pode passá-los em uma coisa.
Agora quadrados detém um matriz dessas coisas.
Mais uma vez, nós não declarados como tipo, mas se sempre tentar usá-lo,
qualquer coisa que você esperaria trabalhar sobre uma matriz de números inteiros
vai trabalhar em uma matriz de números inteiros.
>> Isso é uma coisa que Você absolutamente não pode
fazer em C, porque o memória é tão mãos,
mas é muito fácil de fazer em Python.
Se eu quero a minha matriz para ser maior, eu posso anexar um elemento a ele e ele está bem.
>> O que está acontecendo nos bastidores?
O intérprete vai para fora e obter um pouco de memória,
e talvez ele vai ter um pouco de memória extra,
então eu não, então eu não tenho para realloc cada vez.
Mas quanto mais ter memória que ele precisa?
Isto não são decisões que você tem que fazer,
estas são decisões que os intérprete vai fazer.
>> Aqui vemos gama pode levar dois argumentos,
mas ainda vai ser inclusiva do topo para que adicionar um lá.
Esta é uma expressão, que é uma ainda mais maneira inteligente de escrever coisas como esta.
É chamado de lista de compreensão, e aqui o que estamos dizendo
é que eu gostaria de colocar em i quadrado para cada valor de i nesta gama.
Essa coisa à direita poderia ser outro array, e esta coisa do lado esquerdo
ser qualquer função específica que levaria em i como uma variável
e me dar algum resultado.
>> O que eu vou fazer é, Eu estou indo para construir
uma matriz que é todas essas coisas para cada valor nesse intervalo.
E isso é super elegante, super curto, e é muito claro o que isso significa.
Esta é uma das mais coisas- este é novamente,
um de-- muito emblemático da razões que pessoas como Python.
Se você gosta de programação como este, então Python
é uma linguagem que você gostaria de aprender.
>> E, novamente, há técnica razões por que isso funciona.
Mas, tanto quanto nós estamos preocupados, nós mais ou menos não me importo.
>> Então, se você quiser imprimir listas, algumas das mesmas expressões são úteis.
Para i neste intervalo, nós poderíamos Índice através de todas as coisas
e, em seguida, imprimi-los todos para fora.
E você vai ver len aqui.
Se você já quis começar o comprimento da matriz, que é
muito fácil em Python, é muito difícil em C.
Isso imprimir exatamente o que você esperaria que ele.
Poderíamos também, como vimos antes, iterar sobre os elementos em array
diretamente, e depois é só falar sobre eles, ao invés de ter o índice
de volta para a matriz de cada vez.
>> E isso é uma coisa que você pode fazer.
Assim, em C, se você pedir algo como este, impressão diria,
isso é um array de inteiros.
Isso definitivamente não é um corda, eu não posso imprimi-lo.
Python mais ou menos não se importa.
É como, se existe uma maneira que eu poderia transformar isso em um fio?
Sim, eu vou fazer isso.
E então eu vou apenas imprimir isso.
Isto significa que você pode fazer coisas como-- estes
são a maioria das partes duras do jogo de quinze anos, por escrito
muito brevemente em Python.
>> Você verá que não há um pouco de-- aqui
Eu lançou um inteiro para uma cadeia, e eu tenho que fazer isso manualmente.
E eu estou indo para adicionar -lo para outra cadeia,
ou de outra forma Python fica confuso.
Mas se quando você está adicionando uma string para um inteiro,
sou eu supor para obter um inteiros de volta ou uma seqüência de volta?
Mas, novamente, se você apenas chamar str em uma coisa,
e poderiam, de qualquer possível mundo ser convertido em uma seqüência de caracteres,
ele provavelmente será convertida em uma string.
>> Aqui, vemos o uso de aninhada compreensão da lista
no lado esquerdo, alguns de indexação, que é exatamente como você estaria acostumado com isso,
e alguns a impressão de coisas.
Mais uma vez, nós definimos alguns funções e vamos chamá-los para baixo
na principal quando nós realmente obter o arquivo.
retorno funciona exatamente como você deseja espera de trabalhar com C. Localizar,
podemos configurar coisas como isto-- aqui está lista de compreensão
há uma atribuição a uma variável, e nós podemos realmente fazê-lo ainda mais fácil.
Nós não precisamos de escrever pesquisa, porque built-in para o idioma
é se essa coisa é nessa matriz.
Retornar true, senão retornar falso.
Então essa é a totalidade do achado.
>> A totalidade da espécie envolve chamar espécie,
é-- que há implementações desta construído em certas bibliotecas C.
Se você gostaria deste espécie de trás, você
pode substituir esse opcional argumento em sentido inverso com uma verdadeira.
E se você gostaria de classificar mais cordas, que é built-in também.
>> Portanto, este não é para dizer que estes são coisas que você precisa fazer todos os dias,
mas a idéia é que este é a filosofia do Python,
que todas essas coisas que você gostaria tipo de querer fazer são built-in.
E a maioria das funções padrão, tão tipo, comprimento, qualquer que seja,
suporta a entrada de mais logicamente sensato.
Você chama len em uma disposição a mesma forma você chama len em uma corda.
Você multiply-- você classificar cordas Da mesma maneira você classificar matrizes.
>> A maioria das funções padrão que as pessoas constroem,
e mais third-party bibliotecas que as pessoas
construir, porque eles estão emulando o desenho da biblioteca padrão,
pode ser chamado em tudo o que você é como, por que não esta apenas trabalhar,
em C. Mais ou menos, ele vai trabalhar em Python
porque as pessoas trabalham por trás a figura o que é uma coisa e depois operar
de forma adequada sobre ele.
Então, novamente, a formação técnica, mas torna a nossa vida mais fácil como programadores.
>> Então aqui está o arquivo I / O. arquivo I / O tem muitos pequenas coisas que tornam mais complicado,
e por isso há recursos on-line, mas em poucas palavras,
você chama aberta em um arquivo nome com um tipo particular.
Assim que é ler, ler e escrever, escrever ou acrescentar.
Você lê um certo número de caracteres fora e imprimir esses,
você vai ter Olá!
Quero dizer, como este arquivo teve Olá!
Nele, ligue para ler, eo que você vai receber de volta
é uma cadeia que tem tudo do resto da matriz,
ou a totalidade do resto do ficheiro.
Se você ligar para ler de novo, você está no final do arquivo,
e assim você não conseguir qualquer coisa e assim você vai fechar.
Novamente, isto é, em vez de .close arquivo de perto, como seria em C.
Isto é mais ou menos porque é um f coisa, e você gostaria de f para fechar.
Mas arquivo básico E / S não é particularmente complicada.
Novamente, se você deseja abrir um arquivo, se você gostaria de ler uma linha particular,
você pode sair de particular linha-- há built-ins para isso.
Se você gostaria de escrever um coisa, você pode escrever isso.
Se você gostaria de escrever out individual mordidas, você pode escrever aqueles.
E se você gostaria de iteração sobre as linhas de um arquivo
individualmente, como fizemos em um pedaço de há algumas semanas, você pode fazer isso.
Mais uma vez, a maioria dos objetos que você gostaria gostaria de ser capaz de interagir sobre
suporte a iteração sobre eles.
Em Pythons, um arquivo é talvez uma coisa que Eu gostaria de iterar linha por linha.
Se fosse um dicionário de palavras e eu estava
tentando fazer com que aqueles indivíduo palavras para fora, em seguida, dentro deste loop,
linha que vai ser cada palavra de cada vez e este
vai ser executado para cada linha no arquivo até que o fim do ficheiro.
E, novamente, se eu impresso cada linha, as linhas vêm com novas linhas,
assim que eu estou definindo a final de volta para uma coisa como esta.
Então eu ia ficar o conteúdo do meu arquivo.
>> A segunda coisa que atua em algumas maneiras, como listas, e em alguns aspectos
como algo substancialmente mais poderoso,
são dicionários, que são realmente legal de usar, mas são basicamente de hash
mesas disfarçado.
Você criar um usando exatamente dois personagens, o que é impressionante
se você tentou implementar o tabela de hash para o seu conjunto de problemas,
você sabe muita dor que pode ser.
Mas as pessoas têm feito , e fez isso tão bem,
que você não tem que preocupar mais.
>> Em seguida, você pode inserir coisas individuais.
Tables-- Hash ou dicionários particularmente não
importo com o que você está armazenando em si.
Portanto, se algumas entradas são números, e algumas entradas são listas,
se algumas entradas são outros dicionários, e algumas entradas são strings,
Python não faz muito cuidado.
>> Novamente, se você entrar nele esperando uma corda eo que você recebe de volta
é uma matriz, isso é problema seu.
E talvez a culpa é de quem Pensei que era colocar as coisas
no dicionário, talvez que era você.
Se isso era alguém outra coisa, espero que eles eram
bem comportado sobre o que ia no dicionário
e não deixou qualquer armadilhas para que você possa cair.
>> Mas as funções padrão será dar-lhe de volta as coisas bem-comportado.
É o que dizem isso retorna cópia de um dicionário de cordas,
então tudo o que você está indo para sair é uma string.
Se você fizer alguma deste e viagens lo, bem, isso pode estar em você.
Python certamente lhe dá o suficiente corda para se enforcar, se você gostaria.
Agora podemos imprimir indivíduo elementos deste e isso retorna
exatamente o que você esperaria.
Exatamente o que você esperaria, eu acho, é uma frase que eu estou usando um monte,
mas isso é mais ou menos como Python funciona.
Se você pedir uma coisa que não é ele, Python vai jogar fora um erro
e ele vai desistir de você para fora de qualquer programa que você estava.
Ele realmente vai imprimir mais informações do que isso,
ele vai apontar vocę-- ele vai adicionar uma linha, e assim.
>> E, novamente, talvez nós queremos iterar sobre dicionários
e encontrar todas as coisas nele.
Aqui nós estamos interagindo sobre duas coisas ao mesmo tempo.
E assim nós vamos fazê-lo com uma chave, o valor, mas, em seguida, imprimir tudo isso.
>> E se quiséssemos cast-- se realmente correu este,
teríamos alguns problemas porque on-- quando fomos com David,
não poderia add-- se não o fizéssemos lançá-lo para uma string em primeiro lugar,
nós não poderíamos acrescentar que matriz de strings em uma string.
Mas se nós expulsá-lo para um seqüência, temos algo
como este, que é talvez o que nós gostaríamos de ler.
>> E este é o speller.
Acabamos de ler nas coisas.
Assim, podemos ler em palavras individuais como linhas.
Nós cortar a última coisa, então cólon menos 1
chomps fora a última coisa que nós-- o último caractere de uma string.
Vamos dizer.
OK, cada um deles recebe inserida neste dicionário,
mapeamento de um valor de 1.
Nós particularmente não se preocupam com esse,
mas é só lá para dizer, oh bem, esta coisa que eu vou colocar no dicionário.
Porque depois que nós somos vai fazer é que estamos
vai dizer, bem, se é no dicionário de todo.
>> Mais uma vez, esta verificação para adesão é até operacional
usando um completamente diferente algoritmo que ele vai em uma lista,
mas nós chamá-lo da mesma forma, que é um pouco desse revestimento de açúcar Python
coisas de modo que eles são mais fáceis de usar.
E, novamente, temos visto coisas assim antes.
Este é basicamente encontrar, ou é exatamente a mesma sintaxe
como encontrar, mas está operando ao longo de um estrutura completamente diferente.
E nós particularmente não me importo.
Portanto, estas são as coisas que você foram convidados a implementar para ortográfico.
A este ritmo, vamos chegar mais ou menos todos os Série de Exercícios feito.
>> AUDIÊNCIA: Assim que basicamente só volta
grafado incorretamente como se isso não acontecer combinar algo no dicionário?
ROSS Rheingans-YOO: Sim, sim.
E assim, esta é uma adaptação de um conjunto de problemas
que lhe pede para fazer exatamente isso.
>> AUDIÊNCIA: Porque é que a linha menos um lá?
ROSS Rheingans-YOO: Então, quando você está interagindo
sobre um arquivo pedindo por linhas, as linhas
vêm com um caractere de nova linha no final de ele-- a menos 1
é apenas para fazer compras aqueles fora.
E isto é particularmente flexível forma de indexar as coisas.
Então se você tem uma seqüência de caracteres, e você gostaria, bem, eu sou
vai começar em caráter três e eu estou indo para ir até o fim.
3 cólon vai fazer isso por você.
Se você é como, eu quero começar pelo começando e ir para o último menos 1
caráter, dois pontos menos 1.
E se você quisesse ir de do terceiro para o primeiro negativo,
então você diria 3 menos 1.
>> Além disso, se você deseja indexar em coisas contados a partir da parte traseira,
você apenas no índice com números negativos.
E porque, onde C explodiria ou talvez
alimentá-lo outra memória que você não tem acesso, ouvir que você pode dizer menos 1
significa o fim, mas um caractere em uma seqüência.
>> Os módulos são version-- são análogos de bibliotecas em C
e são úteis para um monte de coisas.
Um monte de coisas que você gostaria de fazer em Python,
além de simples manipulação de variáveis,
você quer ligar para o bibliotecas maiores, com maior
interfaces e mais capacidades para interagir
com outras partes do mundo.
sys é um daqueles com um monte de ferramentas
que são úteis para interagir com o próprio sistema
e importá-lo como sys importação.
>> Há mais de documentação que, o que você poderia ir aqui,
ou você pode encontrar no Google por googling sys Python.
Você digita entrar.
O primeiro link vai ser a documentação em Python 2,
o segundo link vai ser o Python 3 documentação.
>> E se nós escrevemos para fora um arquivo que olhou como isto-- Se em particular, estamos
olhando para operar sobre argumentos de linha de comando,
como nós aprendemos a fazer muito no início desta classe.
Isto não é difícil. Você pode sair argv,
que é uma daquelas coisas que é implementado pela sys.
Não é built-in para o pacote base, mas, novamente, você
pode estendê-lo por meio da importação que a funcionalidade de sys.
Você vai chamá-lo de sys.
tanto faz.
Aqui há argv.
Não há realmente nenhuma argc em sys, porque você
pode obtê-lo tão facilmente chamando len.
Nós, então, impressa que fora, então nós correu em nosso echo-args.py terminal.
Nós voltar uma matriz, que é este primeiro argumento.
Mais uma vez, esta é argv 0, que é a nome da coisa que foi chamado.
Se nós chamamo-lo com adicional argumentos, teríamos aqueles de volta.
Esta é uma maneira de começar argumentos de linha de comando.
Se você quiser bandeiras Where You Turn sobre coisas particulares ou substituição
um determinado padrão, argparse é seu amigo.
E mais uma vez você achar que on-line em python argparse no Google.
>> Há um par de utilidade módulos que você está usando
e, novamente, se você gastar algum tempo desta língua importação jsons
para a leitura de dentro e para fora de JSON arquivos, não é complicado.
Você abre um arquivo, você chamado json.load naquele arquivo e você recebe de volta uma coisa.
O que é essa coisa?
É um objeto JSON.
Onde tem que json matriz, o Python tem arrays.
Onde tem que json arrays associativos, Python de
dicionários, cordas, e números, e assim por diante.
Você deseja despejar isso, você abrir um novo arquivo, você chama de despejo,
e cargas e lixeiras para entrar e sair das cordas.
>> Da mesma forma, é chamado pickle basicamente da mesma interface.
É útil se ligeiramente mais você está despejo objetos Python.
Então, se você sempre quis para salvar uma versão do status atual
de uma variável para um futuro executar do seu programa,
pickle é Python de biblioteca para fazer isso.
>> Se você tem qualquer tipo de variável que pode ser escrito para fora
em palavras como e personagens e bytes-- como este dicionário,
poderíamos escrever para baixo, nós poderia escrevê-lo como
como um objeto JSON, que foi literalmente esses personagens.
E então seria muito fácil para um ser humano para abri-lo up-- abrir
e lê-lo.
Se não o fizéssemos particularmente se preocupam com os seres humanos lê-lo,
poderíamos embalar ainda mais eficiente em formas que poderia mais tarde ser desembalado
ou que poderia mais tarde ser inflado.
E isso poupa 80% do espaço que os objetos poderiam
tomar se você escreveu-los longhand.
>> Você chama pickle muito o mesmo maneira-- despejo, carga,
e então você pegue suas coisas de volta.
Então, se você está escrevendo muito programas em Python curtas que
deseja salvar estado, e em seguida, ler los de volta mais tarde, coisas como esta
são seus amigos.
Que você poderia muito despejá-los facilmente como JSON.
A maioria dos objetos Python pode despejar o json
se há alguma esperança de que estruturalmente eles poderiam ser representadas dessa forma.
>> Estes são apenas a ponta do iceberg em módulos que são úteis.
Então sys, os, multiprocessamento, são tipo de burros de carga básicas para as coisas
precisamos interagir com o sistema operacional do sistema de arquivos.,
como os.isfile, os.isdirectory, os.makefile, estes são seus amigos.
Se você quiser interagir com um determinado tipo de arquivo,
json, pickle, csv.
Se você quiser interagir com web páginas, o urllib para obter http
Páginas. bs4-- BeautifulSoup-- é um analisador maravilhoso para html.
Você executá-lo em um html e você obter esse objeto matriz aninhada agora,
que você pode atravessar mais lookin, como com apenas procurando
se, é, em, o que é fantástico.
>> Há um monte de pacotes para running--
para fazer particularmente Mathy coisas.
Então, se você deseja multiplicar, inverter, transformar matrizes,
numpy é usado por pessoas todos os o mundo por isso.
scipy é ainda mais útil ferramentas nessa direção.
aprendizado de máquina sklearn--, processamento de linguagem natural,
Super material útil, recebe implementado em Python todo o tempo.
>> E, novamente, leva um pouco mais tempo para write-- sorry,
demora um pouco mais para ser executado, mas a razão que os engenheiros reais tendem
uso Python é porque você tende a ser bloqueada em você escrever o código, em vez
do que o seu computador executar o código.
Então, se você estiver indo para escrever um programa, que muitas outras pessoas
vai usar para sempre, como o Linux, você
pode escrevê-lo em C. Se você fosse vai escrever um motor de computação,
você pode escrever em Python se você precisava para mudá-lo a cada dois meses.
Algumas pessoas escrevem-no em C, porque eles são assim.
>> Então nós vimos import sys como uma maneira de fazer as coisas
de obtenção de módulo em seu programa.
Você também pode importá-lo como um apelido, se você gostaria.
Novamente multiprocessamento é uma dor de digite a cada vez, de modo que importar como mp
e, em seguida, a qualquer momento você usá-lo no programa,
você vai dizer mp.process, ou o que você tem.
Se você gostaria de importação apenas uma única coisa,
assim urllib tem uma coisa chamada pedido, assim você pode simplesmente importar que.
Mais tarde, você não vai invocá-la como urllib.request, mas apenas como pedido
por si próprio.
>> E você pode importar tudo a partir de um módulo se você gostaria.
Este não é um bom ocasionalmente idea-- Isso geralmente não é uma boa idéia, na verdade.
Porque você very-- porque se alguma coisa nesse módulo tem um nome que você
queria usar em outro lugar em seu programa, você não pode.
>> E nem sempre é óbvio que esse é o caso.
De modo a certificar-se de que o que estava fazendo era seguro,
você precisa abrir-se o módulo e ver tudo
dos nomes que acabam em há-- todas as funções,
todas as variáveis que vivem nesse módulo,
porque você está trazendo todos -los em seu namespace local.
>> Então, as pessoas fazem isso.
Recomenda-se geralmente que você não faça isso.
Mas as pessoas fazem isso todos o tempo, porque eles são
preguiçoso e não quer digitar mp.
nada, nunca.
>> Toda essa conversa sobre módulos traga-me em torno de uma pequena palestra
de como você projetar programas em Python.
O primeiro passo é verificar para ver se qualquer outra pessoa já tenha feito a coisa,
ou feito 90% da coisa.
Provavelmente, eles provavelmente têm, e você devem ir buscar as suas coisas e executar esse.
Ou escrever um wrapper em torno dele para adaptá-lo à sua finalidade.
É só depois que tem não que você gostaria, em seguida,
vá em frente e começar a pensar sobre write-- como você iria colocar essa coisa juntos.
Há um monte de coisas lá fora, e isso é
um dos mais útil coisas sobre Python.
Tal como a linguagem é elegante, o idioma
é fácil de usar, mas também porque é tão elegante e fácil de usar,
as pessoas têm usado para uma muito tempo e não há um monte de coisas
lá fora, que você pode aproveitar para o seu próprio uso.
>> Assim última regra de Python é, alguém pessoa já foi provavelmente escrito
um módulo para que, alguém já tem
provavelmente escrito uma biblioteca para isso.
Antes de tentar fazer uma coisa, olhar para ver se ele já foi implementado.
Não é tão difícil.
Todos os módulos que eu coloquei para cima antes, talvez com uma única excepção,
vem pré-instalado em todos os instalação padrão do Python.
E assim, com uma chamada para importar o que quer, você
tem todas as funcionalidades Na ponta dos seus dedos.
>> Começando a encerrar este conversa, há algumas coisas
que eu deixei como caixas pretas e tipo de encoberto,
e há algumas mentiras brancas que eu tenho disse que por uma questão de honestidade,
Eu vou pelo menos no ponto aqui, mesmo se eu não vou
Super ir profundamente em todos eles e suas explicações técnicas.
>> Um monte de coisas que eu tenho chamado de magia
é o que as outras pessoas chamariam programação orientada a objeto.
Então há muitas coisas- portanto as variáveis ​​não são muito frequentemente
bytes simples sentado, memória, mas são muito complicadas
objetos que têm interno Estado sobre as funções e os lotes
variáveis ​​ocultas, de lotes de funcionalidade oculta, que
permite que você transformá-los em cordas, que lhe permite interagir sobre eles.
E se você está writing-- ea razão que eles
tem toda essa funcionalidade rica é porque os pessoas--
os arquitetos da language-- ter ido
através e para cada padrão objeto, colocar na funcionalidade
Dizer isto é como este é como isso vai funcionar
se alguém quiser iterar sobre ele.
>> Então, tudo o que alguém poderia possivelmente querer para repetir,
foi escrito em lógica manualmente sobre a forma como você é
deveria interagir sobre esse objeto.
Tudo o que você poderia possivelmente querer despejado em uma seqüência lógica tem escrito.
Esta é a função que você chama se você deseja despejar isso para uma string.
É por isso que você pode chamar len sobre as coisas, este
É por isso que você pode chamar para dentro, este é por que você pode chamar se a par de tudo
que você iria querer, porque aqueles todos estão carregando com eles,
o know-how técnico para fazer isso.
>> Isso é algo que eu sou Super não vai entrar.
Mas para a coisa na lista é sutilmente diferente do estilo C para loops,
e você pode ler tudo sobre isso em internet, se você estiver interessado.
Há um lado escuro para todos a isso, que eu mencionei,
então há duas coisas.
A primeira é que orientou este objeto programação adiciona muita sobrecarga
para coisas aleatórias, assim você acaba utilizando-se muito mais memória;
você acaba usando um pouco mais tempo do que você faria de outra forma.
O outro-- mas o mais insidiosa lado escuro a esta
é que, se as coisas simplesmente agir como você quer que eles
sem você ter que pensar super difícil sobre se este deve ser um int
ou se deveria haver um flutuador, pode ser que até aqui
você produz um int, mas aqui você pensar, mas eles vão always-- sorry,
pode ser que aqui você produz um flutuador,
mas quando você começa a segunda parte de seu programa, você está pensando,
oh bem, mas eles passe-me sempre um int.
E se não o fizerem, é possível que você entalado em algum lugar,
se você tentar usar isso para índice em uma matriz, ou o que você tem.
>> Então, um do real coisas úteis sobre C é
força-o a pensar realmente rígido antes de fazer any--
antes que você traga qualquer variável à existência, como o que
é o tipo desta variável.
E vai ter que tipo para todos os tempos.
>> Isso não é verdade Python, e na verdade, você
can-- se você é apenas tipo de vai de ouvido,
e você tomar algumas decisões uma forma em um lugar,
e algumas decisões um maneira no outro lugar
sem colocar material suficiente atrás as cenas em outro lugar
para pegar as coisas corretamente, você pode obter alguns erros muito estranhos.
E o programa pode continuar a correr para um tempo muito longo, porque é
fazendo um monte de trabalho para dizer, bem esta coisa poderia funcionar dessa maneira,
então eu vou correr dessa maneira.
>> E, na verdade, o facto de ele empurra transmitir através de um monte de pequenos erros
significa que, muitas vezes, quando na verdade, um erro é má
e você realmente deseja corrigi-lo, ele acaba milhas away-- o programa
acaba parando milhas de distância a partir de quando você tinha o seu erro.
E assim uma coisa que gostaríamos programas para fazer, uma coisa sometimes--
que gostaríamos programas que fazer quando estamos depurando
é falhar e falham muito alto rapidamente quando algo dá errado.
>> Python é muito ruim nisso.
Python é muito bom em não falhando e rolando para a frente
através de coisas inesperadas.
Portanto, este é útil para quando você está escrevendo pequenos programas.
Quando você ficar complicado erros que às vezes
Demora muito tempo para provocá-los.
>> Portanto, há um lado escuro para todos deste, como ele simplesmente funciona.
Ele simplesmente funciona como você esperaria que ele.
Só que quando isso não acontece, você acaba em um lugar completamente diferente
e tentando descobrir onde que foi que você deu errado.
>> A coleta de lixo é-- assim uma coisa que você vai notar
é que qualquer uma dessas coisas que Eu trouxe em existence--
essas matrizes, estes dicionários, estes objetos, estes files-- nunca se libertou.
Não houve chamada para livre em qualquer um essa conversa.
E isso foi no lado do C o, porque nós nunca entrou essas coisas.
>> Mas em Python-lado, não é livre.
As coisas ficam automaticamente liberado quando Python
acha que você não está olhando para eles.
É realmente bom não liberando coisas que você ainda pode possivelmente estar a olhar para,
mas isso significa que se você fosse vai alocar este grande coisa,
e você é como, oh Eu sou feito com ele agora,
é difícil dizer Python que você é feito com isso agora.
>> Às vezes você pode definir essa variável a ser nenhum,
e, em seguida, espero que, eventualmente, o coletor de lixo
vem através de e limpa-lo.
Mas, novamente, você não tem controle sobre isso.
E uma das razões que as pessoas usam C para realmente desempenho coisas críticas,
É esta capacidade de realmente sabe quando a memória é alocada
e quando é libertado, e têm um monte de controle sobre dizendo:
Eu estou usando não mais memória do que eu preciso.
Que é algo que Python não é tão grande no.
AUDIÊNCIA: Posso fazer uma pergunta?
O que você entende por falhar em voz alta?
>> ROSS Rheingans-YOO: Então se algo está acontecendo de errado
e você está na depuração modo, você faria muito frequentemente
quer que seu programa para lhe dizer onde exatamente está errado,
e não apenas discretamente parar de correr.
Mas você, na verdade, para imprimir fora todos os tipos de informações sobre
como, aqui estava presente.
Essa coisa aconteceu Se você estiver imprimindo um wen-- se você estiver executando um server-- web
>> AUDIÊNCIA: [inaudível]
>> ROSS Rheingans-YOO: Sim, se você está executando um servidor web,
às vezes é ruim se você estiver sempre descartar erros,
e você está dizendo, bem que não funcionou.
Eu vou parar.
Eu só vou ignorar lo e mantê acontecendo.
Porque então você pode entrar em centenas desses erros e não vê-los.
>> Seria certamente útil para fins de depuração
se cada vez que seu servidor web fez uma erro, você tinha registros duráveis ​​do que isso.
Talvez você ainda deseja que o programa para parar, para que esses registros
Não fique enterrado sob coisas.
Mas, novamente, isso é no modo de depuração.
>> Muitas vezes, no modo de produção, o mundo é um pouco diferente.
E em pequenos scripts que eu estou correndo, onde a única coisa que eu disse para fazer
pode ser apenas um pouco fora do que eu gostaria que ele faça,
em seguida, tipo de empurrar através de erros é algo que você pode querer.
E, nesses casos, certamente Python realmente ganha seus começos.
>> A última coisa que eu não falar isto-- em que eu não falar sobre
mas pode ser realmente irritante o primeiro vez que você tem um desses erros,
ea segunda e terceira e quarta vez que você tem um desses erros.
Python, eu mencionei que ele usa o espaço em branco
para lhe dizer o nível de recuo e quais blocos funcional que você está,
trata tabulações e espaços de forma diferente.
Então, se você guia sobre quatro, e, em seguida, a próxima linha tem quatro espaços,
mesmo se elas aparecem como o mesma quantidade em seu editor,
Python não tratá-los da mesma.
>> Na verdade, trata Python guias e espaços como óleo e água.
Eles são apenas coisas diferentes.
Não há especial comprimento que é um separador,
por isso não é como um guia é igual a 8 espaços, e assim que você iria ficar em torno dela
Aquele caminho.
Como, quando se diz, o que nível de espaço em branco eu estou,
ele está realmente à procura de um padrão de espaços e tabulações.
E assim, a melhor maneira de lidar com isso é a utilização de espaços sempre todo o tempo.
>> E, de fato, no Cloud9 IDE e do CS50 IDE,
a tecla tab inserções quatro espaços em vez
de um guia, que é super útil.
Embora novamente, se você escreveu um Python programa com guias que seria bom,
é só se alguém entrou e tentou adicionar
uma única linha ao seu programa que tinha quatro espaços para cada guia,
ele iria quebrar.
E ele iria quebrar de uma forma que realmente não é visível.
Embora o erro real mensagem que ele lança
tem a ver com o novo travessão não esperado aqui,
ou-- se ele está falando travessões e parece que ele está errado,
provavelmente é porque há um problema tab-espaço.
Eles ainda estão enfurecendo para depurar.
A maior em toda Nesta palestra, o que eu não fiz
chegar porque é realmente um complicado, tema sutil,
e não era necessário fazer qualquer das coisas que fizemos até agora,
são um conceito chamado de tuplas.
Eles estão lá muito parecido com o matrizes que você não pode modificar.
Eles são utilizados em todo o lugar, porque eles são úteis para muitas coisas
matrizes que não são úteis para.
>> Mas se você gostaria de fazer uma matriz, e em seguida, o intérprete prometo que você
nunca vai querer modificar esse coisa-- na verdade, se você quiser modificar,
você vai fazer um novo com o novo valores em ele-- esses são tuplas.
Em vez de produzir los com colchetes,
você produzi-los com parênteses.
Por que você usaria essas coisas, é um pouco de uma pergunta. .
A única coisa que eu vou dizer sobre isso é que você
pode usar como tuplos índices de dicionários.
Você não pode usar matrizes como índices de dicionários.
E por que é, novamente, técnica e Eu não vou correr para ele.
>> O pset que eu não toquei em nesta conversa é pset6.
Então aqui está como você 'd implementar um-- aqui
Como você poderia implementar pset6 em Python.
Tendo em mente o Python ciclo de design, a primeira coisa
que você faz quando você está programas de escrita de verificação é
para ver se alguém tem feito isso já.
>> Na verdade, se você quiser para serve-- Apache 50
faz isso aproximadamente, exceto que ele não vem
padrão instalado em máquinas Linux.
Python faz, eo Python servidor http simples faz tão bem.
Se você está sempre em uma máquina Linux, ou fora Cloud9 IDE de CS50
e você gostaria de servir a esta corrente diretório para um porto particular,
python-m SimpleHTTPServer porto serve isso.
Você também pode importar o servidor http simples
e ele tem um monte de funcionalidade se você quiser personalizá-lo, ou alterá-lo,
ou são executados ele-- aproveitá-la para executar seus próprios serviços de servidor.
>> Então, isso é Python em poucas palavras.
E isso tem sido CS50.
Obrigado.