ROSS RHEINGANS-YOO: Bok, ja sam Ross. A to je CS50 seminar. To će vas odvesti iz programiranja u C do programiranja u Pythonu. Python je skriptni jezik. To je u velikoj mjeri kao C u sintaksi, iako su neki tehničkih pojedinosti kako je sintaksa dobiva izvršen su malo drugačiji. To je manje snažan nego C na neki način. To je manje izražajni za gdje točno u računalu memorija dobiva iznio, kako to biva izložena, kad se dobiva slobodu i one vrste stvari. To je više koristan nego C, na neki način, zato što je lakše programirati u. Jezik je, na neki ljudi, više intuitivan. I doista, cilj je za da bude brži programirati i potencijalno sporije izvršiti. Sada, ako mislite o tome količina vremena ste potrošili na svoj posljednji Problem postaviti pisanje Vaš broj u odnosu na količinu vremena ćete potrošiti na svom posljednjem problemu postavite izvršavanju svoj kôd, da bih zamisliti da jezik što je dvostruko brže pisati, i dvostruko sporo izvršavanje, možda biti napredak u odnosu C na neki način. Dakako, kada pokušavate napisati mali programi raditi sitnice, Python je koristan jezik izbora. I na kraju ove Seminar, nadam se da ćete biti u mogućnosti kako bi se izbor u budućim projektima o kojima jezik točno koristiti, a ne ideja da je jedan jezik više ispraviti sve vrijeme. Nekoliko stvari o tome što se seminar je. Seminar ne namjerava naučiti Python od nule. Python je vrlo sličan na C, a ja sam uz pretpostavku da ste CS50 student, ili netko sa sličnim poznavanje C Ako ste CS50 student oko problema set 6, tako da ste vidjeli puno stvari u C, ja ću vam dati velike razlike, a neke od stvari da bi Python različit a posebno i korisno, ali neću ići što je programski jezik je i kako pisati programe. Međutim, ovaj seminar će učiti da pisati Python programa Ako ste jedan od onih rijetkih skupina. Opet ćemo pogledati kako ti bi provesti psets-- koja treba biti 1-6 Python-- i pružaju smjernice na službenoj dokumentaciji za buduću referencu. Druga stvar koja je važna o tome kako je ovaj razgovor je dodijeljena, ovaj video će biti line, ljubaznošću CS50, tako da ne bi trebao osjećati kao morate uzeti bilješke. Uvijek se možete vratiti i tražiti na to kasnije kao referenca. Dodatno slajdova su dostupni odmah na tom mjestu, što bi trebalo uzeti što napraviti Google doc. To je nešto skraćenu verziju onoga što sam prikazuje na zaslonu. Jedan oprezni upozorenje prije mi skočiti, Python 3 je drugi jezik Python 2. Oni izgledaju puno isti; tamo su vrlo male tehničke razlike programe koji će uzrokovati napisan u Pythonu 2 ne biti u mogućnosti izvršiti u Python 3 okoliš. CS50 Uređaj dolazi s Python, po defaultu koristi Python 2. To možete provjeriti tako tipkati u vašem komandne linije Python --version, koji bi trebao izlaz 2.7.6 o trenutnom aparata. Pokušajte Python 3, koji ne rad u aparat, Ako Python defaultno 2.X.Y, bilo na aparat ili na vlastitim strojevima. Trebali bi zamijeniti Python 3 u bilo koje vrijeme u tom razgovoru da pišem Python. Ako je vaš stroj trčanje 2 po defaultu, vrsta Python 3, kako bi mogli stvarno slijediti i izvršavati te stvari. Osim toga, ja ću vam točka na službenim izvorima sada. docs.python.org/3--~~V oprezni da to je 3, a ne 2-- ima korisne reference. Vodič će vas kroz mnogo istih stvari da radim sada, osim u tekstualnom obliku. Referenca je koristan kao reference za jezik, a standard knjižnica pruža što neki od nastavaka s dodatnim funkcijama. Dakle, prvi Python programa. S lijeve strane imamo standardne C, na desnoj strani, imamo Python. Možda ste prepoznali ovaj problem, to je jedan prvi problem postavlja u CS50, i to riješiti ga pomoću istog rješenja. Sada, razlog da smo gleda na te rame uz rame je tako da možemo gledati na sintaktičke razlike. Jedan od slonova u sobi koje ste možda primijetili u pravu isključiti šišmiš, da je Python nema Glavna funkcija omatanje oko koda. Tako je u C, što napisati hrpa datoteka, možete ih povezati zajedno, a program počinje izvršavanje na ovu stvar zove int glavna. U Python, što napisati file vas, izvršiti datoteku, program počinje izvršavanje na vrhu datoteke. Dakle, to će za početak na vrhu datoteke ići prema dolje dok ne pronađete nešto drugo. Ako se utvrdi definicija funkcije, to se neće izvršiti taj kod, to će jednostavno odrediti funkciju. Ali ovdje, kada je prvi Program je n jednak 10, prva stvar koja ovaj program će učiniti je iskoristiti ovu vrijednost od 10 i postavite ga u varijablu zove n. Govoreći o toj liniji, jedan od Drugi things-- sorry-- ovo znači da je C programa, ćete ih pisati, ćete ih napraviti, što će zazivati ​​neke zveket naredbe, a onda ćete pokrenuti što je rezultiralo izvršnu. Python programa, možete pokrenuti Tekst file-- ovom mario.py moglo se taj dokument koji sam upravo pokazao you-- ćete pokrenuti tu datoteku a vi ćete izvršiti, i sadržaj toga će se izvršiti Python interpreter. To možete učiniti u vašem IDE. Dakle, ako imam Hello datoteku, koji jednostavno ima tu sadržaja. To je zapravo Python 2, ne Python 3, pa ne brinuti o sintaksi za sada. Ali ja ću pokrenuti Python, na hello.py, i to radi. Drugi način da mogu koristiti Python koji Neću nositi s toliko u tom razgovoru, je ako sam samo tip Python, to mi kapi u okruženju u kojem Ja mogu hraniti ga Python redak po redak. Dakle ovdje, ako sam upisati print prostora 'Hello, World ". Upišite ući. To će me pljuvati koje sigurnosno rezultate da pojedinac linije odmah. Ovo bi moglo biti korisno je. U ovom govoru ću raditi stvari na slajdovima. I tako ćete moći pratiti zajedno ili ovdje, ili pismeno stvarne datoteke i zatim ih izvršavaju. No, ide natrag u ovaj kod, još jedna stvar da bi mogli imati noticed-- dobro, tu je dvije stvari da biste mogli obavijest o tim blokovima. Prvi, a više svjetovnim, da Python nema trag zarezom. Zarezom su izborni svugdje i bezopasna posvuda. Možete ih dodati. Moglo bi ljude koji pišu Python za dnevni kikotati na tebe iza leđa, jer oni nisu potrebni. Oni su često znak održava tijekom iz C. Dizajneri jezika Osjećam da je više jasno na ovaj način a da to nije potrebno prijaviti svaki put kad kraj liniju. Još jedna čudna stvar o ovom n je to ne imati tip prilogu. Jedan od čarobnih komada Python-- i ja ću ga nazvati magiju, ali postoje vrlo tehnički razlozi zašto works-- jedan od magija komada Python je da varijable može proširiti ili smanjiti sadržavati podatke god Vrste biste ih da žele. Dakle, to je 10. Ako kasnije niz sam dodijeljen na ovo N 0.5, to bi se da je 0,5. Bez obzira da je int i ovdje plutaju tamo, sve što koristi ovo n će, više ili manje, moći brektati zajedno, ako to dobiva bilo koji od njih. Osim ako postoji neki vrlo stvarne Razlog zašto se ne može koristiti podatke upišite da n trenutno ima, u kojem trenutku to će doći klinču i baciti grešku, i one vrste stvari. Ali ovdje, Python zapravo ne briga što to je da ću se držati u ovom rečenica, kao, želiš ovo? To je stvar u tome? Da, to je vrsta stvar. Ja ću ga staviti na kraju. To će biti problem kasnije, ako netko tko želi koristiti taj kraj Ne mogu to podnijeti. To je jedan od glavnih razlike između Python i C koji olakšava napisati vrlo velike C programa i olakšava pisanje vrlo mali Python programa. For sintaksa nije jako različite u ono što radi. To je malo drugačiji u kako se to izrazio. Dakle, ovo je vrlo, ono što se zove Pythonic, način pisanja. za redom u rasponu (n), ovo je raspon brojeva od 0 do n, uključivo na dnu i isključivi na vrhu. Tako da je od 0 do n-1, što je upravo ono što C koda radi, osim što je puno lakše pogledati možda. Mjerodavni blok nije krenuo od aparatića, umjesto da je krenuo ovim razvedenosti. Dakle, sve te linije su četiri mjesta na to pravo, ili kao o širini slona. A to su oni koji su će se izvršiti u ovome. Ako sam zabrljati gore udubljenje na to i ja gurati da print natrag izvorni uvlake, da ispis će ostaviti za petlju. Za razliku od C, gdje je ovdje zapravo sam morate premjestiti taj zatvoreni braće oko. To znači da ne dobijete pogreške da iskočiti na vas, jer vas staviti braće u pogrešnom mjestu. To znači da ćete dobiti pogreške da iskočiti na vas, jer vas razvedena crtu krivo. Dakle, čini udubljenja super oprezni. Nadam se da su se super oprezni sa svojim uvlačenja u svakom slučaju, pa to nije to mnogo više od tereta. No osnovno pravilo za Python, i imat ćemo par njih da ćemo proći kroz tijek razgovora, je pokušati prirodni sintaksu Prije nego gleda nešto gore. Dakle, ovo sintaksa, za ovaj broj u rasponu, vrlo prepoznatljiv u smislu stila. Mnogo stvari u Pythonu vidjet ćemo da ovaj obrazac. I tako, ako ste došli do s novi objekt koji mislim da bi trebao biti u mogućnosti ponoviti više toga, u ovom formatu, Ispada da je vjerojatno podržava taj format. Nećemo ići super duboko u tehnički razlozi zbog kojih to je istina. No, to je korisno imati intuiciju kada se približava Python programa, da je to stvar samo ide na posao. Probaj. Dignuti naredbenog retka Prevoditelj, vidjeti ako to radi, premjestiti na sa stvarima, prije vas čak morati otvoriti Google i reći, što je sintaksa za ovaj je stvar? Mnogo Python ste mogli otkriti samo pokušavam. To ako je još slično u C onda fors su. Imajte na umu da nema zagrade. Zagradama su, opet, bezopasna, ali nepotrebno. Tu je kolona krajem baš kao i za petlje, i opet, relativna blokovi razvedena nego krenuti od aparatića. Ovo drugo je u izvorniku Razina razvedenosti, a njegov relevantni blok ponovno razvedena. Oni rade upravo ono što im je činiti u C. To je zapravo vrlo velik dio isti. Opet, print gubi jedan znak off printf Možete proći neke veze. Ispada žice ili može biti označen s jednostrukim navodnicima ili dvostrukim navodnicima. Nema razlike, osim toga unutrašnjost jednostrukih navodnika možete koristiti dvostruki navodnici s odustati, umjesto da pobjeći sve njih. A unutar dvostrukih navodnika, što može koristiti jednostruke navodnike s odustati bez da ih izbjeći. Ako ste htjeli miješati njih možete sigurno gledati online kako to učiniti. Primijetit ćete da ovdje, Ja sam prošao kraj = tu stvar. Ovo je primjer po izboru argument, što je jedna od onih stvari da Python podržava da čini vrlo korisnim. Dakle print zapravo ima puno argumenti, koje su obično postaviti na svoje zadane vrijednost, ali ovdje imam odlučio nadjačati onu zove kraj. Razlog da moram nadjačati ga s praznim nizom da je ispis u Python, po Zadana, ispisuje novu liniju nakon što je stvar koju je rekla previše. Dakle, ovo hash zapravo ide ispisati mljeveno meso u novom retku. A ako ne želim ljestve za ispis nova linija nakon njega, onda moram reći nemojte ispisati jedan. No, ipak je tako, jedna stvar koja Ovaj program nedostaje da netko ima je naredbe uključi na vrhu. Ispis je pečena u Python tako da u osnovi da nema zaglavlje ili modula da morate uključuju, ali ako je htio uključiti i druge stvari u Python skripte, Ja bih to učiniti u vrlo sličnom format-- riječi su samo malo drugačije. Spomenuo sam da smo ne treba glavni ovdje, jer Python počinje izvršavanje na vrhu. Da sam htio završiti to u funkciji, ja Učinit će to kao this-- I. bih def ime funkciju, Argumenti može ići ovdje i mi ćemo vidjeti neke od tih kasnije, debelog crijeva, a onda opet, to Cijeli krenuo blok je ono što je operativno blok za tu funkciju. Dakle, to je definicija funkcije. I tu je izjavu, a zatim prema dolje ovdje, ja mogu samo pozvati funkciju. I opet, program prevoditelj, s početkom u vrhu, će vidjeti ovo je definicija. To neće izvršiti sve dok njega doći ovdje, i onda je to, oh sad si ga nazvao, ja Valjda sam trebao izvršiti. Stvar koja je vrlo česta vidjeti u Python datoteke, osobito Python datoteke koje su pustili u javnost i razvio by-- i razvijen i održava, je nešto od ovog obrasca. To je zato što basically-- Python, vi početi na vrhu a onda izvršiti do dna, Ja ako sam imao Mario pozvao ovdje, onda svaki put sam uključen u ovu datoteku drugi file, jer sam želio iskoristiti Mario funkciju, da druga slika bi također imaju ovaj poziv na Mario u njega. A kad sam trčao tu datoteku, to bi nazvao Mario. Tako da je moguće da samo ja želite pokrenuti ovo ako sam zapravo izvršiti ovu posebnu datoteku. I tako ja mogu završiti ovaj u idiom ovako, gdje sam rekao, ako je naziv tog izvršenja okoliš je glavni, onda želim raditi te stvari. Inače netko drugi ne može use-- su moj function-- moj file i samo da bi dobili pristup tim funkcijama bez pokrenuti stvari da želim izvršiti u ovoj datoteci. To je, opet, neobavezno ali vrlo često. Ove stvari su entirely-- su isti između C i Python, sigurno u 3. Mislim da je u 2, operator podjela Ponekad vam daje natrag lebdi kada što operirao Ints, i bilo ste htjeli to ili nisi. Ali plus, minus i vremena raditi baš kao što biste očekivali, isključuje li se malo više vrsta. Tako možete pomnožiti splavima Ints i one vrste stvari. Skup radi točno isto. Možete koristiti dva jednaka znakove. inequals-- veće od, manje nego, ove vrste things-- imaju značenje koje ste upoznati s njima. Gdje C koristi ove operatere, Python koristi nešto više engleski oni čitljiv. Dakle, umjesto dva, znakove za, što doslovno upišite riječ "i", "ili" ili ne." Kao u vašem if-- u svoj uvjetne izjave, smo ranije vidjeli da je ova sintaksa u C odgovara ovoj sintaksi u Pythonu. I tu nije puno drugačije Postoji, osim malo interpunkcija oko strane. Opet, gdje je C bi drugdje ako je, Python koristi Elif, ali to su uglavnom promjena razine površine. Iteracija kao što je to često napisano u ovom idiomu u Pythonu. Možete proizvesti ovu vrstu stvar s while petlji na vanjskoj ako ste htjeli, ali vam zasigurno ne moraju. A opet, ako ste htjeli ispisati elemente od niza Možete to učiniti na ovaj način. Jedna od zabavnih stvari o Python ipak, je da ne morate koristiti ovu paradigmu, i možete koristiti nešto elegantnije jedan. Kažete za u tvrt-. Dakle, umjesto da ide ovdje i trčanje preko indeksa, a onda izvlačenje pojedini elementi, što reći za to zapravo samo pregazio samih elemenata. I onda sve što radite u može raditi izravno o elementima, što je prilično zabavno. A mi ćemo see-- koristit ćemo i opet da je idiom kao što smo prošetati kroz kod. To je, opet, primjer nešto što ću nazvati Python magiju, iako postoje Vrlo tehničkih razloga zašto to radi. A tu su i tehničke stvari koje trebaju biti istina o nizu kako za to raditi iza scene. Stvar je u tome da većina tipova što biste očekivali ovo raditi imali to provoditi ste u izgrađen-in jeziku. Još jedna stvar koja bi bilo lijepo ako je to radio u svakom jeziku, ali postoje neki razlozi zašto to ne može, Ispišite ovu gudačkih puta taj broj. Ispada u Python, to radi točno ono što želite, što je samo zabava, a to znači da možemo zapravo smanjiti ovaj program, opet mario.c. Umjesto iterating puno, možemo Samo kažem, želim još više prostora, Želim broj hashes, a neki hashes na kraju. I opet, mi koristimo ovaj format. Evo, mi smo u prolazu varijabla na ovaj način. Opet, ne trebamo reći što tip varijable je to, a jedini put ćemo dobiti greška je u vrijeme izvođenja. Kada netko pokuša proći nešto, to će doći u funkciji sasvim u redu. Ako zaglave ovdje, jer to nije stvar koju možete napraviti raspone više, Ja ću dobiti runtime error tamo, a ja ću morati to ispravljanje taj način. No, u međuvremenu, nemam biti vrlo oprezni o tome što dobiva donesen, tako dugo dok se u stvarni Izvršenje to sve radi vrlo glatko. Čak sam mogao napraviti ovaj malo čišći koristeći određenu izgrađen-in funkcije na žicama, koje pravo opravdati. Ovo je samo korisna funkcija izležavanja knjižnici. To je u dokumentaciji ako idete i tražiti to. A ja kažem, dobro ću se ovaj niz, neki broj hashes, i ja bih pravo opravdati it-- jastuk to s prostora da se ta dužina. Opet, to je u dokumentacija, koja donosi us-- Ja ću zapravo klikati these-- što nas dovodi do našeg drugog pravilu za Python-- standardne biblioteke Metode funkcija su vaši prijatelji. A to je često vrijedan vaše vrijeme ići u potrazi za pitam ako postoji stvar koja upravo to radi. Vjerojatno je. Ako želite jastuk iz niza, ako želite htjeli uzeti natrag pola niza, ako želite željeli potražiti kroz niz, ako je želite razbiti par stvari zajedno s nizom zarezima između njih, postoje standardni knjižnica Funkcije za to. I to čini vaš život lakše ako ih koristite umjesto rolling out sve na svoju vlastitu u pet linija koda ovdje, pet linija koda ovdje. To zapravo počinje u dodati do realnom vremenu. Jedna od zanimljivosti o tome kako to biva zove. Primijetit ćete da postoji točka stvar. Imam neki objekt na lijevoj strani, i onda sam nazvao točku funkcija. Ovo je jedan od paradigme da Python koristi za pričvršćivanje metode za objekte. Razgovarat ćemo o tome što to je vrlo kratko na kraju, ali znam da možemo i raditi na stvari po uzimati tu stvar rekavši točku god, ili pozivom funkcija koja traje da objekt i neke druge argumente. Dakle, to su oba načina na koje stvari obaviti u Pythonu. I je li određeni funkcionalnost implementirana u tom stilu ili ovo Stil je nešto što vam treba gledati dok ne dobijete objesiti za koje je vjerojatno da će pasti u. Postoji više ili manje kohezivno Filozofija Python da apsorbiraju govore pišući mnogo u njoj. U nekom trenutku, koji je jedan od tih nešto će se provoditi kao postaje prirodno. Za sada, to je samo nešto učite kao što odgonetnuti svaki pojedinac stvar. Dakle, standardni knjižnica funkcije su vaši prijatelji, a oni neka vam pisati stvari koje zauzimaju toliko prostora jako kratko, stvarno elegantno. A to je zapravo vjerojatno više čitak, rekao bih, od programa C tamo. Da ne spominjem činjenicu da je tako Ukratko možete stati cijeli slon u prostoru koji smo spašeni. Još jedna stvar, to je implementacija Mario je to točkica C, što mislim je najkraći možete ga dobiti. To nema get int, ali Teško kodove vrijednost od 10 isti način na koji to on radi. Ispada da je ovaj jedan satovi na 84 znakova, dok Python je 64. A to je neusporedivo čitati od ovog smeća ovdje. Dakle, Python je učinkovitiji u prostoru. To je nešto manje učinkovita u vremenu, ali ne puno. Popisi su važna stvar u Pythonu. Mi ih nisu vidjeli, ali su djeluju slično kao nizovi učiniti u C. Dakle, ovdje, možete ih proglasiti, možete ih proći u stvar. Sada kvadrata drži Niz od tih stvari. Opet, nismo proglasili kao tip, ali ako smo ikada pokušati ga koristiti, sve što biste očekivali da rad na niz brojeva će raditi na niz brojeva. To je stvar koja apsolutno ne mogu radim u C, jer je Memorija je tako ruke na, ali je vrlo jednostavno za napraviti u Pythonu. Ako želim da moja niz biti veći, što mogu dodati element na njega i to je u redu. Što se događa iza kulisa? Tumač će ići i dobiti neke memorije, i možda ćete dobiti malo extra memorije, pa ja ne, tako nemam da realloc svaki put. No, koliko imaju više memorije to potrebno? To nisu odluke koje morate napraviti, To su odluke koje su Tumač će učiniti. Ovdje vidimo raspon može uzeti dva argumenta, ali to još uvijek će biti inkluzivno od vrha pa smo dodali 1 tamo. Ovo je idiom, što je još pametan način da pisati stvari kao što je ovaj. To se zove popis razumijevanja, i ovdje što mi govori je Htio bih staviti u kvadrat i za svaku vrijednost I u tom rasponu. To je stvar na desnoj mogao biti još jedan polje, a to je stvar na lijevoj da se bilo osobito funkcija da bi u i kao varijabla i daj mi neke rezultate. Ono što ću učiniti je, Idem izgraditi niz koji je sve te stvari za svaku vrijednost u tom rasponu. I to je super elegantan, super kratka, i to je vrlo jasno što to znači. Ovo je jedan od things-- to je opet, jedan of-- vrlo simbolom razlozi koji ljude poput Python. Ako vam se sviđa programiranje ovako, onda Python je jezik možda željeli naučiti. I opet, tu su i tehničke razlozi zašto se to radi. Ali što se tiče smo zabrinuti, smo više ili manje ne brinu. Dakle, ako želite ispisati popise, neke od istih idioma korisni. Jer ja u tom rasponu, mogli bismo Indeks kroz sve stvari a zatim ih sve ispisati. I vidjet ćete Len ovdje. Ako ste ikada htjeli doći duljina niza, koji je vrlo lako u Python, to je vrlo teško u C. To bi ispisati točno što bih ga očekivati. Također smo mogli, kao što smo vidjeli, ponoviti više elemenata u nizu izravno, i onda samo govoriti o ih, umjesto da indeksa natrag u polje svaki put. A to je stvar koju možete učiniti. Tako je u C, ako pitate za nešto ovako, ispis će reći, to je niz brojeva. To svakako nije string, ne mogu ga ispisati. Python više ili manje ne brine. To je kao da, postoji način da ja mogao pretvoriti ovo u nizu? Da, ja ću to učiniti. I tako ću samo ispisati to van. To znači da možete činiti stvari volimo-članovima tih najviše od tvrdih dijelova igre od petnaest, napisao vrlo kratko u Pythonu. Vidjet ćete da postoji malo of-- ovdje Ja sam bacio cijeli broj u nizu, i moram to učiniti ručno. A ja ću dodati je na drugi niz, ili na drugi način Python zbuni. No hoće li i kada ste dodajući niz na cijeli broj, ja pretpostavljam da dobijete cijeli broj ili natrag niz leđa? Ali opet, ako ste upravo pozvati str na stvar, i to bi moglo na bilo koji Svijet se pretvara u niz, to će vjerojatno biti pretvara u niz. Ovdje vidimo korištenja ugniježđena popis razumijevanje na lijevoj strani, neki indeksiranje, što Upravo kao što bih se naviknuti na to, a neki ispis stvari. Opet smo definirati neke funkcije i mi ćemo ih nazvati dolje u glavnom, kada smo zapravo dobili datoteku. Povratak radi točno kao što biste očekivati ​​od rada s C. Nađi, možemo postaviti stvari kao što su this-- evo popis razumijevanja postoji zadatak na varijable, i mi zapravo može učiniti čak i lakše. Ne morate pisati pretragu, jer ugrađeni u jezik je li to stvar je u ovom nizu. Povratak istina, ostalo return false. Tako da je cjelokupan nalaz. Sveukupna vrste uključuje zove vrsta, koji is-- postoje implementacije to ugrađeno u određenim C knjižnice. Ako želite ovaj vrsta unatrag, te može nadjačati taj izborni Argument u rikverc sa pravi. A ako želite sortirati više žice, koji je izgrađen-in, kao dobro. Dakle, to ne znači to su stvari koje trebate učiniti svaki dan, ali ideja je da ovaj je filozofija Python, da su sve te stvari koje bih vrsta želite učiniti su ugrađeni. I većina standardne funkcije, tako vrsta, duljina, što god, podržava većina logično razuman ulaz. Pozivam vas Len na niz biti ista način poziv LEN na konac. Vi multiply-- što sortirati žice na isti način sortirati polja. Većina standardnih funkcija da ljudi grade, a većina treće strane knjižnice koje su ljudi graditi, jer su natjecanje Dizajn standardne biblioteke, može biti pozvan na sve da ste Kao, zašto ne to samo posao, u C. Više ili manje, to će raditi u Pythonu jer ljudi rade iza slici što stvar i onda raditi odgovarajući na njega. Pa opet, tehnička pozadina, ali ga čini naš život lakšim kao programera. Dakle ovdje je file I / O. file I / O ima puno sitnice koje ga čine komplicirano, pa postoje resursi online, ali u Ukratko, vas poziva otvoren na datoteku ime s određenog tipa. Tako da je pročitao, čitati i pisati, pisati ili dodati. Možete pročitati određeni broj likovi i vi ispisati one, ćete dobiti Pozdrav! Mislim, kao što je ovaj spis imao Pozdrav! U njemu, poziv za čitanje, i što ćete dobiti natrag je string koji ima sve od ostatka niza, ili sve ostatka datoteke. Ako ponovno pročitate poziv, ti si na kraju datoteke, pa da ne bi ništa i tako ćete zatvoriti. Opet, ovo je .close nego blizu datoteka, kao što bi bilo u C. Ovo je manje ili više, jer je f stvar, a želite za f zatvoriti. Ali osnovni file I / O ne osobito komplicirano. Opet, ako želite otvoriti datoteku, ako želite pročitati određenu liniju, možete dobiti iz osobito line-- postoji izgrađen-in za to. Ako želite napisati stvar, možete pisati ovo. Ako želite napisati pojedinca ugriza, možete pisati one. A ako želite ponoviti preko linija datoteke pojedinačno, kao što smo učinili u komadu od Prije nekoliko tjedana, možete to učiniti. Opet, većina objekata koje bih željeli biti u mogućnosti ponoviti više Podrška Ponavljanje nad njima. U pitoni, datoteka je možda stvar koja Htio bih ponoviti tijekom redak po redak. Ako je to bila rječnik riječi i sam bio težak da biste dobili one pojedinca riječi iz, tada, u tom petlji, crta to će biti svaka riječ je pak i ovo će se izvršiti za svaku liniju u datoteci do kraja datoteke. I opet, ako sam ispisati svaki crta, linije dolaze s novim linijama, pa sam postavljanje kraj natrag na stvar kao što je ovaj. Onda bih se sadržaj moje datoteke. Druga stvar koja djeluje u neke načine poput lista, i na neki način kao nešto bitno snažnije, rječnici, koje su stvarno super za korištenje, ali su u osnovi hash tablice u maskirati. Možete stvoriti pomoću točno dva znaka, što je strašan Ako ste pokušali provoditi hash tablicu za vaš problem set, znate koliko boli da može biti. No, ljudi su učinili da, i to tako dobro, da ne morate brinuti o tome više. Tada možete unijeti pojedinačne stvari. Hash tables-- ili rječnici ne osobito zanima me što ste spremanje u njima. Dakle, ako neke stavke su brojevi, a neke stavke su popisi, ako su neke unose drugi rječnici, a neke stavke su žice, Python ne mnogo njege. Opet, ako idete u nju očekujući niz i što ste dobili natrag je niz, to je tvoj problem. A možda je kriv tko mislio da je stavljanjem stvari u rječniku, možda da ti je. Ako je to bio netko drugo, nadam se da su dobro ponašao o čemu ide u rječniku i nije ostavio nikakve zamke za vas da padne u. Ali standardne funkcije će dati vam vratiti dobro ponašao stvari. Tako oni kažu to vraća natrag rječnika žice, onda je sve idete izaći je niz. Ako to ne učinite nešto od ovoga i putovanja što se, dobro, što bi moglo biti na vama. Python sigurno vam daje dovoljno konop da se objesiti, ako želite. Sada možemo ispisati pojedinca elementi ovo i ovo vraća upravo ono što biste očekivali. Upravo ono što biste očekivali, pretpostavljam, je izraz koji koristim puno, ali to je više ili manje kako Python radi. Ako pitate za stvar koja nije da, Python će izbaciti grešku i to će vam prestati iz sve što vam program bili. To će zapravo ispisati više informacija od toga, to će ukazati you-- to će dodajte liniju, i tako. A, opet, možda želimo da ponoviti tijekom rječnici i pronaći sve stvari u njemu. Ovdje smo iterating više dvije stvari u isto vrijeme. I tako ćemo to učiniti s ključem, vrijednosti, ali onda ispisati sve to. A ako smo htjeli cast-- Ako mi zapravo ran to, bismo imali nekih problema, jer on-- kad smo išli u s Davidom, ne može add-- ako nismo baci se niz prvi, nismo mogli dodati da je niz žice na žicu. Ali ako ga baci do string, dobili smo nešto ovako, što je možda ono što smo željeli čitati. A to je bukvar. Upravo smo pročitali u stvari. Tako možemo čitati u pojedinačne riječi kao linije. Mi odsjeći posljednji stvar, tako da debelo minus 1 chomps off posljednja stvar koja we-- zadnji znak u nizu. Mi ćemo reći. OK, svaka od njih dobiva umetnuta u ovom rječniku, mapiranje na vrijednost od 1. Mi ne osobito stalo da je jedan, ali to je samo tu da kažu, oh dobro, ovo što ću staviti u rječniku. Jer nakon što smo učiniti je da smo će reći, dobro, ako je to u rječniku uopće. Opet, ovo provjera Članstvo se operativni koristite potpuno drugačiji Algoritam nego što će na popisu, ali mi ga zovemo na isti način, koji je dio tog premaza Python šećera stvari, tako da su oni jednostavniji za korištenje. I opet, vidjeli smo stvari kao prije. To u osnovi se nalaze, ili to je točno isto sintaksa što naći, ali radi preko potpuno drugačije strukture. I ne osobito stalo. Dakle, to su stvari koje su upitani provoditi za Speller. U ovom slučaju, mi smo idući u dobiti više ili manje sve psets učinio. PUBLIKA: Da zapravo samo vraća kao pogrešno napisane, ako to ne odgovarati nešto u rječniku? ROSS RHEINGANS-YOO: Da, da. I tako, ovo je adaptacija problem postaviti koji traži od vas da učinite upravo to. PUBLIKA: Zašto je linija minus 1 tamo? ROSS RHEINGANS-YOO: Pa kada ste iterating više datoteka traži linijama, linije dolaze s novom linijom karaktera krajem it-- minus 1 je samo u dućan one off. A to je posebno fleksibilni način indeksiranje u stvari. Dakle, ako imate niz, a želite, dobro sam će početi u naravi tri i ja ću ići do kraja. 3 debelo će to učiniti za vas. Ako ste poput, želim početi na početak i otići na posljednje minus 1 karakter, debelo minus 1. A ako ste htjeli otići iz treći na minus prvi, onda bih rekao 3 minus 1. Osim toga, ako želite indeksa u stvari računajući od leđa, ti samo Indeks se s minus brojevima. I zato, gdje je C će eksplodirati ili možda hraniti vam drugi memoriju niste imali pristup, čuti što mogu reći minus 1 znači predzadnji 1 lik u nizu. Moduli su version-- su analozi knjižnicama u C te su korisne za mnoge stvari. Puno stvari koje bih želite učiniti u Python, osim jednostavne manipulacija varijabli, Želite li spojiti Into the veće knjižnice s većim sučelja i više mogućnosti za interakciju s drugim dijelovima svijeta. sys je jedan od onih s hrpom alata koji su korisni za interakciju sa samog sustava i da će ga uvesti kao uvoznih sys. Postoji više dokumentacije iz da, što ste mogli ići ovdje, ili ste mogli naći na Googleu po googling Python sys. Možete upisati upisati. Prva veza će biti dokumentacija u Python 2, druga veza ide biti dokumentacija Python 3. A ako smo pisali kako datoteku koja je izgledala kao this-- Ako Posebno smo gledajući djeluju na argumente naredbenog retka, kao što smo naučili raditi vrlo rano u ovoj klasi. To nije teško. Možete izaći argv, što je jedna od onih stvari koji se provodi sys. Nije izgrađen-in na Baza paket, ali opet, ti može produljiti uvozom da funkcionalnost od sys. Vi ćete ga nazvati sys. kako god. Ovdje postoji argv. Tu je zapravo nema argc u sys, jer vas možete dobiti tako lako pozivom Len. Mi smo tada tiskani da se, onda smo ran na našem terminalu echo-args.py. Mi smo dobili natrag niz koji je to prvi argument. Opet, to se argv 0, što je naziv stvari koje je dobio zove. Ako smo ga zvali s dodatnim argumente, mi bismo dobili oni vratiti. Ovo je jedan od načina dobivanja argumente naredbenog retka. Ako želite zastave gdje ćete skrenuti Pojedini stvari na ili nadjačati određeni zadani, argparse je tvoj prijatelj. I opet ćete naći da je online na pitona argparse na Googleu. Postoji nekoliko komunalnih moduli koje ste sami pronaći pomoću i opet, ako se provesti u bilo koje vrijeme to jezik uvoza jsons za čitanje i iz JSON datoteke, a ne da se komplicirano. Možete otvoriti datoteku, zove json.load na tu datoteku i vratiti stvar. Što je to? To je JSON objekt. Gdje da JSON je niz, Python ima polja. Gdje da JSON ima asocijativne nizove, Pythona rječnici, žice, i brojevi, i tako dalje. Želite deponij koji van, otvoriti novu datoteku, nazovete deponij, i opterećenja i deponijama se idu i iz žice. Slično tome, turšiju dobiva naziva se praktički na jednak sučelja. To je nešto više korisno ako ti damping Python objekata. Dakle, ako ste ikada htjeli spasiti verzija postojećeg stanja varijable za budućnost pokrenuti svoj program, rasol je Pythona knjižnica za taj događaj. Ako imate bilo kakve varijabla koja može biti napisan iz u ovakvim riječima i znakovima i bytes-- kao što je ovaj rječnik, možemo zapisati smo može zapisati kao kao JSON objekt, koji je bio doslovno ovi likovi. A onda će biti vrlo lako za ljudsko otvoriti to up-- otvoriti i čitajte ga. Ako nismo osobito briga o ljudima čitanja, možemo paket još učinkovitije u obrasce koji kasnije može biti nespreman ili da je kasnije mogao biti napuhan. A to štedi 80% prostor koji vaše predmeti moglo poduzeti ako ih napisao krasopisom. Možete nazvati krastavac jako puno isti way-- deponij, opterećenje, i onda dobiti svoje stvari natrag. Dakle, ako ste pisanje vrlo kratki programi Python koji želite spremiti stanje, a zatim pročitajte ih kasnije, stvari kao što je ovaj su vaši prijatelji. To bi mogao vrlo jednostavno ih deponij kao JSON. Većina Python objekata može izvatkom iz JSON ako postoji bilo nade da strukturalno su mogli biti predstavljeni na taj način. To su samo vrh ledenjak na modulima koji su korisni. Dakle SYS, OS, višestruka obradba, su vrsta osnovnih radni strojevi za stvari moramo komunicirati sa OS datotečni sustav., kao os.isfile, os.isdirectory, os.makefile, to su tvoji prijatelji. Ako želite komunicirati s određenom vrstom datoteke, JSON, rasol, CSV. Ako želite komunicirati s web stranica, urllib za dobivanje http stranice. bs4-- BeautifulSoup-- to je divno parser za HTML. Možete ga pokrenuti na html i vama dobiti ovaj umetnuta polja objekt sada, koje možete proći preko Lookin, sa sličnim samo u potrazi za ako je, je, što je fantastično. Postoji hrpa Paketi za running-- za to posebno mathy stvari. Dakle, ako želite da se množe, invertni, pretvoriti matrice, numpy koriste ljudi svih cijelom svijetu za to. scipy je još korisno alati u tom smjeru. sklearn-- strojno učenje, obrada prirodnoga jezika, super korisne stvari, dobiva provodi u Python svih vremena. I opet, malo traje više na write-- žao, traje nešto duže trčati, ali razlog da pravi inženjeri nastoje Korištenje Python je zato što imaju tendenciju da se blokiran na vas pisanje koda, a nego računalo trčanje kod. Dakle, ako ćete napisati program, koji puno drugih ljudi će koristiti zauvijek, kao što je Linux, Možda ga pisati u C. Ako ste bili će napisati računanja motor, možda pisati u Pythonu ako je potrebno ga promijeniti svakih par mjeseci. Neki ljudi će ga pisati u C jer oni su takvi. Dakle, vidjeli smo uvoz sys kao način dobivanja stvari uzimajući modul u svoj program. Možete ga uvesti kao nadimak, ako želite. Opet višeobradbeni je bol upišite se svaki put, tako uvesti kao zastupnik a onda kad god koristiti u programu, reći ćete mp.process, ili ono što imate. Ako želite uvoz samo jednu stvar, pa urllib ima stvar pod nazivom Zahtjev, tako da možete jednostavno uvesti to. Kasnije, nećete ga zazivaju kao urllib.request, ali samo kao zahtjev sam. A možete uvesti sve iz modula, ako želite. To je ponekad nije dobar idea-- To obično nije dobra ideja, zapravo. Zato što very-- jer ako ništa u tom modulu ima ime koje vam htjeli koristiti negdje drugdje u svom programu, ne mogu. A to nije uvijek očito da je to slučaj. Kako bi bili sigurni da što ste radili je sigurno, trebate otvoriti modul i vidjeti sve od imena koja završavaju u there-- svim funkcijama, sve varijable koji žive u tom modulu, jer ti donosimo sve ih u svoj lokalni imenski prostor. Pa ljudi to učiniti. Općenito se preporučuje da ne to učiniti. Ali ljudi to sve vrijeme, jer oni su lijeni i ne žele se upisati mp. ništa, nikada. Sve to govori o modulima Odvedi me oko kratki razgovor o tome kako dizajnirati program u Pythonu. Prvi korak je da provjerite je li bilo tko drugi već učinio stvar, ili učinjeno 90% stvari. Šanse su oni vjerojatno imaju, a vi treba ići dobiti svoju stvar i pokrenuti to. Ili napisati omot oko nje ga prilagoditi svoju svrhu. To je tek nakon toga ima nije da bih onda ići na i write-- početi razmišljati o Kako bi staviti ovu stvar zajedno. Postoji puno stvari vani, a to je jedna od najkorisnijih stvari o Pythonu. Kao i jezik Elegantan, jezik je jednostavan za korištenje, ali i zbog to je tako elegantan i jednostavan za korištenje, ljudi su koristeći Internet za dugo vremena i ima puno stvari vani da možete iskoristiti za vlastitu uporabu. Dakle, zadnji pravilo Python je netko ostalo je već napisano, vjerojatno modul za to, netko je već vjerojatno napisali knjižnica za to. Prije nego što pokušate napraviti ništa, izgleda vidjeti ako to je bio proveden. To nije tako teško. Sve od modula koji trpim prije, s možda jednim izuzetkom, dolaze pre-instaliran u svakom standardna instalacija Python. I tako uz poziv na uvesti bilo što, ti ima sve to funkcionalnosti na dohvat ruke. Počevši završiti ovaj Razgovor, postoji nekoliko stvari da sam napustio kao crne kutije i vrsta premazani više, a tu je malo bijele laži koje imam rekao da zbog poštenja, Ja ću barem točke na ovdje, čak i ako neću ići super duboko u svima njima i njihove tehničke objašnjenja. Puno stvari koje sam nazvao magije je ono što drugi ljudi bi se nazvati Objektno orijentirano programiranje. Dakle, postoji mnogo things-- tako da su varijable često nije jednostavni bajtova sjedi u, memorije, ali su vrlo komplicirani predmeti koji su unutarnja Država o funkcijama i puno od skrivenih varijabli, puno skrivena funkcionalnost, koja omogućuje vam da ih pretvoriti u žice, koja vam omogućuje ponoviti nad njima. A ako ste writing-- i iz razloga što imate sve te bogate funkcionalnosti je zato što je people-- arhitekata language-- su otišli kroz i za svakog standarda objekt, staviti u funkciju reći to je kako je to kako ovo ide raditi ako netko želi ponoviti nad njim. Dakle, sve ono što netko mogao možda žele ponoviti više, je logika zapisano u Ručno kako ste trebalo ponoviti tijekom tog objekta. Sve što ste mogli eventualno želite bačena u nizu je logika napisao. To je funkcija koju nazvati, ako Želite li deponij to na koncu. To je razlog zašto možete pozvati Len na stvari, to Zato možete pozvati u, ovo je zašto možete nazvati ako se u svemu na koju bih želio, jer oni su sve nosi sa sobom, tehnički know-how to učiniti. To je nešto što sam Super neće ići u. Ali stvar je u popisu je suptilno razlikuje od C stilu za petlje, a možete pročitati sve o tome na internet, ako ste zainteresirani. Tu je tamna strana za sve toga, što sam spomenuo, tako da dvije stvari. Prvi je da se taj cilj orijentirani programiranje dodaje puno pretek za slučajnih stvari, tako da na kraju se pomoću puno više memorije; ćete završiti pomoću malo više vremena nego što bi inače. Other-- ali više opasniji tamna strana na to je, ako se stvari jednostavno djelovati kao da ih želite bez potrebe da mislim super teško da li bi to trebalo biti int ili da li bi trebalo biti float, to bi moglo biti da je ovdje što proizvoditi int, ali ovdje si mislim, ali oni će always-- žao, to bi moglo biti da je ovdje proizvoditi plovak, ali kad dođete do drugog dijela od svog programa, što misliš, oh dobro, ali oni će uvijek prolaze mi int. A ako ne, to je moguće da klinču negdje, ako pokušate koristiti da indeksa u niz, ili ono što imate. Dakle, jedan od realnog korisne stvari o C je to vas tjera da mislite stvarno teško prije nego što bi any-- prije nego što bi bilo varijablu u postojanje, kao što je je tip varijable. I to će imati koja vrsta za sva vremena. Ovo nije istina Python, i zapravo, ti can-- ako ste samo vrsta ide po uhu, i donijeti neke odluke jedan način na jednom mjestu, i neke odluke jedno Način na drugom mjestu bez stavljajući iza dovoljno stvari scene u drugom mjestu uhvatiti stvari ispravno, Možete dobiti neke vrlo čudne pogreške. A program može nastaviti prikazivati za jako dugo vremena, jer je to radi puno posla za reći, i ova stvar može raditi na ovaj način, pa ću pokrenuti taj način. A u stvari, činjenica da je gura naprijed kroz puno malih pogrešaka znači da, često kada pogreška je zapravo loše a vi zapravo želite to popraviti, to završi milja away-- programa završi zaustavljanja milja daleko od kada je imao svoju pogrešku. I tako jedna stvar koja želimo Programi za napraviti, sometimes-- jednu stvar da želimo programe učiniti kad smo ispravljanje pogrešaka je uspjeti glasno i ne jako brzo kad nešto pođe po zlu. Python je vrlo loše u tome. Python je vrlo dobar u ne nedostatku i valjanje naprijed kroz neočekivane stvari. Dakle, to je korisno za kada pišete male programe. Kada ste dobili komplicirano bugovi ponekad Potrebno je dugo vremena da ih izvučemo. Dakle, tu je tamna strana za sve to, kao što je to samo radi. To samo radi kao što biste očekivali da. Osim da kad se to ne dogodi, te kraj u posve drugom mjestu i pokušava shvatiti gdje bilo je da je pošlo po zlu. Odvoz smeća is-- tako jedna stvar koju ćete primijetiti je da je bilo koji od tih stvari koje Ja sam doveo u existence-- ovi nizovi, ti rječnici, ove predmeti, njih files-- nikada ne oslobodi. Nije bilo poziv na besplatno u bilo koju od ovog razgovora. I to je bilo na C-strani, jer nikad nismo ušli u te stvari. No, u Python-strane, ne postoji besplatan. Stvari se automatski oslobođen kad Python misli da ne gleda na njih. To je stvarno dobro ne oslobađa stvari koje možda još eventualno se gleda, ali to znači da, ako ste bili će izdvojiti ovu veliku stvar, a ti si kao, oh Ja sam učinio s njim sada, to je teško reći Python da ste učinili s njim sada. Vi ponekad može postaviti da varijabla biti nitko, a onda se nadam da na kraju đubretar dolazi kroz i čisti ga. Ali opet, ne ima kontrolu nad tim. A jedan od razloga da ljudi koriste C za stvarno performansi kritičnih stvari, je ta sposobnost da se stvarno znam kad memorija se dodjeljuje a kad je oslobođen, te imaju puno kontrole nad govoreći, Ja sam koristeći ne više memorije nego što je potrebno. Što je nešto što Python nije da je velika na. PUBLIKA: Mogu li pitati pitanje? Što misliš uspjeti glasno? ROSS RHEINGANS-YOO: Dakle, ako Nešto se događa u redu i da ste u ispravljanje pogrešaka modu, što bi vrlo često Želite vaš program da ti kažem gdje je točno što je otišao u krivu, a ne samo tiho prestati prikazivati. Ali ti bi zapravo za ispis sve vrste informacija o kao, ovdje je to. Ovo što se dogodilo Ako ispis wen-- ako radite web server-- PUBLIKA: [nečujan] ROSS RHEINGANS-YOO: Da, ako radite web poslužitelja, to je ponekad loše ako ste Uvijek odbacivanje pogreške, a ti govoriš, i to nije uspjelo. Idem da se zaustavi. Samo ću ignorirati to i držati se događa. Jer onda se može dobiti u stotinama ovih pogrešaka, a ne vidjeti ih. To bi svakako bilo korisno za ispravljanje pogrešaka svrhe ako svaki put svoj web poslužitelj izneseno Pogreška, imali ste trajne zapise toga. Možda čak i želite program zaustaviti, tako da oni zapisi nemojte se zatrpala stvari. Ali opet, to je u debugging modu. Često u proizvodnom načinu rada, Svijet je malo drugačija. A u sitnim skripte koje sam trčanje, gdje je ono što sam rekao za napraviti možda samo malo off od onoga što bih želio to učiniti, onda nekako progurati pogreške je nešto možda želite. I u tim slučajevima, sigurno Python stvarno zarađuje svoje početke. Posljednja stvar koju nisam govoriti u this-- da nisam govoriti o ali može biti jako ozlojeđenost prvi Vrijeme imate jedan od tih pogrešaka, i drugi i treći i četvrti Vrijeme imate jednu te pogreške. Python, što sam spomenuo da koristi bijeli prostor vam reći što razinu uvlačenja i što funkcionalni blok ste u, to tretira kartice i prostore drugačije. Dakle, ako ste karticu tijekom četiri, a zatim sljedeći redak ima četiri mjesta, čak i ako se pojave kao Isti iznos u vašem urednika, Python ne tretiraju ih isto. U stvari, Python tretira kartice i prostori kao ulje i voda. Oni su samo različite stvari. Nema nekog posebnog Duljina da je kartica, tako da nije poput tab jednak 8 prostori, pa bi se oko nje onuda. Kao, kad je, kaže, što je Razina bijelog prostora sam na, to je zapravo u potrazi za uzorak prostora i karticama. I tako, najbolji način da se nositi s tim je da uvijek koristite razmake svih vremena. A u stvari, u Cloud9 IDE i CS50 IDE, kartici Ključne umeci četiri mjesta u umjesto o kartici, što je super korisna. Iako opet, ako je napisao Python Program s karticama koje će biti u redu, to je samo ako je netko ode i pokušao dodati jedan redak na svoj program koji imao četiri mjesta za svaku karticu, to bi slomiti. I to će razbiti na način to stvarno nije vidljiv. Iako stvarne pogreške Poruka da baca ima veze s novim uvući se ovdje ne očekuje, or-- ako pričaju alineje i to izgleda kao da je u krivu, to je vjerojatno zato postoji problem kartica-prostor. Oni još uvijek ozlojeđenost za ispravljanje. Najveći cjelini u ovaj razgovor, što nisam dobiti, jer to je stvarno komplicirano, suptilna tema, i nije bilo potrebno učiniti bilo od stvari koje smo dosad učinili, su koncept pod nazivom torke. Oni su tu puno poput polja koje se ne može mijenjati. Oni naviknuti sve više mjesta, jer korisni su za mnoge stvari da polja nisu korisni. Ali, ako želite napraviti niz, a onda obećati tumača da vam se nikada ne će htjeti mijenjati da stvar-- u stvari, ako želite mijenjati, ćete napraviti novi s novim vrijednosti u it-- one su torke. Umjesto proizvodnju ih sa uglatim zagradama, što ih proizvode sa okruglim zagradama. Zašto bi koristiti ove stvari, je malo pitanje. , Jedino što ću reći o tome je vas možete koristiti torke kao Indeksi za rječnika. Ne možete koristiti nizove kao Indeksi za rječnika. I zašto je, opet, tehničke i Neću trčati u njega. Pset da nisam dotaknuo u ovom razgovoru je pset6. Pa evo kako bih provesti A- evo Kako bi provesti pset6 u Pythonu. Imajući u vidu Piton dizajn ciklusa, prva stvar što učiniti kad ste pisanje programa je provjera da li netko to već učinili. U stvari, ako želite da serve-- Apache 50 radi oko toga, osim što ne dolazi standardni instaliran na Linux strojevima. Python radi, a piton jednostavan HTTP poslužitelj radi kao dobro. Ako ste ikada na Linux stroj, ili Cloud9 IDE izvan CS50 i želite služiti ovu struju katalog za određenu luku, python-m SimpleHTTPServer priključak služi tome. Također možete uvesti jednostavna http poslužitelj i to je dobio puno funkcionalnosti ako želite ga prilagoditi ili promijeniti, ili su pokrenuti it-- ga iskoristiti za pokrenuti vlastite poslužitelja usluge. Tako da je Python u malom. I to je CS50. Hvala.