ROSS RHEINGANS-YOO: Bună, eu sunt Ross. Și aceasta este o seminar CS50. Acesta vă va lua de la programare C programarea în Python în. Python este un limbaj de scripting. E ca și cum în mare parte C în sintaxă, deși unele cu privire la detaliile tehnice ale cum că sintaxa este executat sunt ușor diferite. Este mai puțin puternic decât C, în unele moduri. Este mai puțin expresiv pentru unde în calculatorul dumneavoastră Memoria devine prevăzute, cum se prevăzute, atunci când acesta devine libertate, și aceste felul de lucruri. E mai util decât C, în unele moduri, pentru că este mai ușor pentru a programa în. Limbajul este, într-o anumită oameni, mai mult intuitiv. Și într-adevăr, scopul este de să fie mai rapid pentru a programa si, posibil, mai lent pentru a executa. Acum, dacă te gândești la cantitatea de timp ati petrecut pe ultima set scris problemă codul dumneavoastră împotriva cantitate de timp petrecut pe ultima problemă set de executare codul, ai imagina că limbajul care a fost la fel de rapid la de două ori scrie, și de două ori la fel de lent pentru a executa, s-ar putea fi o imbunatatire fata C în unele moduri. Desigur, atunci când sunteți încercarea de a scrie programe mici pentru a face lucruri mici, Python este un limbaj util alegerea. Și la sfârșitul acestui seminar, sper că veți fi capabil să facă alegere în proiectele viitoare despre ce limbă este corect de a utiliza, nu ideea că o singură limbă este mai corectați tot timpul. Câteva lucruri despre ceea ce seminarului este. Acest seminar nu este destinat să vă învețe Python de la zero. Python este foarte asemănătoare la C, și eu sunt presupunând că ești un student CS50 sau cineva cu o familiaritate similară cu C. Daca esti elev CS50 în jurul valorii de problema set de 6, Deci ai vedea, o mulțime de lucruri în C, eu voi da diferențele majore, și unele din lucrurile care fac Python diferite și speciale și util, dar eu nu am de gând să meargă pentru ceea ce este un limbaj de programare și cum să scrie programe. Cu toate acestea, acest seminar va învăța să scrie programe Python daca esti unul dintre cele câteva grupuri. Din nou ne vom uita la modul în care v-ar pune în aplicare psets-- că ar trebui să fie 1-6 în Python-- și oferă indicii la documentația oficială de referință pentru viitor. Un alt lucru care este important despre modul în care se atribuie această discuție, Acest videoclip va fi on-line, prin amabilitatea CS50, așa că nu ar trebui să se simtă ca aveți nevoie să ia notițe. Puteți merge mereu înapoi și să căutați la ea mai târziu ca o referință. În plus diapozitivele sunt disponibile acum la acest site, care ar trebui ia sa faci o doc Google. Este o versiune ușor prescurtată din ceea ce am afișat pe ecran. O precizare atent înainte sărim în, Python 3 este o limbă diferită de Python 2. Acestea arata mult la fel; Sunt diferențele tehnice foarte mici că va provoca programe scris în Python 2 să nu poată să fie executat în mediul Python 3. Aparatul vine cu CS50 Python, în mod implicit se folosește Python 2. Puteți verifica acest lucru prin tastând în linia de comandă --version python, care ar trebui să ieșire 2.7.6 aparatul curent. Încercați Python 3, care face lucrează în aparatul, dacă implicite Python la 2.X.Y, fie pe aparatul sau de pe propriul dvs. mașini. Ar trebui să înlocuiți Python 3 oricând în această discuție pe care am scrie Python. Dacă aparatul este funcționare 2 în mod implicit, tipul Python 3, pentru a fi în măsură să efectiv urmați de-a lungul și să execute aceste lucruri. În plus, o să vă punctul la resursele oficiale acum. docs.python.org/3--~~V atent că e un 3 și nu o 2-- are referințe utile. Tutorial vă va purta prin o mare parte din aceleași lucruri că fac eu acum, cu excepția sub formă de text. Referință este util ca un referință pentru limba, și Biblioteca Standard dă vă unele dintre extensiile cu funcționalitate suplimentare. Deci un prim program foarte Python. În partea stângă avem C standard, pe dreapta, avem Python. Este posibil să fi recunoscut această problemă, e unul din prima problemei seturi în CS50, și acestea rezolva aceasta folosind aceeași soluție. Acum, motivul pentru care suntem Privind la aceste cot la cot este astfel încât să putem uita la diferențe sintactice. Unul dintre elefanți în cameră care este posibil să fi observat chiar pe bat, este că Python nu are Principalul ambalaj funcție în jurul codul. Deci, în C, scrii o grămadă de fișiere, le leagă împreună, și programul începe de executare la acest lucru numit principal Int. În Python, vă scrie un depuneți, executați fișierul, programul începe de executare în partea de sus a fișierului. Deci, este de gând să înceapă în partea de sus a fișierului merge în jos până când se găsesc altceva. Dacă găsește definiția unei funcții, nu va executa de fapt acest cod, se va defini pur și simplu funcția. Dar aici, când primul Programul este n egal 10, primul lucru pe care acest program va face este să ia această valoare de 10 și a stabilit într-o variabilă numită n. Vorbind de această linie, unul dintre alte lucruri-- sorry-- acest inseamna ca programele C, le veți scrie, le vei face, ceea ce va invoca unele comenzi zăngănit, și apoi veți rula un executabil rezultat. Programe Python, executați Textul file-- acest mario.py ar putea fie acest fișier pe care tocmai am arătat Tu-- vei rula acest fișier și veți executa, și conținutul de ea vor fi executate de interpretul Python. Puteți face acest lucru în IDE dumneavoastră. Deci, dacă am un dosar Buna ziua, care are această pur și simplu conținut. Aceasta este, de fapt Python 2, nu Python 3, așa că nu vă faceți griji despre sintaxa pentru acum. Dar voi alerga Python, pe hello.py, si ruleaza. Un alt mod pe care le pot folosi Python care Nu voi face cu atât de mult în această discuție, este dacă am de tip Python, aceasta ma picături într-un mediu în care Pot să-l hrănească linie Python de linie. Deci, aici, dacă am de tip în spațiu print "Salut, lume". Tip intra. Mi-va scuipa înapoi rezultatele că linia individ imediat. Aceasta este ar putea fi util. În această discuție voi face lucruri pe lamele. Și așa vei putea să urmeze de-a lungul fie aici, sau prin scrierea fișierele reale și apoi de executare le. Dar, merge înapoi la acest de cod, un alt lucru care le-ar putea avea noticed-- bine, nu e două lucruri pe care s-ar putea observa la aceste blocuri. Primul, mai degrabă mai banal, este faptul că Python nu are nici o virgulă trailing. Punct și virgulă sunt opționale peste tot și inofensiv pretutindeni. Le puteți adăuga. S-ar putea face pe oameni care scriu Python pentru un nechezat de viață la tine spate, pentru că nu sunt necesare. Sunt de multe ori un semn de a fi amânată din C. Designerii ale limbii simt că este mult mai clar în acest fel si ca nu este necesar să se declare de fiecare dată când se încheie o linie. Un alt lucru ciudat despre acest n este nu are un tip atașată. Una dintre piesele magice ale Python-- și am de gând să-l numesc magie, dar există foarte din motive tehnice de ce works-- una dintre cele piese magice de Python este că variabilele pot extinde sau micsora să conțină orice date Tipuri le să vrea. Deci, aceasta este o 10. Dacă mai târziu în jos am atribuit această n 0.5, ar fi nevoie de asta 0.5. Nu contează că este un int aici și plutesc acolo, ceva care folosește acest n va, mai mult sau mai puțin, putea chug de-a lungul în cazul în care devine una din cele. Dacă nu există niște foarte reală motiv pentru care nu se poate utiliza datele tip care n are în prezent, moment în care se va obține prins și arunca o eroare, și aceste felul de lucruri. Dar aici, Python nu într-adevăr ceea ce pasă este că am de gând să rămânem în această teză, cum ar fi, vrei chestia asta? Acest lucru in asta? Da, e cam un lucru. Voi lipi în cele din urmă. Va fi o problemă mai târziu, în cazul în care cineva care vrea să folosească în acest scop nu se poate ocupa. Aceasta este una dintre cele majore diferențe între Python și C care îl face ușor de scrie programe foarte mari C și face mai ușor de a scrie Programul Python foarte mic. FOR sintaxa nu este foarte diferite în ceea ce face. E puțin diferit în modul în care este exprimat. Deci acesta este un foarte, ceea ce se numește Pythonic, mod de a scrie aceasta. pentru rândul în gama (n), aceasta este Gama de numere de la 0 la n, inclusive pe fundul și exclusiv pe partea de sus. Deci, este de la 0 la n-1, care este exact ceea ce codul C este de a face, cu excepția că e mult mai ușor să se uite la, probabil,. Blocul este relevant nu a pornit de bretele, în schimb este pornit de acest indentare. Deci, toate aceste linii sunt patru spații de peste la dreapta, sau ca despre o lățime elefant. Și acestea sunt cele care sunt va fi executat în acest timp. Dacă am cârpăci indentare în acest sens și am împinge că de imprimantă la indentarea originală, că de imprimare va părăsi pentru bucla. Spre deosebire de C, unde aici am de fapt nevoie pentru a muta că bretele închis în jurul. Acest lucru înseamnă că nu te erori care sari la tine pentru că pune o proteză în loc greșit. Aceasta nu înseamnă că veți obține erori că sari pe tine pentru că indentate o greșit linie. Deci, se face crestături foarte atent. Sperăm că ai fost foarte atent cu indentare dumneavoastră oricum, și deci acesta nu este că mult mai mult de o povară. Dar o regulă de bază pentru Python, și vom avea o pereche de acestea că vom trece prin prin cursul vorbesc, este să încercați sintaxă naturale înainte de a privi ceva în sus. Deci această sintaxă, pentru acest număr în intervalul, este foarte distinctiv în termeni de stil. O mulțime de lucruri în Python vom vedea luând acest formular. Și așa, dacă ți-a venit cu un nou obiect care vă că ar trebui să fie în măsură să repeta peste acest lucru, în acest format, dovedește că, probabil, susține acest format. Noi nu merge super-adânc în motivele tehnice care e adevărat. Dar este o intuiție util de a avea atunci când sunteți apropie de programe Python, ca acest lucru este doar de gând să lucreze. Incearca-l. Cizme sus linia de comandă Interpret, vezi dacă funcționează, merge mai departe cu lucruri, înainte de a chiar trebuie să se deschidă Google și spune, ceea ce este sintaxa pentru acest lucru special? O mulțime de Python ai putea descoperi doar prin încercarea de. Aceasta în cazul în care este chiar mai asemănător la C apoi Fors sunt. Rețineți că nu există nici între paranteze. Parantezele sunt, din nou, inofensive, dar inutile. Există un colon la sfârșitul La fel ca pentru bucle, și din nou, blocurile relative sunt alin, mai degrabă decât a pornit de bretele. Acest altceva este la original nivel de indentare, și bloc de relevante indentate din nou. Cei de lucru exact așa cum o fac în C. Aceasta este de fapt foarte mult la fel. Din nou, print pierde un caracter off de printf Tu treci niște sfori. Siruri de caractere Se pare poate fi marcat fie pe de citate simple sau ghilimele. Nu e nici o diferență, cu excepția faptului că în interiorul de ghilimele simple puteți utiliza citate duble cu abandona, mai degrabă decât să scăpa toate. Și în interiorul ghilimele, tu poate folosi ghilimele simple cu abandon fără a fi nevoie să le scape. Dacă ați fi dorit să se amestecă le, puteți cu siguranță căuta online, cum să faci asta. Veți observa că aici, Am trecut de la capăt = chestia asta. Acesta este un exemplu de un opțional argument, care este unul din acele lucruri Python care sprijină această face destul de util. Deci imprimare de fapt, are o multime de argumente, care sunt de obicei setat la valorile implicite lor valoare, dar aici Am a decis pentru a trece peste cel numit final. Motivul pentru care am să suprascrie cu un șir gol este că de imprimare în Python, de implicit, imprimă o nouă linie după lucrul care l-ați spus prea. Deci, acest hash este, de fapt de gând să imprima un hash într-o nouă linie. Și dacă nu vreau să imprime hash o nouă linie după ea, atunci trebuie să spun nu se imprima o. Dar, așa, un ultim lucru pe care acest program lipsește pe care o are este o includ în partea de sus. Print este copt în Python Deci, practic că nu există nici sau modul antet care aveți nevoie pentru a includ, deși în cazul în care a vrut pentru a include alte lucruri într-un script Python, Mi-ar face într-un format-- foarte asemănătoare cuvintele sunt doar ușor diferite. Am menționat că nu au nevoie de un principal aici, deoarece Python începe executare, la partea de sus. Dacă aș fi vrut să-și încheie această într-o funcție, am ar face ca astea-- I ar spune def numele funcției, argumente ar putea merge aici și vom a se vedea unii dintre cei mai târziu, de colon, și apoi din nou, acest lucru întregul set off bloc este ceea ce este Operațional bloca pentru această funcție. Deci aceasta este definiția a funcției. Și există o declarație, apoi în jos aici, eu pot apela doar funcția. Și din nou, programul interpret, începând de la partea de sus, va vedea acest lucru este definiția. Acesta nu va executa acest lucru până când se ajunge aici, și apoi e ca, oh Acum ai sunat, am Cred că ar trebui să-l execute. Un lucru care este foarte frecvente pentru a vedea în fișiere Python, în special fișierele Python care sunt puse la dispoziția publicului și dezvoltat by-- și dezvoltat și menținut, este ceva de acest formular. Acest lucru este atât de deoarece basically-- Python, începi la partea de sus și apoi executați în jos la partea de jos, I, în cazul Am avut Mario chemat aici, atunci orice moment am inclus acest fișier în un alt fișier, pentru că am vrut să folosească este funcția Mario, că alt fișier ar au, de asemenea, acest apel la Mario în ea. Și când am fugit acel fișier, ar suna Mario. Deci, este posibil ca numai eu doriți să executați acest dacă am de fapt executat acest fișier special. Și așa că am putea încheia această într-o idiom ca aceasta, în cazul în care am spus, în cazul în care numele acestui execuție mediu este principalul, apoi vreau să facă aceste lucruri. În caz contrar, altcineva se poate use-- includ function-- meu dosarul meu, și doar pentru a obține accesul la aceste funcții fără a fi nevoie pentru a rula lucruri pe care vreau să execute în acest fișier. Aceasta este, din nou, opțional dar foarte frecvente. Aceste lucruri sunt entirely-- sunt exact la fel între C și Python, cu siguranță în 3. Cred că în 2, operatorul divizie uneori vă oferă înapoi pluteste atunci când te operat int, și fie ai vrut sau că nu. Dar plus, minus, și ori lucra exact ca te-ai aștepta, excepteze pe ușor mai multe tipuri. Astfel încât să puteți multiplica flotoare de int, și acele felul de lucruri. set functioneaza exact la fel. Puteți utiliza două semne egale. inequals-- mai mare, mai decât, aceste tipuri de lucruri-- au semnificațiile care esti familiarizat cu ele. În cazul în care C folosește acești operatori, Python folosește puțin mai departe English cele care pot fi citite. Deci, în loc de două, and-urile, vă tip literal cuvântul "și", "sau," sau nu." Ca și în if-- dvs. în Declarații condiționale, am văzut mai devreme că această sintaxă în C corespunde această sintaxă în Python. Și există o mulțime diferită nu acolo, cu excepția un pic de punctuație în jurul părți. Din nou, în cazul în care C ar fi altceva dacă, Python folosește Elif, dar acestea sunt în mare parte Schimbări la nivel de suprafață. Repetare ca acest lucru este de multe ori scris în această expresie în Python. Puteți produce acest tip de chestia asta cu o buclă în timp ce la exterior dacă ai vrut, dar cu siguranță nu trebuie să. Și din nou, dacă ai vrut tipări elemente în dintr-o serie s-ar putea face în felul acesta. Unul dintre lucrurile distractive despre Python, deși, este că nu ai nevoie pentru a utiliza această paradigmă, și puteți utiliza un unul ceva mai elegant. Ai spus de o in ordinul. Deci, mai degrabă decât a merge aici și să fie difuzate peste indicilor, și apoi trăgând elemente individuale, vă spun pentru a de fapt doar rula peste elementele ei înșiși. Și apoi indiferent ce faceți interiorul poate opera direct pe elementele, care este destul de distractiv. Și vom see-- vom utiliza că idiom nou și din nou așa cum am mers pe jos prin codul. Aceasta este, din nou, un exemplu de ceva că voi apel Python magie, deși există motive foarte tehnice ce functioneaza. Și acolo sunt lucruri tehnice care trebuie să fie adevărat despre matrice pentru pentru ca aceasta să funcționeze în spatele scenei. Lucru este că cele mai multe tipuri care te-ai astepta ca acest lucru să funcționeze au avut acest implementat pentru te în limba built-in. Un alt lucru pe care ar fi frumos dacă aceasta a lucrat în toate limbile, dar există unele motive pentru care nu se poate, Tipărește această șir ori acest număr. Se pare că în Python, face exact acest ce ați dori, care este doar distractiv, și înseamnă că putem de fapt reduce acest program, din nou mario.c. Mai degrabă decât iterarea mult, putem doar spun, vreau un numar de spatii, Vreau numărul de hash, iar unele hash la sfârșitul. Și din nou, vom folosi acest format. Aici, ne trece în o variabilă în acest fel. Din nou, nu avem nevoie să spun ce tip de variabilă este, și singura dată am să obține erori este la momentul execuției. Când cineva încearcă să treacă ceva în, acesta va intra în funcția de bine. Dacă ne clin aici pentru că acest lucru nu este lucru pe care le puteți crea intervale de peste. Voi lua o eroare de execuție acolo, și voi trebuie să-l depanare în acest fel. Dar, în același timp, nu am să fie foarte atent cu privire la ceea ce devine trecut în, atâta timp cât în ​​real executie totul funcționează foarte curată. Aș putea face chiar acest un aspirator pic folosind o anumită funcție built-in pe siruri de caractere, care este drept Justify. Acesta este doar un util situată în jurul bibliotecii. Este scris în documentația dacă te duci și-l caute. Și spun, ei bine am de gând să aibă acest șir, un numar de hash, si as dori sa justifice dreptul pad it-- l cu spații pentru a fi această lungime. Din nou, acest lucru este în documentație, care aduce us-- Voi faceți clic de fapt prin these-- Ceea ce ne aduce a doua regula noastră pentru biblioteca standard Python-- Metodele de funcții sunt prietenii tăi. Și este de multe ori merite pentru a merge în căutarea Mă întreb Dacă există un lucru pe care tocmai face acest lucru. Există, probabil, este. Dacă doriți să pad un șir de caractere, dacă ai fi dori să ia în spate jumătate de un șir, dacă ai fi ca să caute printr-un șir de caractere, în cazul în care doriți să sparge o serie de lucruri împreună cu un șir cu virgule între ele, există biblioteca standard funcții pentru a face acest lucru. Si face viata ta mai ușor dacă le folosesc în loc de rulare totul pe cont propriu în cinci linii de cod aici, cinci linii de cod aici. Că într-adevăr începe la adăuga până în timp real. Unul dintre lucrurile interesante despre modul în care acest este chemat. Veți observa că există un lucru punct. Am un obiect pe stânga, și apoi am sunat o funcție un punct. Acesta este unul dintre paradigmele care Python folosește pentru atașarea metode de obiecte. Vom vorbi despre ceea ce acest este foarte scurt la sfârșitul anului, dar știu că putem opera atat pe lucruri de a lua ca punct de lucru spunând indiferent, sau sunand o funcție care ia acest obiect și alte câteva argumente. Deci, acestea sunt ambele sensuri care lucrurile se face în Python. Și dacă un anumit funcție este implementată în acest stil sau această stil este ceva ce ar trebui să arate în sus până când veți obține un hang pentru care o este posibil să cadă în. Există o mult sau mai puțin coezive Filozofia din spatele Python pe care le absorb cea mai mare parte scriind foarte mult în ea. La un moment dat, unul dintre acestea care ceva va fi implementat ca devine natural. Pentru moment, este doar ceva ai afla ca să îți dai seama fiecare lucru în parte. Bibliotecă atât de standard de funcții sunt prietenii tăi, și ei vă permit să scrie lucruri pe care ia acest spațiu într-adevăr în curând mult, într-adevăr elegant. Și acest lucru este, de fapt, probabil, mai mult lizibile, aș spune, decât programul C acolo. Nu mai vorbim de faptul ca este atat de scurtă puteți potrivi un întreg elefant în spațiul pe care l-am salvat. Un alt lucru, aceasta este o punere în aplicare de Mario că este punct C, care cred că este cel mai scurt puteți să-l. Ea nu are int get, dar aceasta coduri greu valoarea 10 în același mod în care acesta nu. Pare ca acesta ceasuri în cel 84 de caractere, în timp ce Python este de 64. Și acest lucru este infinit mai ușor de citit decât acest gunoi aici. Deci Python este mai eficientă în spațiu. Este mai puțin eficient în timp, dar nu cu mult. Liste sunt un lucru important în Python. Noi nu le-am văzut, dar ei funcționează la fel ca matrice făcut în C. Deci, aici, aveți posibilitatea să le declare, le puteți trece într-un lucru. Acum pătrate deține un serie de aceste lucruri. Din nou, nu ne-au declarat ca tip, dar dacă vom încerca vreodată să-l folosească, ceva care te-ai aștepta să lucru pe o serie de întregi este de gând să lucreze la o serie de numere întregi. Acesta este un lucru pe care aveți absolut nu se poate face în C, pentru că Memoria este atât mâinile pe, dar este foarte ușor de făcut în Python. Dacă vreau matrice mea să fie mai mare, pot adăugați un element să-l și-l e bine. Ce se întâmplă în spatele scenei? Interpretul va merge afară și a lua niște memorie, și poate că veți obține o pic de memorie suplimentară, așa că nu, așa că am nu am la realloc de fiecare dată. Dar cât de mult au mai Memoria nu-l nevoie? Acest lucru nu reprezintă decizii care va trebui să facă, Acestea sunt deciziile pe care interpret este de gând să facă. Aici vom vedea gama putem ia două argumente, dar este încă va fi inclusiv din partea de sus, astfel vom adăuga 1 acolo. Aceasta este o expresie, care este o și mai mod inteligent de a scrie lucruri de genul asta. Se numește listă înțelegere, si aici ce spunem este Aș dori să pună în I pătrat pentru fiecare valoare a i în acest interval. Acest lucru pe dreapta ar putea fi un alt matrice, și acest lucru pe stânga să fie orice funcție special că ar lua în i ca o variabilă și dă-mi unele rezultate. Ce am de gând să faceți este să, Am de gând să construiască o matrice care este toate aceste lucruri pentru fiecare valoare în acest interval. Și acest lucru este foarte elegant, super-scurt, si e foarte clar ce înseamnă. Aceasta este una dintre cele mai lucruri-- acest lucru este, din nou, o de-- foarte emblematic al motive care oameni ca Python. Dacă vă place de programare în acest fel, atunci Python este o limba pe care s-ar putea dori să învețe. Și din nou, există tehnic motive Aceasta funcționează. Dar în ceea ce ne priveste, am mult sau mai puțin nu-mi pasă. Deci, dacă doriți să imprimați listele, unele dintre aceleași expresii sunt utile. Pentru i in acest interval, am putea index prin toate lucrurile și apoi imprimați-le pe toate. Și veți vedea len aici. Dacă v-ați dorit vreodată pentru a obține lungimea de matrice ca e foarte ușor în Python, este foarte greu în C. Acest lucru ar imprima exact ce te-ai aștepta să-l. Am putea, de asemenea,, așa cum am văzut mai înainte, repeta peste elementele din matrice direct, iar apoi doar vorbim despre ele, mai degrabă decât având indicele înapoi în matrice de fiecare dată. Și acesta este un lucru pe care le puteți face. Deci, în C, dacă vă întreb ceva ca aceasta, de imprimare ar spune, care este o serie de numere întregi. Asta nu e cu siguranta un șir de caractere, nu pot imprima. Python mult sau mai puțin nu-i pasă. E ca și cum, există o modalitate de care am ar putea transforma acest lucru într-un șir de? Da, voi face asta. Și așa voi imprima doar asta. Acest lucru înseamnă că poți fac lucruri like-- acestea sunt cele mai multe piese dure de joc de cincisprezece ani, în scris pentru scurt timp în Python foarte. Veți vedea că nu există un pic de-- aici Am aruncat un întreg la un șir de, și am să fac asta manual. Și am de gând să adăugați într-un alt șir, sau altfel Python devine confuz. Dar dacă atunci când sunteți adăugarea unui șir de un număr întreg, Sunt Cred că pentru a obține o integer spate sau un șir înapoi? Dar, din nou, doar dacă apel str pe un lucru, și ar putea, în orice posibil lumea fi transformat într-un șir, acesta va fi, probabil, transformat într-un șir. Aici, vom vedea utilizarea Lista imbricate înțelegere pe stânga, unele indexare, care este exact cum te-ai fi folosit pentru a, și unele imprimarea din lucruri. Din nou ne-am definit ceva funcțiilor și le vom chema în principal atunci când vom ajunge de fapt fișierul. întoarcere funcționează exact ca tine ar aștepta de la lucrul cu C. Find, putem stabili lucrurile, cum ar fi astea-- aici e lista înțelegerea există o misiune la o variabilă, si putem face de fapt chiar mai ușor. Nu avem nevoie să scrie căutare, deoarece built-in pentru limba este în cazul în care acest lucru este în lucru această matrice. Return true, altfel return false. Deci, asta e totalitatea găsi. Totalitatea fel implică asteptare fel, care este-- există implementari din acest construit în anumite biblioteci C. Dacă doriți acest un fel de spate, ai poate trece peste acest opțional argument în sens invers cu un adevărat. Și dacă doriți să sortați peste siruri de caractere, care este built-in, de asemenea. Deci, acest lucru nu este să spun, acestea sunt lucruri pe care aveți nevoie pentru a face în fiecare zi, dar ideea este că această este filozofia Python, ca toate acestea care doriți un fel de vrei sa faci sunt built-in. Și cele mai multe funcții standard, așa fel, lungime, oricare ar fi, sprijini de intrare mai logic sensibil. Te sun len pe o matrice la fel modul în care len apel pe un șir. Tu multiply-- sortați siruri de caractere același mod în care a sorta tablouri. Cele mai multe funcții standard că oamenii construi, și cel mai terțe părți biblioteci care oamenii construi, pentru că sunt imite proiectarea biblioteca standard, poate fi numit pe tot ceea ce esti cum ar fi, de ce nu acest lucru doar locul de muncă, în C. Mai mult sau mai puțin, se va lucra în Python pentru că oamenii lucrează în spatele figurii ce un lucru este și apoi opera în mod corespunzător pe el. Deci, din nou, fundal tehnice, dar face viața mai ușoară ca programatori. Deci, aici e fisier I / O. fișier I / O are o multime de lucruri mici care fac complicat, și așa există resurse on-line, dar pe scurt, te sun deschise pe un fișier nume cu un anumit tip. Așa că a citit, citit și scrie, scrie sau adăuga. Ai citit un anumit număr de caractere afară și să imprimați aceste, veți obține Buna ziua! Adică, ca acest fisier avut Buna ziua! În ea, suna pentru a citi, și ceea ce veți primi înapoi este un șir care este dotat cu toate de restul de matrice, sau a restului fișierului. Dacă apelați citit din nou, esti la sfârșitul fișierului, și astfel încât să nu te nimic și astfel încât veți închide. Din nou, acest lucru este, mai degrabă decât .close fișier de aproape, cum ar fi în C Acest lucru este mai mult sau mai puțin, deoarece f este un lucru, și doriți pentru f pentru a închide. Dar fișier de bază I / O nu este deosebit de complicat. Din nou, dacă doriți să deschideți un fișier, în cazul în care doriți să citiți o anumită linie, puteți obține din special line-- e construit-in-uri pentru asta. Dacă doriți să scrie un lucru, puteți scrie acest lucru. , Dacă doriți să scrie individuale muscaturi, puteți scrie cele. Și dacă doriți să repeta pe liniile unui fișier individual, așa cum am făcut într-o piesă de la acum câteva săptămâni, puteți face acest lucru pentru a. Din nou, cele mai multe obiecte pe care le-ar place să fie în măsură de a repeta peste suport iterarea peste ele. În Pitonii, un fișier este, poate, un lucru pe care Aș vrea să itera peste linie cu linie. Dacă ar fi fost un dicționar de cuvinte și am fost încercarea de a obține cele individuale cuvinte din, apoi, în cadrul acestei bucle, line se va fi fiecare cuvânt, la rândul său, iar acest va fi executat pentru fiecare linie în dosarul până la sfârșitul fișierului. Și din nou, dacă aș imprimate fiecare line, liniile sunt dotate cu linii noi, așa că eu sunt setarea la sfârșitul înapoi la un lucru ca asta. Atunci aș obține conținutul fișierului meu. Al doilea lucru care funcționează în unele moduri, cum ar fi liste, și în unele moduri ca ceva substanțial mai puternic, sunt dicționare, care sunt într-adevăr rece de folosit, dar sunt de fapt hash tabele în deghizare. Puteți crea unul utilizând exact două personaje, care este minunat Dacă ați încercat să pună în aplicare tabel hash pentru setul de probleme, știi de multă durere, care poate fi. Dar oamenii au facut ea, și-l face atât de bine, care nu trebuie să mai griji. Apoi, puteți introduce lucruri individuale. Tables-- Hash sau dictionare nu deosebit de pasa ce stocarea în ele. Deci, dacă unele intrări sunt numere, și unele intrări sunt liste, dacă unele intrări sunt alte dicționare, și unele intrări sunt siruri de caractere, Python nu multa grija. Din nou, dacă te duci în ea așteaptă un șir și ceea ce te întorci este o matrice, care e problema ta. Și poate că e vina oricine Crezut ca a fost a pune lucrurile în dicționar, poate că ai fost tu. Dacă asta a fost cineva altfel, sperăm că erau bine s-au comportat cu privire la ceea ce mergea în dicționar și nu a lăsat nici un capcane pentru tine de a cădea în. Dar funcțiile standard vor vă dau înapoi lucrurile bine-au comportat. Deci, ei spun acest întoarce înapoi o dicționar de siruri de caractere. atunci tot ceea ce merge pentru a ieși din este un șir. Daca faci parte din acest lucru și excursii te-ai trezit, ei bine, care ar putea fi pe tine. Python cu siguranță vă oferă suficient frânghie pentru a te închide, dacă doriți. Acum putem imprima individuale elemente de asta și asta se întoarce exact ceea ce te-ai astepta. Exact ceea ce te-ai aștepta, cred, este o expresie care eu sunt, folosind o mulțime, dar asta e mai mult sau mai mai puțin cum funcționează Python. Dacă vă întrebați pentru un lucru care nu este aceasta, Python va arunca o eroare și vă va părăsi din indiferent de program au fost în. Va imprima efectiv mai multe informații decât faptul că, acesta va indica Tu-- Va adăugați o linie, și așa. Și, din nou, poate ne-o dorim a repeta peste dicționare și pentru a găsi toate lucrurile din ea. Aici suntem iterarea peste două lucruri în același timp. Și așa vom face cu o cheie, valoare, dar apoi tipări toate acestea. Și dacă am vrut să cast-- dacă am fugit de fapt acest lucru, ne-ar avea unele probleme, deoarece on-- când ne-am dus cu David, nu a putut add-- dacă nu am aruncă-l la un șir de caractere în primul rând, nu am putut adăuga că matrice de siruri de caractere pe un șir. Dar dacă l-am aruncat într-o string, vom obține ceva ca aceasta, care este, poate, ceea ce ne-ar plăcea să citească. Și acest lucru este Speller. Doar citim în lucruri. Deci, putem citi în cuvinte individuale ca linii. Am taie ultima lucru, asa ca de colon minus 1 chomps pe ultimul lucru pe care we-- ultimul caracter a unui șir. Vom spune. OK, fiecare dintre aceste devine introdus în acest dicționar, cartografiere la o valoare de 1. Nu facem deosebit pasă de asta, dar este doar acolo pentru a spune, oh bine, chestia asta voi pune în dicționar. Pentru că mai târziu ceea ce suntem de gând să faci este că suntem va spune, bine, dacă e în dicționar, la toate. Din nou, această verificare pentru membru este de până operare folosind un complet diferit algoritm decât se va într-o listă, dar noi numim la fel, ceea ce este o parte din care înveliș de zahăr Python lucruri, astfel încât acestea sunt mai ușor de utilizat. Și din nou, am văzut lucruri de genul asta. Aceasta este de fapt găsi, sau Este exact aceeași sintaxă ca găsi, dar funcționează pe un complet diferit structura. Și nu ne pasă deosebit. Deci acestea sunt lucrurile pe care le li sa cerut să pună în aplicare pentru Speller. În acest ritm, vom obține mult sau mai puțin toate psets făcut. Audiența: Așa că de fapt doar se intoarce ca și scris incorect în cazul în care nu se potrivesc ceva în dicționar? ROSS RHEINGANS-YOO: Da, da. Și așa, aceasta este o adaptarea unui set problemă care vă solicită să facă exact acest lucru. Audiența: De ce este linia minus 1 acolo? ROSS RHEINGANS-YOO: Deci atunci când sunteți iterarea peste un fișier cere prin linii, liniile vin cu un nou personaj linie la sfârșitul it-- de 1 minus este doar pentru a face cumpărături pe cei de pe. Și aceasta este o deosebit de flexibil mod de indexare în lucruri. Deci, dacă aveți un șir de caractere, și doriți, și eu sunt O să încep de la caracter trei și am de gând să merg până la capăt. 3 colon va face asta pentru tine. Daca esti ca, vreau să înceapă de la început și du-te la ultimul minus 1 caracter, de colon minus 1. Și dacă ai vrut să mergi la a treia la minus primul, atunci ai spune de 3 minus 1. În plus, dacă doriți să index în lucruri începând de la spate, doar indicele cu numere minus. Și pentru că, în cazul în care C sau, poate, ar exploda te hrănesc alte memorie nu au avut acces, aud vă pot spune minus 1 înseamnă ultimul, dar 1 de caractere într-un șir. Module sunt version-- sunt Analogii de biblioteci în C și sunt utile pentru o mulțime de lucruri. O mulțime de lucruri pe care le-ar dori să facă în Python, În afară de simplu manipularea variabilelor, doriți să cârlig în biblioteci mari, cu mai mare interfețe și mai mult capabilități pentru a interacționa cu alte părți ale lumii. sys este unul dintre cei cu un buchet de instrumente că sunt utile pentru a interacționa cu sistemul în sine și se va importa ca sys import. Există mai multă documentație din că, pe care le-ar putea merge aici, sau ați putea găsi pe Google de googling sys Python. Tastați Enter. Primul link va fi documentația în Python 2, al doilea link-ul este de gând să fi Python documentare 3. Și dacă am scris un fișier care se uita ca asta: Daca in mod special, suntem uita la care operează pe argumente în linia de comandă, ca și cum am învățat să facem foarte timpuriu în această clasă. Acest lucru nu este dificil. Puteți ieși argv, care este unul din acele lucruri care este pus în aplicare de sys. Nu e built-in la pachet bază, dar, din nou, tu poate extinde prin importul că funcționalitatea din sys. Vei numi sys. tot ceea ce. Aici e argv. Nu e de fapt nici o argc în sys, pentru că poate obține atât de ușor de apel Len. Am imprimat atunci asta, atunci vom primeste o pasa la echo-args.py nostru terminal. Ne întoarcem o matrice, care este acest prim argument. Din nou, acest lucru este argv 0, care este Numele lucru care a fost numit. Dacă l-am numit cu suplimentare argumente, am obține cele înapoi. Aceasta este o modalitate de a obține argumente în linia de comandă. Dacă doriți steaguri unde ai transforma lucruri speciale pe sau suprascrie un anumit mod implicit, argparse este prietenul tău. Și din nou veți găsi că on-line la python argparse la Google. Există o serie de utilitate module care vă aflați folosind și din nou, dacă va petreceti un moment din această limbă importul jsons pentru citirea în și din JSON fișiere, nu atât de complicat. Te deschide un fișier, te-a chemat json.load pe acel fișier și te întorci un lucru. Ce e chestia aia? Este un obiect JSON. În cazul în care pe care JSON are matrice, Python are tablouri. În cazul în care are ca JSON tablouri asociative, de Python dicționare, siruri de caractere, și numere, și așa mai departe. Vrei să-și arunce asta, tu deschide un fișier nou, te sun benă, și sarcini și haldele de du-te și în afară de siruri de caractere. În mod similar, marinate este chemat în esență aceeași interfață. E ceva mai util dacă te dumping obiecte Python. Deci, dacă v-ați dorit vreodată să salveze o versiune a stadiului actual unei variabile pentru un viitor a alerga a programului, marinate este de Python bibliotecă pentru a face asta. Dacă aveți orice fel de variabilă care poate fi scris în în cuvinte ca și caractere și bytes-- ca acest dicționar, am putea scrie, am ar putea scrie ca ca un obiect JSON, care a fost literalmente aceste caractere. Și apoi ar fi foarte ușor pentru un om pentru a deschide o up-- deschide si citit-o. Dacă nu am deosebit de pasă de oameni citesc asta, am putea pachet chiar mai eficient în forme care pot fi ulterior despachetat sau care ar putea fi ulterior umflate. Și aceasta economisește 80% din spațiu care obiectele ar putea ia dacă le-a scris pe longhand. Te sun marinate foarte mult aceeasi groapa way--, sarcina, și apoi te lucrurile înapoi. Deci, dacă sunteți scris foarte programe scurte Python care doriți să salvați de stat, și apoi citiți le înapoi mai târziu, lucruri de genul asta sunt prietenii tăi. Ca ai putea foarte le arunca cu usurinta ca JSON. Cele mai multe obiecte Python poate arunca afară JSON dacă există vreo speranță că structural acestea ar putea fi reprezentate în acest fel. Acestea sunt doar vârful iceberg pe module care sunt utile. Deci sys, os, multiprocesare, sunt un fel de workhorses de bază pentru lucruri avem nevoie pentru a interacționa cu os sistemul de fișiere., ca os.isfile, os.isdirectory, os.makefile, acestea sunt prietenii tăi. Dacă doriți pentru a interacționa cu un anumit tip de fișier, JSON, marinate, csv. Dacă doriți pentru a interacționa cu web de pagini, pentru a obține http urllib pagini. bs4-- BeautifulSoup-- e un parser minunat pentru html. Ai rula pe un html și vă obține acest obiect matrice imbricate acum, pe care le poate parcurge peste Lookin, cu ca în căutarea doar pentru dacă este, în, care este fantastic. Există o grămadă de pachete pentru running-- pentru a face mai ales lucruri MATHY. Deci, dacă doriți să se înmulțească, invertit, transforma matrici, NumPy este folosit de oameni toate Peste tot în lume pentru că. scipy este chiar mai util instrumente în această direcție. masina de învățare sklearn--, procesarea limbajului natural, super-lucruri utile, devine implementat în Python tot timpul. Și din nou, ia ușor mai mult pentru a write-- rău, ia puțin mai mult pentru a rula, dar motivul pentru care inginerii reale tind folosirea Python este pentru că tind să fie blocat pe tine scris codul, mai degrabă decât computerul care execută codul. Deci dacă ai de gând să scrie o Programul, care o mulțime de alte persoane de gând să utilizați pentru totdeauna, ca și Linux, s-ar putea scrie în C. Dacă ați fost de gând să scrie un motor de calcul, s-ar putea scrie în Python, dacă este necesar să-l schimbe la fiecare câteva luni. Unii oameni s-ar scrie în C pentru că sunt așa. Deci am vazut sys import ca o modalitate de a obține lucruri de de a obține modul în programul tău. De asemenea, puteți importa ca un pseudonim, dacă doriți. Din nou, multiprocesare este o durere de a tip de fiecare dată, astfel de import ca mp și apoi oricând să-l utilizați în program, vei spune mp.process, sau ceea ce ai. Dacă doriți import doar un singur lucru, astfel urllib are un lucru numit cerere, astfel încât să puteți importa doar că. Mai târziu, nu-l va invoca ca urllib.request, dar la fel de cerere de la sine. Și puteți importa totul de la un modul, dacă doriți. Acest lucru nu este uneori o idee, bună acest obicei nu este o idee bună, de fapt. Pentru că very-- pentru că dacă ceva în care modul are un nume pe care le a vrut să folosească în altă parte în programul tău, nu poți. Și nu este întotdeauna evident că este cazul. În scopul de a se asigura că ce faci a fost în condiții de siguranță, aveți nevoie pentru a deschide modulul și a vedea toate din numele care ajung în there-- toate funcțiile, toate variabilele care trăiesc în acel modul, pentru ca esti aduce toate le în spațiu de nume local. Deci, oamenii fac acest lucru. Se recomandă în general care nu faci acest lucru. Dar oamenii fac asta tot timp pentru că sunt leneș și nu doriți să tastați afară mp. nimic, niciodată. Toate acestea vorbesc despre module adu-mi în jurul valorii de la o scurtă discuție de modul în care concepe programe în Python. Primul pas este de a verifica pentru a vedea dacă oricine altcineva a făcut deja un lucru, sau făcut 90% din lucru. Șansele sunt probabil au, și ar trebui să du-te lucru și executați. Sau scrie un înveliș în jurul ei pentru ao adapta la scopul dumneavoastră. Este numai după care are nu te-ar atunci că du-te mai departe și write-- începe gândesc cum v-ar pune acest lucru împreună. Există o mulțime de lucruri acolo, și asta e unul dintre cele mai utile lucruri despre Python. Ca limba este elegant, limba este ușor de utilizat, dar și pentru că este atât de elegant și ușor de folosit, de persoane au fost folosind-o pentru o mult timp și nu există o mulțime de lucruri acolo pe care le puteți valorifica pentru uz propriu. Deci, ultima regulă de Python este, cineva altcineva a scris, probabil, deja un modul pentru care, altcineva are deja probabil scris o bibliotecă pentru asta. Inainte de a incerca sa faci un lucru, uita-te pentru a vedea dacă a fost pusă în aplicare. Nu e așa de greu. Toate modulele pe care am pus înainte, cu o singură excepție probabil, vin pre-instalate în fiecare instalare Python dotare standard. Și astfel, cu un apel la importa orice altceva, te au toate această funcționalitate de la vârful degetelor. Început pentru a încheia acest Discuție, există câteva lucruri care l-am lăsat ca cutiile negre și un fel de glosat de peste, și nu există câteva alb află că am a declarat că de dragul de onestitate, Voi cel puțin punct de la aici, chiar dacă nu voi du-te de super adânc în toate dintre ele si explicatii lor tehnice. O mulțime de lucruri care l-am numit magie este ceea ce alți oameni ar numi Programare orientata pe obiecte. Deci, există o mulțime de lucruri-- așa variabile nu sunt foarte adesea bytes simplu stând în, memorie, dar sunt foarte complicate obiecte care au internă de stat cu privire la funcțiile și loturi variabile de ascunse, o mulțime de funcționalitate ascuns, care vă permite să le transforma în siruri, care vă permite să itera peste ele. Și dacă sunteți writing-- si motivul că acestea au toate această funcționalitate bogată se datorează faptului că people-- arhitecții language-- au plecat prin și pentru fiecare standard de obiect, pus în funcționalitatea să spun acest lucru este modul în care acest lucru este cum acest lucru se întâmplă pentru a opera dacă cineva dorește să itera peste el. Deci tot ceea ce ar putea cineva eventual doresc să repeta peste, a scris în logica manual de modul în care sunteți Trebuia să itera peste care un obiect. Tot ceea ce ați putea dori, eventual, fac obiectul unui dumping într-un șir a scris logica. Aceasta este funcția care vă sun dacă vrei sa arunce acest lucru la un șir. Acesta este motivul pentru care puteți apel Len pe lucruri, acest este motivul pentru care puteți apela în, aceasta este de ce puteți apela în cazul în care în tot pe care vrea să, pentru că cele toți sunt ducând cu ei, know-how-ul tehnic pentru a face acest lucru. Acest lucru este ceva ce eu sunt super-nu de gând să meargă în. Dar pentru lucru în lista subtil este diferit de stil C pentru bucle, și puteți citi totul despre asta pe Internet dacă sunteți interesat. Există o parte întunecată pentru toți de acest lucru, pe care am menționat, astfel încât nu există două lucruri. Primul este faptul că acest obiect orientat programare adaugă o mulțime de deasupra la lucruri aleatorii, astfel încât să se încheie folosind mai mult de memorie; va ajunge folosind un pic mai mult timp decât v-ar altfel. Other-- dar mai mult parte întunecată insidios la acest este, în cazul în care lucrurile doar acționeze ca le doriți să fără a fi nevoie să se gândească super tare despre faptul daca aceasta ar trebui să fie un int sau dacă ar trebui să existe o float, ar putea fi faptul că aici pe care o produce un int, dar peste aici cred însă că vor always-- rău, ar putea fi faptul că aici pe care o produce un flotor, dar când ajungi la a doua parte de programul tău, te gândești, oh bine, dar vor dă-mi mereu un int. Și dacă nu, este posibil pe care le prins undeva, dacă încercați să utilizați că pentru a indexa într-o matrice, sau ceea ce ai. Deci, una din real lucruri utile despre C este te forțează să crezi într-adevăr greu înainte de a face any-- înainte de a vă aduce orice variabilă în existență, ca ceea ce este tipul acestei variabile. Si va avea acest tip pentru toate timpurile. Nu este adevarat Python, și, de fapt, tu can-- daca esti doar un fel de a merge dupa ureche, și face unele decizii într-un fel într-un singur loc. și unele decizii unul mod în alt loc fără a pune destul de lucruri în spatele scenele din alt loc pentru a prinde lucrurile corect, pot obține unele erori foarte ciudate. Și programul de funcționare poate ține pentru un timp foarte lung, pentru că este a face o mulțime de muncă de spus, bine acest lucru ar putea opera în acest fel, așa că am de gând să ruleze în acest fel. Și, de fapt, faptul că acesta împinge transmite printr-o mulțime de erori mici înseamnă că, de multe ori, atunci când unei erori de fapt rău este de și tu nu de fapt, doresc să-l reparați, sfârșește mile away-- programului sfârșește oprire de mile departare din momentul în care a avut eroarea ta. Și astfel un lucru pe care am dori programe de făcut, sometimes-- un lucru pe care am dori programe să facă atunci când suntem depanare este nu cu voce tare și nu foarte rapid atunci când ceva nu merge bine. Python este foarte rău la asta. Python este foarte bun la nu lipsa de rulare înainte și prin lucruri neasteptate. Deci acest lucru este util atunci când sunteți scris programe mici. Când ajungi complicat bug-uri uneori ia o lungă perioadă de timp pentru a le tachineze. Deci există o parte întunecată pentru toți de acest lucru, ca ea pur și simplu funcționează. Pur si simplu functioneaza ca te-ai aștepta să. Cu excepția faptului că, atunci când nu, ajungi într-un loc complet diferit și încercând să dau seama unde a fost că te-ai dus gresit. De colectare a gunoiului este-- astfel un lucru pe care îl vei observa este că oricare dintre aceste lucruri pe care Am adus în existence-- aceste tablouri, aceste dicționare, aceste obiecte, acestea nu se files-- eliberat. Nu a fost nici un apel la liber în oricare dintre această discuție. Și asta a fost pe partea de C, deoarece nu am intrat în aceste lucruri. Dar, în Python-side, nu este un program gratuit. Lucrurile devin automat eliberat atunci când Python crede că nu sunteți în căutarea la ei. Nu e foarte bine eliberarea lucruri care s-ar putea fi, eventual, mai uita la, Dar aceasta înseamnă că, dacă ați fost O să aloce acest lucru mare, si tu esti ca, oh Am terminat cu ea acum, este dificil să-i spuneți Python că ai terminat cu asta acum. Puteți seta uneori care variabila să fie nici unul, și apoi în cele din urmă sperăm că colectorul de gunoi vine prin și curăță-l. Dar, din nou, nu trebuie au control asupra acestei. Și unul dintre motivele pentru care oamenii folosesc C Pentru o performanță cu adevărat lucruri critice, este într-adevăr această capacitate de a știu când se alocă memorie și atunci când este eliberat, și au o mulțime de control asupra a zis: Sunt folosind nu mai multă memorie decât am nevoie. Care este ceva care Python nu este prea mare, la. Audiența: Pot să te întreb ceva? Ce ai vrut să spui prin nu cu voce tare? ROSS RHEINGANS-YOO: Deci, dacă ceva se întâmplă în neregulă și ești în depanare mod, v-ar foarte des doresc programul tău să-ți spun unde este mers prost, și nu opri doar liniste rulează. Dar ai de fapt, pentru a imprima din tot felul de informații despre ca, aici a fost asta. Acest lucru sa întâmplat Dacă imprimați un wen-- dacă rulați un server-- web Audiența: [inaudibil] ROSS RHEINGANS-YOO: Da, în cazul în care rulați un server de web, e, uneori, de rău, dacă sunteți aruncarea întotdeauna erori, și spui, bine că nu au de lucru. Am de gând să se oprească. Mă duc să ignore l și să păstreze merge mai departe. Pentru că atunci puteți obține în sute de aceste erori și să nu le vadă. Ar fi cu siguranță util în scopuri de depanare dacă de fiecare dată serverul dvs. de web a făcut o erori, ai avut înregistrările durabile de care. Poate vrei chiar programul pentru a opri, astfel încât aceste înregistrări Nu te îngropat sub lucruri. Dar, din nou, asta e în modul de depanare. De multe ori în modul de producție, lumea este un pic diferit. Și în scripturi mici care Alerg, în cazul în care lucru pe care i-am spus să fac ar putea fi doar un pic off de la ceea ce mi-ar place să facă, apoi un fel de a impinge prin erori este ceva ce s-ar putea dori. Și în aceste cazuri, cu siguranță Python câștigă într-adevăr începe sale. Ultimul lucru pe care nu am vorbit în asta: că nu am vorbit despre dar poate fi foarte enervant primul timp aveți unul dintre aceste erori, iar al doilea și al treilea și al patrulea timp aveți unul aceste erori. Python, am menționat că utilizează spațiu alb să-ți spun ce nivel de indentare și ceea ce bloc funcțională sunteți în, tratează file și spațiile diferit. Deci, dacă fila peste de patru, și apoi următoarea linie are patru spații, chiar dacă acestea apar ca aceeași sumă în editorul dvs., Python nu le trateze la fel. De fapt, Python tratează file și spații, cum ar fi de petrol și de apă. Acestea sunt lucruri doar diferite. Nu există nici un anumit lungime care o filă este, deci nu e ca o filă este egal cu 8 spații, și așa v-ar lua în jurul acestuia în acest fel. Ca, atunci când se spune, ceea ce nivel de spatiu alb Sunt la, este de fapt în căutarea unui model de spații și file. Și astfel, cel mai bun mod de a face cu acest este de a utiliza întotdeauna spații tot timpul. Și, de fapt, în Cloud9 IDE și IDE CS50, insertii cheie Tab patru spații în loc de o filă, care este foarte util. Deși, din nou, în cazul în care ai scris-o Python program cu file care va fi bine, e doar daca cineva intrat și a încercat să adăugați o singură linie pentru programul dvs., care avea patru spații pentru fiecare tab, ar rupe. Și ar rupe într-un mod că într-adevăr nu este vizibil. Deși eroarea reală mesaj care aruncă are de a face cu noi liniuță nu se așteaptă aici, sau-- dacă este vorba despre liniuță și se pare că e greșit, este, probabil, pentru că există o problemă tab-spațiu. Ei încă mai enervant pentru a depana. Cel mai mare ansamblu din această discuție, pe care nu am ajunge la deoarece este într-adevăr o, subiect subtil complicat, și nu a fost necesară pentru a face orice din lucrurile pe care le-ai făcut până acum, sunt un concept numit tupluri. Ei sunt acolo la fel ca tablouri pe care nu le puteți modifica. Ei se obișnuiesc peste tot, deoarece ele sunt utile pentru o mulțime de lucruri că nu sunt utile matrice pentru. Dar, dacă doriți pentru a face o matrice, și apoi promit interpretul care sunt nu de gând să doriți să modificați că thing-- De fapt, dacă doriți să modificați, veți face una nouă cu noi valorile din it-- acestea sunt tupluri. Mai degrabă decât producerea le cu paranteze drepte, le produc cu paranteze rotunde. De ce ar trebui să utilizați aceste lucruri, este un pic de o întrebare. . Singurul lucru pe care am să spune despre tine, care este poate folosi ca tupluri Indicii pentru dicționare. Nu puteți folosi tablouri ca Indicii pentru dicționare. Și de ce este, din nou, tehnic și Eu nu am de gând să curgă în ea. PSET că nu am atins în această discuție este pset6. Deci, aici e cum s- punerea în aplicare a un-- aici e cum v-ar pune în aplicare pset6 în Python. Având în vedere Python ciclu de proiectare, primul lucru pe care ce faci cand esti scriere a programelor este de a verifica pentru a vedea dacă cineva a făcut-o deja. De fapt, dacă vrei la serve-- Apache 50 face cam asa cu excepția că nu vine standard de instalat pe mașini Linux. Python nu, și Python server de simplu http face la fel de bine. Dacă sunteți vreodată pe o mașină de Linux, sau exteriorul Cloud9 IDE de CS50 și doriți să servească acest curent director la un anumit port python-m SimpleHTTPServer Portul servește asta. De asemenea, aveți posibilitatea să importați serverul simplu http și are o mulțime de funcționalități în cazul în care doriți să-l personalizați, sau modificați, sau sunt conduse it-- l exploata la rula servicii propriul server. Așa că e Python într-o coajă de nucă. Și acest lucru a fost CS50. Multumesc.