ROSS RHEINGANS-YOO: Ciao, sono Ross.
E questo è un seminario CS50.
Essa vi porterà dalla programmazione in C per la programmazione in Python.
>> Python è un linguaggio di scripting.
E 'in gran parte come C nella sintassi, anche se alcuni
dei dettagli tecnici di come che la sintassi viene eseguito
sono leggermente diversi.
E 'meno potente di C in qualche modo.
E 'meno espressivo per dove esattamente nel vostro computer
memoria viene disposto, come viene disposto,
quando diventa la libertà, e questo genere di cose.
>> E 'più utile di C, in qualche modo, perché è più facile da programmare in.
La lingua è, in una certa persone, più intuitivo.
E davvero, l'obiettivo è per che sia più veloce per programmare
e potenzialmente più lento da eseguire.
>> Ora, se ci pensate la quantità di tempo
hai speso per il vostro ultimo scrittura set problema
il codice contro la quantità di tempo che passate
sul vostro ultimo problema impostare l'esecuzione di codice,
ci si immagina che la lingua che era due volte più veloce di scrivere,
e due volte più lento per l'esecuzione, potrebbero un miglioramento rispetto C in qualche modo.
Certo, quando si sta cercando di scrivere piccoli programmi di fare piccole cose,
Python è un linguaggio utile di scelta.
>> E alla fine di questa seminario, spero che
essere in grado di rendere il scelta in progetti futuri
su quale lingua è corretto da usare, non l'idea
che una lingua è più correggere tutto il tempo.
Un paio di cose su ciò che il seminario è.
Questo seminario non intende insegnare Python da zero.
Python è molto simile a C, e sto assumendo
che sei uno studente CS50, o qualcuno con una familiarità simile con C.
>> Se sei studente CS50 intorno problema set 6,
Così avete vedere un sacco di cose in C, io ti do
le principali differenze, e alcune delle cose
che rendono Python diverso e speciale e utile,
ma io non ho intenzione di andare per quello che un linguaggio di programmazione è
e come scrivere programmi.
Tuttavia, questo seminario insegnerà di scrivere un programmi Python
se siete uno di quei pochi gruppi.
Anche in questo caso vedremo come si implementa psets--
che dovrebbe essere 1-6 in Python-- e fornire puntatori
a documentazione ufficiale per riferimento futuro.
L'altra cosa che è importante su come viene assegnato questo discorso,
il video sarà on-line, per gentile concessione di CS50,
quindi non si dovrebbe sentire come è necessario prendere appunti.
Si può sempre tornare indietro e guardare in un secondo momento come riferimento.
Inoltre i vetrini sono disponibili in questo momento
in questo sito, che dovrebbe condurremo fa un documento di Google.
Si tratta di una versione leggermente abbreviata di quello che sto mostrando sullo schermo.
>> Un avvertimento attento prima saltiamo in, Python 3
è una lingua diversa da Python 2.
Sembrano un sacco lo stesso; ci sono lievissime differenze tecniche
che causerà programmi scritto in Python 2
non poter essere eseguito in Python 3 ambiente.
>> L'apparecchio è dotato di CS50 Python, di default che utilizza Python 2.
È possibile controllare questo digitare la riga di comando
python --version, che dovrebbe uscita 2.7.6 sull'apparecchio corrente.
Prova Python 3, che fa lavorare nell'apparecchio,
se default Python a 2.X.Y, sia su l'apparecchio o sui tuoi proprie macchine.
È necessario sostituire Python 3 in qualsiasi momento in questo discorso che scrivo Python.
Se la macchina è corsa 2 di default, tipo
Python 3 per poter effettivamente seguire ed eseguire queste cose.
>> Inoltre, ti segnalo te in risorse ufficiali ora.
docs.python.org/3--~~V attento che questo è un 3 e non un 2--
ha riferimenti utili.
Tutorial vi porterà attraverso gran parte delle stesse cose
che sto facendo ora, se non in forma di testo.
Riferimento è utile come riferimento per la lingua,
e la libreria standard fornisce alcune delle estensioni
con funzionalità aggiuntive.
>> Quindi un primo programma Python.
Sulla sinistra abbiamo serie C, sulla destra, abbiamo Python.
Si potrebbe avere riconosciuto questo problema, è
uno del primo problema mette in CS50, e questi
risolverlo utilizzando la stessa soluzione.
Ora, la ragione per cui siamo guardando queste affiancati
è così possiamo guardare differenze sintattiche.
Uno degli elefanti nella stanza che potreste aver notato destra
fuori del blocco, è che Python non ha funzione principale d'involucro intorno al codice.
Quindi, in C, si scrive un gruppo di file, è collegare insieme,
e il programma inizia l'esecuzione in questa cosa chiamata int main.
>> In Python, si scrive un si file, eseguire il file,
il programma inizia l'esecuzione nella parte superiore del file.
Così sta andando per iniziare nella parte superiore del fascicolo
scendere fino a trovare qualcosa di diverso.
Se trova una definizione di funzione, non sarà effettivamente eseguire quel codice,
sarà semplicemente definire la funzione.
Ma qui, quando la prima programma è n è uguale a 10,
la prima cosa che questo programma farà è prendere questo valore di 10
e metterlo in una variabile chiamata n.
>> Parlando di quella linea, uno dei altro things-- sorry-- questo
significa che i programmi C, bisogna scrivere di loro,
ti farli, che sarà richiamare alcuni comandi Clang,
e poi si incorrerà un risultante eseguibile.
Programmi in Python, si esegue il testo file-- questo potrebbe mario.py
essere questo file che ho appena mostrato you-- si incorrerà quel file
e ti eseguire, e il contenuto di esso
sarà eseguito dal l'interprete Python.
È possibile farlo nel vostro IDE.
>> Quindi, se ho un file Ciao, che ha semplicemente questi contenuti.
Questo è in realtà Python 2, non Python 3, in modo da non fare
preoccuparsi della sintassi per ora.
Ma io corro Python, su hello.py, e funziona.
>> Un altro modo che posso usare Python che Non voglio fare con così tanto in questo discorso,
è se mi basta digitare Python, me gocce in un ambiente in cui
Posso dargli da mangiare linea Python per riga.
Così qui, se digito spazio stampa 'ciao, mondo'.
Digitare entrare.
Sarà sputare me che indietro i risultati quella linea individuale subito.
>> Questo potrebbe essere utile.
In questo discorso farò le cose su vetrini.
E così sarete in grado di seguire lungo sia in qua, o scrivendo
file effettivi e poi eseguirli.
>> Ma, tornando a questo codice, un'altra cosa
che si potrebbe avere noticed-- bene, non c'è
due cose che si potrebbe nota di questi blocchi.
Il primo, un po 'più banale, è che il Python non ha virgola finale.
>> Punto e virgola sono facoltativi ovunque e innocuo ovunque.
È possibile aggiungerli.
Si potrebbe rendere le persone che scrivono Python per una risatina vita a voi
dietro la schiena, perché non sono necessarie.
Sono spesso un segno di essere rinviato da C. I progettisti del linguaggio
sento che è più chiaro in questo modo e che non è necessario dichiarare
ogni volta che finisce una linea.
>> Un'altra cosa strana di questo n è che non ha un tipo di allegato.
Uno dei pezzi magici della Python-- e ho intenzione di chiamare la magia,
ma ci sono molto ragioni tecniche per questo che
works-- uno dei pezzi magici di Python
è che le variabili possono espandersi o ridursi a contenere qualsiasi dato
tipi di li vorrebbe.
>> Quindi questo è un 10.
Se poi giù ho assegnato a questo n 0.5, ci vorrebbe che 0.5.
Non importa che si tratta di un int qui e galleggiare lì, tutto ciò che utilizza questo n
sarà, più o meno, in grado di chug lungo se ottiene uno di quelli.
A meno che non ci sia una vera e propria motivo per cui non è possibile utilizzare i dati
tipo che n attualmente ha, a quel punto si otterrà
incuneato e genera un errore, e questo genere di cose.
>> Ma qui, Python in realtà non importa cosa
è che ho intenzione di attaccare in questo frase, come, vuoi questa cosa?
Questa cosa in questo?
Sì, è una specie di una cosa.
Mi atterrei esso alla fine.
Sarà un problema in seguito, se qualcuno che vuole utilizzare tale fine
non in grado di gestire.
Questo è uno dei principali differenze tra Python e C
che rende facile scrivere programmi molto grandi C
e rende più facile scrivere molto piccolo programma Python.
>> La sintassi non è molto diverso in ciò che fa.
E 'un po' diverso nel modo in cui è espresso.
Quindi questo è un molto, quello che viene chiamato Pythonic, modo di scriverlo.
per la riga nella gamma (n), questo è il intervallo di numeri da 0 a n,
incluso sul fondo ed esclusivo sulla parte superiore.
Quindi è da 0 a n-1, che è esattamente ciò che il codice C sta facendo,
tranne che è molto più facile a guardare, forse.
>> Il blocco di riferimento è non partire da parentesi graffe,
invece è impostato off per questo rientro.
Quindi tutte queste linee sono quattro spazi più a destra,
o come su di una larghezza elefante.
E questi sono quelli che sono andando a essere eseguito in questo per.
Se mi rovinare la dentellatura su questo e
spingere quel stampa ritorna il rientro originale,
che la stampa partirà il ciclo for.
A differenza di C, dove ho effettivamente qui necessario spostare quella tutore chiuso intorno.
>> Questo significa che non si ottiene errori che salta fuori di te, perché tu
mettere un tutore nel posto sbagliato.
Significa che si ottiene gli errori che salta fuori di te, perché tu
frastagliata linea di un torto.
Così rende rientranze super attento.
Speriamo che si stavano super- attenti con il vostro rientro in ogni caso,
e quindi questo non è che molto di più di un peso.
>> Ma una regola di base per Python, e avremo un paio di questi
che andremo attraverso attraverso il corso del discorso,
è cercare sintassi naturale prima di guardare nulla fino.
Quindi questa sintassi, per questo numero nella gamma,
è molto particolare in termini di stile.
Un sacco di cose in Python vedremo l'assunzione di questo modulo.
>> E così, se si arriva con un nuovo oggetto che si
che si dovrebbe essere in grado di iterare su questo, in questo formato,
risulta probabilmente supporta quel formato.
Non abbiamo intenzione di andare in profondità nel super- le ragioni tecniche per cui è vero.
>> Ma è una intuizione utile avere quando ci si avvicina programmi Python,
che questa cosa è solo andare a lavorare.
Provalo.
Avviare la riga di comando Interprete, vedere se funziona,
andare avanti con le cose, prima di nemmeno bisogno di aprire Google e dire,
qual è la sintassi per questo particolare cosa?
Un sacco di Python POTRESTE scoprire solo provando.
>> Questo se è ancora più simile C poi le fors sono.
Si noti che non ci sono parentesi.
Le parentesi sono, ancora una volta, innocuo ma inutile.
C'è un due punti alla fine proprio come il ciclo for,
e ancora, i relativi blocchi sono rientrato piuttosto che partire da parentesi graffe.
Questo altro è in originale livello di rientro,
e il suo blocco relativo rientrato di nuovo.
Coloro che opera esattamente come in C.
>> Questo è in realtà molto simile.
Anche in questo caso, di stampa perde un carattere off di printf Si passa alcune stringhe.
Si scopre stringhe può essere sia delimitato
da apici o doppi apici.
Non c'è alcuna differenza, tranne che dentro
di apici singoli è possibile utilizzare virgolette con abbandono,
anziché dover sfuggire tutti.
E dentro di virgolette, si è possibile utilizzare le virgolette singole con abbandono
senza dover sfuggire loro.
Se si voleva mescolare loro, si può certamente
cercare on-line come fare.
>> Noterete che qui, Ho passato in fine = questa cosa.
Questo è un esempio di un optional argomento, che è una di quelle cose
che Python supporta tale lo rende molto utile.
Così la stampa ha in realtà un sacco di argomenti, che sono di solito
impostare ai valori predefiniti valore, ma qui ho
ha deciso di ignorare quello chiamato finale.
La ragione per cui ho da sostituire con una stringa vuota
è che la stampa in Python, per di default, stampa una nuova linea
dopo la cosa che hai detto anche tu.
>> Quindi questo hash è in realtà sta per stampare una hash in una nuova linea.
E se io non voglio di hash per stampare una nuova riga dopo, poi devo dire
non stampare uno.
Ma, eppure così, quella ultima cosa che questo programma non è presente che si ha è
un include in alto.
Stampa viene cotto in Python così fondamentalmente che non c'è nessuna intestazione o modulo
che è necessario includere, ma se voleva
includere altre cose in uno script Python,
Lo farei in un format-- molto simile le parole sono solo leggermente diversi.
>> Ho detto che ci non hanno bisogno di un principale qui,
perché il Python inizia esecuzione in alto.
Se avessi voluto avvolgere questo in funzione, I
lo farei come mi questo-- direbbe def nome della funzione,
argomenti potrebbe andare qui e faremo vedere alcuni di quelli più tardi, i due punti,
e poi di nuovo, questo intero blocco partire
è ciò che è il operativa bloccare per quella funzione.
Quindi questa è la definizione della funzione.
E c'è una dichiarazione, poi giù qui, posso solo chiamare la funzione.
E ancora, il programma interprete, partendo dall'alto,
vedrà questa è la definizione.
Non eseguirà questo fino a quando non arrivare qui, e poi è come, oh
ora hai chiamato, mi che dovrei eseguirlo.
>> Una cosa che è molto comune per vedere in file Python,
specialmente i file Python che vengono rilasciati al pubblico
e sviluppato per-- e sviluppato e mantenuto, è qualcosa di questo modulo.
Questo è così perché basically-- Python, si avvia al top
e poi si esegue fino in fondo, Io se ho appena avuto Mario chiamato qui,
allora ogni volta ho inserito il file in un altro file, perché volevo usare
è funzione di Mario, che altro file sarebbe hanno anche questa chiamata a Mario in esso.
E quando mi sono imbattuto quel file, si chiamerebbe Mario.
>> Quindi è possibile che io solo desidera eseguire questo se ho effettivamente
eseguito questo particolare file.
E così posso avvolgere questo in un idioma come questo, dove dico io,
Se il nome di questa esecuzione ambiente è il principale,
poi voglio fare queste cose.
In caso contrario, qualcun altro può use-- includono mia function--
il mio file, e solo per ottenere accesso a queste funzioni
senza dover eseguire le cose che voglio eseguire in questo file.
Questo è, di nuovo, opzionale ma molto comune.
>> Queste cose sono entirely-- sono esattamente lo stesso tra C e Python,
certamente in 3.
Penso che in 2, l'operatore di divisione a volte ti dà indietro quando galleggia
si operati int, e sia si voleva che o non ha fatto.
Ma più, meno, e tempi lavorare esattamente come ci si aspetterebbe,
tranne sopra un po 'di più tipi.
Così è possibile moltiplicare galleggianti da int, e questo genere di cose.
>> set funziona esattamente lo stesso.
È possibile utilizzare due segni di uguale.
inequals-- maggiore di, minore che, questo tipo di things--
hanno il significato che si ha familiarità con loro.
>> Dove C utilizza questi operatori, Python usa un po 'più inglese
quelli leggibili.
Così, invece di due, e commerciali, è letteralmente digitare la parola "e", "o"
o no."
Come nella vostra se: nella vostra istruzioni condizionali,
abbiamo visto in precedenza che questa sintassi in C corrisponde a questa sintassi in Python.
E non c'è molto diverso lì, tranne per un po '
della punteggiatura intorno ai lati.
Anche in questo caso, dove C sarebbe altro se, Python usa elif,
ma questi sono principalmente variazioni di livello di superficie.
>> Iterazione come questo è spesso scritto in questo linguaggio in Python.
È possibile produrre questo tipo di cosa con un ciclo mentre all'esterno
se si voleva, ma si certo non è necessario.
E ancora, se si voleva la stampare elementi di un array
si potrebbe fare in questo modo.
Una delle cose divertenti su Python, però,
è che non hai bisogno per utilizzare questo paradigma,
ed è possibile utilizzare un uno un po 'più elegante.
Lei dice una a Ary.
>> Quindi, piuttosto che andare qui e traboccante gli indici,
e poi tirando fuori singoli elementi,
dite la realtà solo per a eseguire sugli elementi stessi.
E poi quello che stai facendo dentro può operare direttamente
sugli elementi, il che è abbastanza divertente.
E noi see-- useremo ancora una volta che idioma
mentre camminiamo tramite il codice.
>> Questo è, di nuovo, un esempio di qualcosa che io
chiamare Python magia, anche se ci sono ragioni molto tecnici perché funziona.
E ci sono cose tecniche che bisogno di essere vero su array in ordine
per questo al lavoro dietro le quinte.
Il fatto è che la maggior parte dei tipi che ci si aspetterebbe a questo lavoro
aver avuto questa implementato per nella lingua incorporato.
>> Un'altra cosa che sarebbe bello se questo ha funzionato in tutte le lingue,
ma ci sono alcune ragioni per le quali essa non può, stampare questa volte a corda questo numero.
Risulta in Python, questo fa esattamente ciò che si desidera, che è solo divertimento,
e significa che possiamo realmente ridurre questo programma, di nuovo mario.c.
Piuttosto che l'iterazione molto, possiamo solo dire, voglio un po 'numero di spazi,
Voglio che il numero di hash, e alcuni hash alla fine.
E ancora, usiamo questo formato.
>> Qui, stiamo passando a una variabile in questo modo.
Ancora una volta, non abbiamo bisogno di dire il tipo di variabile è,
e l'unica volta che faremo ottenere errori è in fase di esecuzione.
Quando qualcuno cerca per passare a qualcosa,
che sarà entrato in funzione proprio bene.
Se cuneo qui perché questo non è il cosa che è possibile creare campi di sopra,
Prendo un errore di runtime lì, e dovrò eseguire il debug in questo modo.
Ma nel frattempo, non ho essere molto attenti a ciò che
viene passato in, purché nel reale l'esecuzione, tutto funziona molto pulita.
>> Potrei anche fare questo un po 'più pulito
utilizzando una particolare funzione incorporata sulle stringhe, che si trova proprio Giustifica.
Questa è solo una funzione utile in giro la biblioteca.
E 'nella documentazione se si va a cercarla.
E io dico, bene ho intenzione di avere questa stringa, un numero di hash,
e vorrei giustificare destra pad it-- fuori con spazi da questa lunghezza.
>> Di nuovo, questo è nella documentazione, che porta noi--
Io in realtà clic attraverso these-- che ci porta alla nostra seconda regola
per libreria standard Python-- Metodi di funzione sono i tuoi amici.
Ed è spesso vale la pena per andare alla ricerca di chissà
se c'è una cosa che fa proprio questo.
Probabilmente non c'è.
Se desideri pad fuori una stringa, se aveste
come a prendere la schiena mezzo di una stringa, se aveste
come per la ricerca in una stringa, se ti piacerebbe distruggere un paio di cose
insieme con una stringa con virgole tra loro,
ci sono libreria standard funzioni per fare questo.
>> E rende la vita più facile se li si usa
invece di stendere tutto da soli
in cinque righe di codice qui, cinque righe di codice qui.
Che davvero dalle ore aggiungere fino a tempo reale.
>> Una delle cose interessanti su come questo viene chiamato.
Noterete che c'è una cosa puntino.
Ho qualche oggetto sulla sinistra, e poi ho chiamato un punto di una funzione.
Questo è uno dei paradigmi che Python utilizza per collegare i metodi agli oggetti.
Parleremo di ciò che questo è molto brevemente alla fine,
ma sappiamo che siamo in grado di operare su entrambi cose da prendere quel punto cosa dire
qualunque, o chiamando una funzione che prende
quell'oggetto e alcuni altri argomenti.
>> Quindi questi sono due modi in cui cose vengono fatte in Python.
E se un determinato funzionalità viene implementata
in questo stile o questo lo stile è qualcosa che si
dovrebbe guardare fino a quando si ottiene un blocco per il quale si è probabile cadere.
C'è una più o meno coesa La filosofia dietro Python
che si assorbono la maggior parte scrivendo un sacco di esso.
Ad un certo punto, che uno di questi qualcosa sarà attuato come
diventa naturale.
Per ora, è solo qualcosa si impara come capire
ogni singola cosa.
>> Biblioteca così standard funzioni sono i tuoi amici,
e ci hanno permesso di scrivere cose che assumere questo spazio davvero poco,
davvero elegante.
E questo è in realtà probabilmente più leggibile, direi, rispetto al programma C
laggiù.
Senza contare il fatto che è così breve è possibile montare un intero elefante
nello spazio che abbiamo salvato.
>> Un'altra cosa, questa è una implementazione di mario che è punto C, che a mio avviso
è il più breve si può ottenere.
Non ha il int get, ma essa codici duri il valore di 10
allo stesso modo che questo si fa.
Risulta che questo orologi in a 84 caratteri, mentre Python è 64.
E questo è infinitamente più leggibile di questa immondizia qui.
Così Python è più efficiente nello spazio.
E 'un po' meno efficiente nel tempo, ma non di molto.
>> Le liste sono una cosa importante in Python.
Non abbiamo visto loro, ma operare proprio come gli array fanno in C.
Così qui, li si può dichiarare, è possibile passare in una cosa.
Ora piazze detiene un array di queste cose.
Ancora una volta, non abbiamo dichiarato come tipo, ma se mai proviamo ad usarlo,
tutto ciò che ci si aspetterebbe di lavorare su un array di interi
è andare a lavorare su un array di interi.
>> Questa è una cosa che assolutamente non è possibile
fare in C, perché la la memoria è così mani,
ma è molto facile da fare in Python.
Se voglio il mio allineamento di essere più grande, non posso aggiungere un elemento ad esso e va bene.
>> Cosa sta succedendo dietro le quinte?
L'interprete andrà fuori e ottenere un po 'di memoria,
e forse otterrà un po 'di memoria extra,
quindi non così non ho a realloc ogni volta.
Ma quanto hanno più memoria ha bisogno?
Non sono decisioni che si deve fare,
queste sono decisioni che i interprete sta per fare.
>> Qui vediamo gamma possibile prendere due argomenti,
ma è ancora in corso di essere inclusivo della parte superiore in modo da aggiungiamo 1 lì.
Questo è un linguaggio, che è ancora più modo intelligente di scrivere cose come questa.
Si chiama di lista, e qui quello che stiamo dicendo
è che vorrei mettere in i al quadrato per ogni valore di i in questo intervallo.
Questa cosa a destra potrebbe essere un altro array, e questa cosa a sinistra
essere alcuna particolare funzione che avrebbe preso in i come una variabile
e mi danno qualche risultato.
>> Che cosa ho intenzione di fare è, Ho intenzione di costruire
una matrice che è tutte queste cose per ogni valore in questo intervallo.
E questo è super elegante, super breve, ed è molto chiaro che cosa significa.
Questo è uno dei things-- questo è ancora una volta,
uno di-- molto emblematico della ragioni che la gente come Python.
Se vi piace la programmazione in questo modo, poi Python
è un linguaggio di come si potrebbe imparare.
>> E ancora, ci sono tecniche ragioni per cui questo funziona.
Ma per quanto ci riguarda, abbiamo più o meno non ci importa.
>> Quindi, se si desidera stampare le liste, alcuni degli stessi linguaggi sono utili.
Per i in questo intervallo, potremmo Indice attraverso tutte le cose
e poi stamparli tutti fuori.
E vedrai LEN qui.
Se hai sempre voluto arrivare la lunghezza della matrice, che è
molto facile in Python, è molto difficile in C.
Questo sarebbe stampare esattamente quello che ci si aspetta.
Potremmo anche, come abbiamo visto prima, iterare sugli elementi di matrice
direttamente, e poi basta parlare di li, piuttosto che l'indice
indietro nella matrice ogni volta.
>> E questa è una cosa che si può fare.
Quindi, in C, se chiedete qualcosa in questo modo, la stampa avrebbe detto,
questo è un array di interi.
Questo non è sicuramente un stringa, non riesco a stampare.
Python più o meno non importa.
E 'come, c'è un modo che io potrebbe trasformare questo in una stringa?
Sì, lo farò.
E quindi mi limiterò a stampare quello fuori.
Ciò significa che è possibile fare le cose like-- questi
sono il più delle parti dure di gioco di quindici anni, scritta
molto brevemente in Python.
>> Vedrete che non c'è un po 'di-- qui
Ho gettato un intero in una stringa, e devo farlo manualmente.
E ho intenzione di aggiungere ad un'altra stringa,
o altrimenti Python si confonde.
Ma se quando sei aggiungendo una stringa in un numero intero,
Sono Suppongo che per ottenere un interi indietro o una stringa indietro?
Ma ancora una volta, se si chiamare str su una cosa,
e che poteva in ogni possibile mondo essere convertito in una stringa,
probabilmente sarà convertito in una stringa.
>> Qui, vediamo uso di lista annidata comprensione
sulla sinistra, alcuni indicizzazione, che è esattamente come si sarebbe abituati,
e alcuni stampare delle cose.
Ancora una volta, abbiamo definito alcuni funzioni e noi li chiamiamo giù
nel principale quando abbiamo effettivamente ottenere il file.
ritorno funziona esattamente come si vorrebbe si aspettano di lavorare con C. Trova,
possiamo impostare le cose come questo-- ecco di lista
c'è un incarico a una variabile, e possiamo effettivamente fare ancora più facile.
Non abbiamo bisogno di scrivere di ricerca, perché incorporato alla lingua
è se questa cosa è in questo array.
Restituisce vero, altrimenti restituisce false.
Ecco, questo è l'interezza di find.
>> L'insieme di sorta comporta chiamando sorta,
che è-- ci sono implementazioni di questo costruito in alcune librerie C.
Se vuoi questo sorta di all'indietro, è
può ignorare questa facoltativa argomento al contrario con una vera.
E se si desidera ordinare su stringhe, che è costruito in pure.
>> Quindi questo non è per dire queste sono cose che dovete fare ogni giorno,
ma l'idea è che questo è la filosofia di Python,
che tutte queste cose che hai una sorta di voglia di fare sono built-in.
E la maggior parte funzioni standard, così sorta, lunghezza, qualunque cosa,
sostenere l'input più logicamente sensato.
Chiamate len su un array stesso modo chiamate len su una stringa.
Si si multiply-- ordinare stringhe allo stesso modo si ordinano array.
>> La maggior parte delle funzioni standard che le persone costruiscono,
e la maggior parte di terze parti biblioteche che le persone
costruire, perché stanno emulando la progettazione della libreria standard,
può essere chiamato su tutto ciò che sei come, perché non solo questo lavoro,
in C. Più o meno, funzionerà in Python
perché le persone lavorano dietro a figura ciò che una cosa è e quindi operare
opportunamente su di esso.
Quindi, di nuovo, background tecnico, ma rende la nostra vita più facile in quanto i programmatori.
>> Quindi, ecco file di I / O. file di I / O ha un sacco di piccole cose che rendono complicato,
e quindi non ci sono risorse on-line, ma in poche parole,
si chiama aperto su un file nome con un tipo particolare.
Ecco, questo è leggere, leggere e scrivere, scrivere o aggiungere.
Hai letto un certo numero di personaggi fuori e si stampa quelli,
si otterrà Ciao!
Voglio dire, come questo file aveva Ciao!
In esso, chiamata a leggere, e che cosa otterrete indietro
è una stringa che ha tutti del resto della matrice,
o tutto il resto del file.
Se si chiama rileggere, sei alla fine del file,
e così non si ottiene qualsiasi cosa e quindi dovrete chiudere.
Di nuovo, questo è .close anziché chiudere il file, come sarebbe in C.
Questo è più o meno perché f è un cosa, e vuoi per f per chiudere.
Ma file di base I / O non è particolarmente complicato.
Anche in questo caso, se si desidera aprire un file, se ti piacerebbe leggere una riga particolare,
si può uscire di particolare line-- c'è built-in per questo.
Se si desidera scrivere un cosa, è possibile scrivere questo.
Se desideri scrivere individuale morsi, è possibile scrivere quelle.
E se si desidera iterare sulle linee di un file
individualmente, come abbiamo fatto in un pezzo da qualche settimana fa, si può fare questo a.
Ancora una volta, la maggior parte degli oggetti che ti sentiresti vuole essere in grado di iterare
supporto iterazione su di loro.
In Pitoni, un file è forse una cosa che Mi piacerebbe per scorrere riga per riga.
Se fosse un dizionario delle parole e sono stato
cercando di ottenere quelle individuale parole fuori, quindi, all'interno di questo ciclo,
linea che sta per essere ogni parola a turno e questo
sta per essere giustiziato per ogni linea nel file fino alla fine del file.
E ancora, se ho stampato ogni la linea, le linee sono dotati di nuove linee,
così sto impostando la fine tornare a una cosa del genere.
Poi mi piacerebbe avere il contenuto del mio file.
>> La seconda cosa che opera in per certi versi come le liste, e in qualche modo
come qualcosa di sostanzialmente più potente,
sono dizionari, che sono davvero freddo da usare, ma sono fondamentalmente hash
tavoli sotto mentite spoglie.
Si crea uno utilizzando esattamente due personaggi, che è impressionante
se si è tentato di implementare la tabella di hash per il set problema,
si sa molto dolore che può essere.
Ma le persone hanno fatto esso, e fatto così bene,
che non c'è bisogno di preoccuparsi più.
>> Quindi è possibile inserire cose individuali.
Tables-- hash o dizionari fare non particolarmente
importa quello che stai memorizzazione in loro.
Quindi, se alcune voci sono numeri, e alcune voci sono liste,
se alcune voci sono altri dizionari, e alcune voci sono stringhe,
Python non fa molta cura.
>> Anche in questo caso, se si va in esso aspettavo una stringa e quello che si ottiene indietro
è un array, che è il tuo problema.
E forse è colpa di chi pensano che stava mettendo le cose
nel dizionario, forse eri tu.
Se questo era qualcuno altrimenti, si spera che erano
ben educati su cosa stava andando nel dizionario
e non ha lasciato alcun insidie per voi di cadere in.
>> Ma le funzioni standard saranno dare indietro le cose ben educati.
Così dicono questo restituisce sostenere un dizionario di stringhe,
poi tutto si sta andando per uscire è una stringa.
Se fate parte di questo e gite si, beh, che potrebbe essere su di voi.
Python sicuramente ti dà abbastanza corda per impiccarti da solo, se vuoi.
Ora siamo in grado di stampare individuale elementi di questo e questo restituisce
esattamente ciò che vi aspettereste.
Esattamente quello che ci si aspetterebbe, credo, è una frase che sto usando un sacco,
ma questo è più o meno come funziona Python.
Se chiedete una cosa che non è esso, Python buttare fuori un errore
e si chiuderà fuori di qualunque programma che si trovavano in.
Sarà realmente stampare maggiori informazioni rispetto a quelle,
che sarà punto you-- Andrà aggiungere una linea, e così.
>> E, ancora una volta, forse vogliamo per scorrere dizionari
e trovare tutte le cose in esso.
Qui stiamo iterare su due cose allo stesso tempo.
E così lo faremo con una chiave, il valore, ma poi stampare tutti questi.
>> E se volessimo cast-- se abbiamo effettivamente imbattuti questo,
avremmo qualche problema perché on-- quando siamo andati in con David,
non potrebbe add-- se non lo facessimo gettato in una stringa prima,
non abbiamo potuto aggiungere che matrice di corde sui una stringa.
Ma se abbiamo gettato in un stringa, otteniamo qualcosa
come questo, che è forse quello che ci piacerebbe leggere.
>> E questo è correttore ortografico.
Abbiamo appena letto nelle cose.
Così possiamo leggere singole parole come linee.
Abbiamo recidere l'ultimo cosa, quindi due punti meno 1
Chomps fuori l'ultima cosa che we-- l'ultimo carattere di una stringa.
Diremo.
OK, ognuno di quelli ottiene inserito in questo dizionario,
mappatura di un valore di 1.
Noi non particolarmente preoccuparsi che uno,
ma è solo lì per dire, vabbè, questa cosa mi metterò nel dizionario.
Perché più tardi ciò che siamo intenzione di fare è che siamo
per dire, beh, se è nel dizionario affatto.
>> Ancora una volta, questo controllo per iscrizione è up operativo
utilizzando un completamente diverso algoritmo di quello che sarà in un elenco,
ma noi chiamiamo allo stesso modo, che è un po 'di quel rivestimento di zucchero Python
le cose in modo che siano più facili da usare.
E ancora, abbiamo visto cose come questa prima.
Questo è fondamentalmente trovare, o è esattamente la stessa sintassi
come trovare, ma è in funzione nel corso di un struttura completamente diversa.
E noi non particolarmente a cuore.
Così quelli sono le cose che si è stato chiesto di attuare per speller.
Di questo passo, stiamo andando a ottenere più o meno tutti i pset fatto.
>> PUBBLICO: In modo che fondamentalmente solo torna
come erroneamente scritto se non lo fa abbinare qualcosa nel dizionario?
ROSS RHEINGANS-YOO: Sì, sì.
Così, questo è un adattamento di un problema impostato
che ti chiede di fare esattamente questo.
>> PUBBLICO: Perché è la linea meno 1 lì?
ROSS RHEINGANS-YOO: So quando sei iterazione
su un file per chiedere da linee, le linee
sono dotati di un carattere di nuova riga alla fine del it-- meno 1
è solo per fare acquisti quelli fuori.
E questo è particolarmente flessibile modo di indicizzare le cose.
Quindi, se avete una stringa, e desideri, beh io sono
intenzione di iniziare a carattere di tre e ho intenzione di andare fino in fondo.
3 colon lo farà per voi.
Se siete come, voglio iniziare a inizio e andare all'ultima meno 1
carattere, due punti meno 1.
E se si voleva andare da terza alla prima minus,
allora avresti detto 3 meno 1.
>> Inoltre, se si desidera indicizzare nelle cose che contano dal retro,
basta indice con i numeri meno.
E perché, dove C sarebbe esplodere o forse
si nutrire altro la memoria non aveste accesso a, sentirti può dire meno 1
si intende l'ultimo, ma 1 carattere di una stringa.
>> I moduli sono version-- sono analoghi a librerie in C
e sono utili per un sacco di cose.
Un sacco di cose che ci si piace fare in Python,
oltre semplice manipolazione di variabili,
si vuole agganciare nel biblioteche più grandi con maggiore
interfacce e altro capacità di interazione
con altre parti del mondo.
SYS è uno di quelli con una serie di tools
che sono utili per interagire con il sistema stesso
e sarà importarlo come import sys.
>> C'è di più documentazione quello che si potrebbe andare qui,
o si potrebbe trovare su Google googling sys Python.
Si digita entra.
Il primo collegamento sarà la documentazione in Python 2,
il secondo link sta andando la documentazione di Python 3.
>> E se abbiamo scritto fuori un file che sembrava come questo-- caso in particolare, siamo
guardando operando su argomenti della riga di comando,
come abbiamo imparato a fare molto nella fase iniziale in questa classe.
Questo non è difficile. Si può uscire argv,
che è una di quelle cose che viene realizzato tramite sys.
Non è built-in per il pacchetto di base, ma ancora una volta, è
può allungare importando tale funzionalità da sys.
Ti chiami sys.
qualunque.
Qui c'è argv.
Non c'è in realtà alcuna argc in sys, perché
può ottenere così facilmente chiamando len.
Abbiamo poi stampato che fuori, allora noi corse sulla nostra echo-args.py terminale.
Torniamo un array, che è questo il primo argomento.
Di nuovo, questo è argv 0, che è il il nome della cosa che ha chiamato.
Se abbiamo chiamato con l'aggiunta di argomenti, ci saremmo quelli indietro.
Questo è un modo di ottenere argomenti della riga di comando.
Se si desidera che le bandiere dove si svolta cose particolari su o sostituzione
una particolare impostazione predefinita, argparse è tuo amico.
E ancora una volta si scopre che in linea in pitone argparse a Google.
>> Ci sono un paio di utility I moduli che si trovano da soli, usando
e ancora una volta, se si spendono in qualsiasi momento di questo linguaggio importazione jsons
per la lettura in e fuori di json file, non così complicato.
Si apre un file, chiamato json.load su tale file e si ottiene indietro una cosa.
Qual è quella cosa?
Si tratta di un oggetto JSON.
Se tale JSON ha matrice, il Python ha array.
Se tale JSON ha array associativi, Python
dizionari, stringhe, e numeri, e così via.
Si desidera eseguire il dump che fuori, aprire un nuovo file, si chiama discarica,
e carichi e discariche a andare dentro e fuori di stringhe.
>> Allo stesso modo, salamoia viene chiamato in sostanza la stessa interfaccia.
E 'un po' più utile se stai scarico oggetti Python.
Quindi, se avete sempre voluto per salvare una versione dello stato attuale
di una variabile per un futuro eseguire del vostro programma,
pickle è Python libreria per farlo.
>> Se avete qualsiasi tipo di variabile che può essere scritto fuori
in parole come e personaggi e bytes-- come questo dizionario,
potremmo scrivere in giù, noi potrebbe scriverlo come
come un oggetto JSON, che era letteralmente questi personaggi.
E allora sarebbe molto facile per un essere umano per aprirlo up-- aprire
e leggerlo.
Se non abbiamo particolarmente cura di esseri umani la lettura,
potremmo pacchetto ancora più efficiente in forme che potrebbero poi essere spacchettato
o che potrebbero in seguito essere gonfiati.
E questo consente di risparmiare 80% del spazio che gli oggetti potrebbero
prendere se li hai scritto fuori longhand.
>> Si chiama sottaceto molto lo stesso way-- discarica, carico,
e poi si arriva tue cose indietro.
Quindi, se si sta scrivendo molto programmi Python brevi
vuole salvare lo stato, e quindi leggere di nuovo più tardi, le cose come questo
sono i tuoi amici.
Che si potrebbe molto facilmente discarica come JSON.
La maggior parte degli oggetti Python può scaricare il JSON
se c'è qualche speranza che strutturalmente potrebbero essere rappresentati in questo modo.
>> Questi sono solo la punta del iceberg moduli che sono utili.
Così sys, os, multiprocessing, sono sorta di cavalli di lavoro di base per le cose
abbiamo bisogno di interagire con il sistema operativo del file system.,
come os.isfile, os.isdirectory, os.makefile, questi sono i tuoi amici.
Se si vuole interagire con un particolare tipo di file,
JSON, sottaceto, csv.
Se si vuole interagire con il web pagine, il urllib per ottenere http
pagine. bs4-- BeautifulSoup-- è una meravigliosa parser per HTML.
Si esegue su un html e ottenere questo oggetto array nidificato ora,
che si può attraversare sopra lookin, con il simile solo in cerca di
se, è, in, che è fantastico.
>> C'è un sacco di pacchetti per running--
per fare particolarmente Mathy cose.
Quindi, se volete moltiplicare, invertire, trasformare le matrici,
NumPy viene utilizzato da persone tutti il mondo per questo.
SciPy è ancora più utile utensili in quella direzione.
sklearn-- machine learning, elaborazione del linguaggio naturale,
eccellente roba utile, ottiene implementato in Python tutto il tempo.
>> E ancora, prende un po ' più tempo per write-- dispiace,
prende leggermente più lungo per l'esecuzione, ma la ragione per cui gli ingegneri reali tendono
uso Python è perché si tende ad essere bloccato su di voi a scrivere il codice, piuttosto
che il vostro computer che esegue il codice.
Quindi, se avete intenzione di scrivere un programma, che un sacco di altre persone
stanno per utilizzare per sempre, come Linux,
potrebbe scrivere in C. Se tu fossi intenzione di scrivere un motore di calcolo,
è possibile scrivere in Python se avete bisogno di cambiarlo ogni due mesi.
Alcune persone potrebbero scrivere a C perché sono così.
>> Così abbiamo visto import sys come un modo di fare le cose
Modulo di entrare nel vostro programma.
È inoltre possibile importare come un soprannome, se volete.
Anche in questo caso multiprocessing è un dolore per ogni volta digitare fuori, in modo da importare mp
e poi ogni volta che utilizzare nel programma,
potrete dire mp.process, o quello che hai.
Se vuoi importazione una sola cosa,
così urllib ha una cosa chiamata richiesta, in modo da poter semplicemente importare il.
In seguito, non si invocarlo come urllib.request, ma solo come richiesta
da solo.
>> E si può importare tutto da un modulo se si desidera.
Questo non è talvolta una buona idea-- questo non è di solito una buona idea, in realtà.
Perché si very-- perché se nulla in quel modulo ha un nome che si
voluto usare qualche altra parte nel programma, non è possibile.
>> E non è sempre ovvio che questo è il caso.
Per fare in modo che quello che stavi facendo era al sicuro,
è necessario aprire il modulo e vedere tutto
dei nomi che finiscono in there-- tutte le funzioni,
tutte le variabili che vivono in quel modulo,
perché si sta portando tutti li nel vostro namespace locale.
>> Così la gente lo fanno.
In generale si consiglia che non si esegue questa operazione.
Ma le persone fanno tutto il tempo perché sono
pigri e non vogliono di digitare mp.
niente, mai.
>> Tutto questo parlare di moduli mi portano in giro per un breve discorso
su come si progetta programmi in Python.
Il primo passo è quello di verificare se qualcun altro ha già fatto la cosa,
o fatto 90% della cosa.
Le probabilità sono che probabilmente hanno, e si dovrebbe andare a prendere le loro cose e correre così.
O scrivere un wrapper attorno ad esso per adattarlo al vostro scopo.
È solo dopo che ha fallito che faresti allora
andare avanti e cominciare a pensare a write-- come si dovrebbe mettere questa cosa insieme.
C'è un sacco di roba là fuori, e questo è
uno dei più utili cose su Python.
Come il linguaggio è elegante, il linguaggio
è facile da usare, ma anche perché è così elegante e facile da usare,
persone sono state usando per un molto tempo e c'è un sacco di roba
là fuori che si può sfruttare per uso personale.
>> Così ultima regola di Python è, qualcuno altro ha già scritto probabilmente
un modulo per questo, qualcun altro ha già
probabilmente scritto una libreria per questo.
Prima di provare a fare una cosa, guardare per vedere se è stato attuato.
Non è così difficile.
Tutti i moduli che ho messo su prima, forse con una sola eccezione,
sono pre-installati in ogni installazione standard di Python.
E così con una chiamata a importare qualunque, voi
avere tutto questo funzionalità a portata di mano.
>> Cominciando a concludere questo parlare, ci sono alcune cose
che ho lasciato come scatole nere e una sorta di sorvolato,
e c'è un paio di bianco si trova che ho ha detto che per il bene di onestà,
Io, almeno al punto qui, anche se non lo farò
andare profonda eccellente in tutti loro e le loro spiegazioni tecniche.
>> Un sacco di cose che ho chiamato la magia
è quello che gli altri chiamerebbero programmazione orientata agli oggetti.
Quindi ci sono un sacco di things-- così variabili non sono molto spesso
byte semplici seduto in, memoria, ma sono molto complicato
oggetti che hanno interna Stato sulle funzioni e un sacco
variabili di nascoste, un sacco di funzionalità nascosta, che
consente di trasformarli in stringhe, che consente di eseguire iterazioni su di loro.
E se siete writing-- e il motivo che essi
avere tutte queste ricche funzionalità è perché i people--
gli architetti del language-- sono andati
attraverso e per ogni livello oggetti, mettere in funzione
dire che questo è come questo sia come andrà a operare
se qualcuno vuole scorrere su di esso.
>> Quindi tutto ciò che qualcuno potrebbe desiderare di iterare,
ha scritto in logica manualmente su come si sta
dovrebbe iterare su tale oggetto.
Tutto ciò che si potrebbe desiderare scaricati in una stringa ha scritto logica.
Questa è la funzione che si chiama se si desidera eseguire il dump questo fuori in una stringa.
Questo è il motivo per cui si può chiamare len sulle cose, questo
È per questo che si può chiamare per, questo è perché è possibile chiamare se in su tutto
che si vorrebbe, perché quelli tutti stanno portando con loro,
il know-how tecnico per farlo.
>> Questo è qualcosa che io sono eccellente non intenzione di andare in.
Ma per cosa in lista è sottilmente diverso dallo stile C per cicli,
e si può leggere tutto su quello su Internet se siete interessati.
C'è un lato oscuro a tutti di questo, che ho citato,
così ci sono due cose.
Il primo è che questo oggetto orientato programmazione aggiunge un sacco di spese generali
a cose a caso, così si finisce usando molta più memoria;
si finisce per utilizzare un po 'di più tempo di quello che sarebbe altrimenti.
Il other-- ma più insidioso lato oscuro di questo
è, se le cose solo agire come voi li vuole
senza dover pensare super hard sul fatto che questo dovrebbe essere un int
o se ci dovrebbe essere una float, potrebbe essere che qui
si produce un int, ma qui si pensano ma faranno always-- dispiace,
potrebbe essere che qui si produce un galleggiante,
ma quando si arriva alla seconda parte del programma, stai pensando,
vabbè, ma faranno mi ha sempre passare un int.
E se non lo fanno, è possibile che si incunea in qualche luogo,
se si tenta di utilizzare che per indicizzare in un array, o quello che hai.
>> Così uno del reale cose utili su C è
ti costringe a pensare davvero duro prima di fare any--
prima di portare qualsiasi variabile in esistenza, come quello
è il tipo di questa variabile.
E sta andando ad avere tale tipo per tutti i tempi.
>> Questo non è vero Python, e infatti,
can-- se sei solo sorta di andare a orecchio,
e si fanno alcune decisioni un modo in un unico luogo,
e alcune decisioni uno modo in altro luogo
senza mettere dietro abbastanza roba le scene in altro luogo
a prendere le cose per bene, si può ottenere alcuni errori molto strani.
E il programma può continuare a correre per un tempo molto lungo, perché è
facendo un sacco di lavoro da dire, bene questa cosa potrebbe funzionare in questo modo,
così ho intenzione di correre in quel modo.
>> Ed infatti, il fatto che spinge inoltrare attraverso un sacco di piccoli errori
significa che, spesso, quando un errore in realtà è male
e non vuole realmente risolvere il problema, finisce per miglia away-- programma
finisce per fermarsi miglia di distanza da quando hai avuto il tuo errore.
E così una cosa che vorremmo programmi per fare, una cosa sometimes--
che vorremmo programmi a fare quando siamo debug
è sicuro ad alta voce e non riescono molto rapidamente quando qualcosa va storto.
>> Python è molto male in questo.
Python è molto bravo a non in mancanza e rotolare in avanti
attraverso le cose inaspettate.
Quindi questo è utile per quando stai scrivendo piccoli programmi.
Quando si arriva complicato bug a volte
richiede molto tempo per prendere in giro fuori.
>> Quindi c'è un lato oscuro a tutti di questo, come funziona da solo.
Funziona proprio come ci si aspetta.
Solo che quando non è così, si finisce in un luogo completamente diverso
e cercando di capire dove è stato che si è andato storto.
>> Garbage Collection è-- così una cosa che si noterà
è che nessuna di queste cose che Ho portato in existence--
queste matrici, i dizionari, i oggetti, questi files-- mai ottenere liberati.
Non c'era nessuna chiamata a gratis in tutto questo discorso.
E che è stato sul C-side, perché non abbiamo mai avuto in queste cose.
>> Ma in Python-side, non vi è un libero.
Le cose diventano automaticamente liberata quando Python
pensa che tu non stai guardando loro.
E 'davvero buono, non liberando cose che forse si potrebbe ancora essere guardando,
ma questo significa che se si dovesse andando a destinare questa grande cosa,
e siete come, oh Ho finito con esso ora,
è difficile dire Python che hai finito con esso ora.
>> A volte è possibile impostare la variabile di essere nessuno,
e poi sperare che alla fine il garbage collector
passa attraverso e pulisce fuori.
Ma ancora una volta, non è necessario avere il controllo su quello.
E una delle ragioni per cui le persone utilizzano C per davvero Performance cose importanti,
È questa capacità di veramente sapere quando viene allocata la memoria
e quando è liberata, e hanno un sacco di controllo su dicendo:
Sto utilizzando non più memoria di cui ho bisogno.
Che è qualcosa che Python non è così grande a.
PUBBLICO: Posso farti una domanda?
Che cosa si intende per riuscire ad alta voce?
>> ROSS RHEINGANS-YOO: Quindi, se qualcosa sta andando male
e sei in debug modalità, si farebbe molto spesso
desidera che il programma per dirvi esattamente dove è andato male,
e non appena tranquillamente smettere di correre.
Ma si sarebbe in realtà la stampa tutti i tipi di informazioni circa
come, qui era questo.
Questa cosa è accaduto Se si stampa un wen-- se si sta eseguendo un server-- web
>> PUBBLICO: [incomprensibile]
>> ROSS RHEINGANS-YOO: Sì, se si sta eseguendo un server web,
a volte è male se siete sempre scartando errori,
e che stai dicendo, bene che non ha funzionato.
Ho intenzione di smettere.
Sto solo andando a ignorare e continuare ad andare avanti.
Perché allora si può ottenere in centinaia di questi errori e non vederli.
>> Sarebbe certamente utile per scopi di debug
se il vostro server web ogni volta che ha fatto un errore, avete avuto record durevoli di quello.
Forse si vuole anche il programma per arrestare, in modo che i record
Non ottenere sepolto sotto le cose.
Ma ancora una volta, questo è in modalità di debug.
>> Spesso in modalità di produzione, la mondo è un po 'diverso.
E in piccoli script che sto correndo, dove la cosa che mi ha detto di fare
potrebbe essere solo un po 'fuori da quello che mi piace fare,
poi sorta di spingere attraverso errori è qualcosa che si potrebbe desiderare.
E in quei casi, certamente Python guadagna davvero le sue partenze.
>> L'ultima cosa che io non ho parlato in questo-- che non ho parlare
ma può essere davvero infuriare il primo tempo che avete uno di questi errori,
e il secondo e terzo e quarto ora si dispone di uno di questi errori.
Python, ho detto che utilizza lo spazio bianco
per dirti quello che livello di rientro e ciò blocco funzionale ci si trovi,
si tratta di schede e gli spazi in modo diverso.
Quindi, se si scheda su quattro, e poi la riga successiva ha quattro spazi,
anche se mostrano come il stesso importo nel vostro editor,
Python non trattano loro lo stesso.
>> In realtà, Python tratta le schede e spazi come olio e acqua.
Sono cose solo diversi.
Non vi è alcuna particolare lunghezza che una scheda è,
quindi non è come una scheda è uguale a 8 gli spazi, e così si otterrebbe intorno ad esso
in questo modo.
Come, quando dice, cosa livello di spazio bianco sono a,
in realtà è alla ricerca di una modello di spazi e tabulazioni.
E così, il modo migliore per affrontare questo è di usare sempre gli spazi per tutto il tempo.
>> Ed infatti, nel Cloud9 IDE e il CS50 IDE,
i vostri inserti tasto TAB quattro spazi a posto
di una linguetta, che è super utile.
Anche se ancora una volta, se hai scritto un Python programma con schede che sarebbe bene,
è solo se qualcuno entrò e ha cercato di aggiungere
una sola riga al vostro programma aveva quattro spazi per ogni scheda,
si spezzerebbe.
E sarebbe rompere in modo che non è realmente visibile.
Anche se l'errore effettivo messaggio che getta
ha a che fare con il nuovo trattino non previsto qui,
or-- se si sta parlando di trattini e sembra che sia sbagliato,
probabilmente è perché c'è un problema di scheda-spazio.
Stanno ancora facendo infuriare il debug.
Il più grande complesso nel questo discorso, che non ho
raggiungere perché è davvero un complicato, argomento sottile,
e non è stato necessario fare qualsiasi delle cose che abbiamo fatto fino ad ora,
sono un concetto chiamato tuple.
Sono lì molto simile al le matrici che non si può modificare.
Vengono utilizzati in tutto il posto perché sono utili per un sacco di cose
che gli array non sono utili per.
>> Ma se si desidera fare un array, e poi promettere l'interprete che si
non sono mai andando a voler modificare tale cosa-- infatti, se si desidera modificare,
potrai fare una nuova con il nuovo valori in it-- quelli sono tuple.
Invece di produrre li con parentesi quadre,
li producete con parentesi tonde.
Perché utilizzare queste cose, è un po 'di una domanda. .
L'unica cosa che mi sarò dire che si è
può usare come tuple indici per dizionari.
Non è possibile utilizzare le matrici come indici per dizionari.
E perché, di nuovo, tecnico e Non ho intenzione di correre in esso.
>> Il pset che non ho toccato in questo discorso è pset6.
Quindi, ecco come si 'd implementare a-- ecco
come si dovrebbe implementare pset6 in Python.
Tenendo presente il Python ciclo di progettazione, la prima cosa
che si fa quando si è programmi di scrittura è di controllo
per vedere se qualcuno ha fatto già.
>> In realtà, se si vuole a serve-- Apache 50
fa circa questo, tranne che non viene
standard installati su macchine Linux.
Python fa, e Python semplice server HTTP fa pure.
Se siete mai su una macchina Linux, o l'esterno Cloud9 IDE di CS50
e ti piacerebbe servire questa corrente directory per una determinata porta,
python-m SimpleHTTPServer porto serve questo.
È inoltre possibile importare il semplice server HTTP
e che ha un sacco di funzionalità se si desidera personalizzare, o cambiarlo,
o gestiscono it-- imbracatura a eseguire i propri servizi server.
>> Ecco, questo è Python in poche parole.
E questo è stato CS50.
Grazie.