ROSS RHEINGANS-YOO: Ahoj, já jsem Rosse. A tohle je CS50 seminář. To vás od programování v C programování v jazyce Python. Python je skriptovací jazyk. Je to do značné míry jako C v syntaxi, ačkoli někteří technických detailů jak se dostane, že syntax popraven jsou mírně odlišné. To je méně výkonný než C v některých ohledech. To je méně výrazný u kde přesně ve vašem počítači paměť dostane stanoveno, jak se dostane stanoveno, když se dostane svobodu, a ty druhy věcí. Je to užitečnější než C v některých ohledech, protože je to jednodušší programovat v. Jazyk je, pro některé lidí, více intuitivní. A opravdu, cílem je pro to být rychlejší programovat a potenciálně pomaleji spustit. Nyní, pokud si myslíte, že o množství času jste strávil na vaše poslední Problém set psaní Váš kód proti množství času, který strávíte na poslední problém nastavit spouštění kódu, byste si představit, že jazyk což bylo dvakrát tak rychle psát, a dvakrát tak pomalý provést, by mohlo být zlepšením oproti C v některých ohledech. Jistě, když se snažíte psát malé programy, dělat jen málo věcí, Python je užitečná jazyk výběru. A na konci této seminář, doufám, že budete být schopen učinit volby v budoucích projektech o jazyk, který je správné používat, není idea že jeden jazyk je víc opravovat po celou dobu. Pár věcí o tom, co je seminář. Tento seminář není určen k Vás naučí, Python od nuly. Python je velmi podobná na C, a já jsem za předpokladu, že že jste CS50 student, nebo někdo s podobným obeznámenosti s C. Pokud jste CS50 studentka kolem problém nastavení 6, Takže jste vidět spousta věci C, dám vám Hlavní rozdíly, a některé z věcí, které dělají Python odlišný a zvláštní a užitečné, ale já nehodlám jít co programovací jazyk je a jak psát programy. Nicméně, tento seminář bude vyučovat můžete napsat Python programy pokud jste jedním z těch mála skupin. Opět se podíváme na to, jak byste implementovat psets-- který by měl být 1-6 v Python-- a poskytovat ukazatele do oficiální dokumentace pro budoucí použití. Další věc, která je důležité o tom, jak je tato diskuse přiděleno, Toto video bude on-line, s laskavým svolením CS50, takže by neměl pocit, budete muset dělat poznámky. Vždy se můžete vrátit zpět a podívat se na to později jako referenci. Dále se na diapozitivy jsou k dispozici právě teď na tomto místě, které by měly trvat děláte doc Google. Je to mírně zkrácené verzi z toho, co jsem ukazovat na obrazovce. Jedna námitka opatrný před skočíme dovnitř, Python 3 je jiný jazyk Python 2. Vypadají hodně stejný; tady jsou velmi malé technické odlišnosti že způsobí programy napsaný v Pythonu 2 nejsou schopny být vykonán v Python 3 prostředí. CS50 Přístroj je dodáván s Python, ve výchozím nastavení používá Python 2. Můžete to zkontrolovat pomocí psaní v příkazovém řádku python --version, který by měl výstup 2.7.6 na aktuálním zařízení. Zkuste Python 3, který dělá pracují v přístroji, pokud Python výchozí 2.X.Y, a to buď spotřebič nebo na vašich vlastních strojích. Ty by měly nahradit Python 3 kdykoliv V této řeči, že jsem psát Python. Je-li váš počítač běh 2 ve výchozím nastavení, typ Python 3, aby bylo možné skutečně sledovat spolu a provádět tyto věci. Navíc, já bod, na oficiálních zdrojů teď. docs.python.org/3--~~V opatrní že to je 3 a ne 2-- má užitečné odkazy. Tutoriál vás proveze hodně stejných věcí, že dělám teď, s výjimkou v textové podobě. Odkaz je užitečné jako Žádost o jazyk, a standardní knihovna poskytuje jste některé z rozšíření s další funkce. Takže úplně první Python programu. Na levé straně máme standardní C, na pravé straně, máme Python. Možná jste uznány tento problém, je to jeden z prvního problému zapadá CS50, a ty vyřešit za použití stejného roztoku. Nyní, důvod, že jsme Při pohledu na tyto bok po boku je tak se můžeme podívat na syntaktické rozdíly. Jeden z slonů v místnosti že jste si možná všimli pravdu off bat, je to, že Python nemá Hlavní funkcí obal kolem kódu. Tak v C, píšete spoustu soubory, jejich propojení, a program spustí provádění V této věci s názvem int main. V Pythonu můžete napsat Soubor, který jste, spusťte soubor, program spustí provádění v horní části souboru. Takže to bude začátek V horní části souboru jít dolů, dokud se najít něco jiného. Pokud nalezne definici funkce, to nebude ve skutečnosti spustit tento kód, to bude prostě definovat funkci. Ale tady, když první Program je n rovno 10, první věc, která tento program bude dělat, je tento hodnotu 10 a nastavte ji do proměnné nazvané n. Když už mluvíme o této linie, jeden z další things-- sorry-- to Znamená to, že C programy, budete psát jim, budete dělat je, který bude vyvolat některé příkazy zvonění, a pak budete spustit Výsledný spustitelný soubor. Python programy, spustíte Text file-- této mario.py by mohl bude tento soubor, který jsem právě ukázal, vás-- budete spouštět tento soubor a budete spouštět, a obsah něm budou prováděny interpret Python. Můžete to udělat ve svém IDE. Takže když mám soubor Hello, která se prostě musí tento obsah. To je vlastně Python 2, ne Python 3, takže se nemusíte starat o syntaxi pro tuto chvíli. Ale budu běžet Python, na hello.py, a to běží. Dalším způsobem, že mohu použít, že Python Nebudu zabývat tolik v této řeči, je, když jsem se psát Python, to kapky mě do prostředí, kde Můžu krmit ji Python řádek po řádku. Tak tady, když jsem zadejte print space "Hello, World". Typ vstoupit. Bude mi plivat to zpátky výsledky že individuální linka okamžitě. Je to může být užitečné. V tomto rozhovoru budu dělat věci na sklíčka. A tak budete mít možnost sledovat podél buď v zde, nebo písemně aktuální soubory a pak jejich plnění. Ale, vracet k tomu kód, další věc, že byste mohli mít noticed-- No, je tu Dvě věci, které by vás mohly Všimněte si o těchto bloků. První z nich, spíše všední, je to, že Python nemá koncové středník. Středníky jsou volitelné všude a neškodné všude. Můžete je přidat. Mohlo by to, aby si lidé, kteří píší Python pro obývací hihňat se na vás za zády, protože že to není nutné. Jsou to často příznakem koná přes od C. Návrháři jazyka pocit, že to je více jasné, tímto způsobem a že to není nutné deklarovat pokaždé, když ukončíte čáru. Další zvláštní věc o tomto n Je to nemá typ připojené. Jednou z kouzelných kusů Python-- a budu říkat magie, ale existují velmi technické důvody, proč se works-- jeden z magické kousky Python je to, že proměnné mohou rozšířit nebo zmenšit, aby obsahoval bez ohledu na údaje typy byste chtěli, aby. Tak to je 10. Pokud se později dolů jsem přidělen na to n 0.5, bude to trvat, že 0.5. Bez ohledu na to, že je to tady a int plavat tam, něco, co používá tento n se, více nebo méně, moci supění spolu, pokud se dostane jeden z nich. Ledaže tam je nějaký velmi reálné důvodem, proč nelze použít data typ, který n má v současné době, na kterém místě to bude mít zaklíněný a házet chybu, a ty druhy věcí. Ale tady, Python není opravdu jedno, co to je, že budu držet v tomto trest, stejně jako, chceš tu věc? To, co v tom, že? Jo, je to trochu věci. Budu držet ho na konci. Bude to problém později, pokud někdo, kdo chce využít tohoto cíle nemůže zvládnout. To je jeden z hlavních Rozdíly mezi Python a C že usnadňuje napsat velmi velkých programů C a usnadňuje psaní velmi malý Python programu. For syntaxe není příliš odlišný v tom, co dělá. Je to mírně liší v tom, jak to vyjádřil. Tak to je velmi, co se nazývá Pythonic, způsob psaní. pro řádek v rozsahu (n), se jedná o Rozsah čísel od 0 do n, včetně na dně a exkluzivní na vrcholu. Takže je od 0 do n-1, což je přesně to, co C kód dělá, s výjimkou, že je to mnohem snazší podívat se na možná. Příslušná blok Není vyrazil závorkami, místo toho je to vyrazil tímto odsazením. Takže všechny tyto tratě čtyři mezery na správnou, nebo stejně jako o šířce slona. A to jsou ty, které jsou bude vykonán v to pro. Kdybych zkazit odsazení na to a já tlačit, že tisk zpět původní odsazení, že tisk bude nechat na smyčce. V protikladu k C, kde tady jsem vlastně muset přesunout tento uzavřený rovnátka kolem. To znamená, že nemusíte dostat chyby že vyskočí na vás, protože jste dát ortézu na špatném místě. To znamená, že dostanete chyby že vyskočí na vás, protože jste odsadit čáru špatně. Takže to dělá zářezy mimořádně opatrní. Doufejme, že jste byl výborný opatrní s vaší odsazení tak jako tak, a tak to není, že mnohem větší zátěž. Ale základní pravidlo pro Python, a budeme mít pár z nich že budeme projít skrz průběh diskuse, je vyzkoušet přírodní syntaxi před hledáním něco nahoru. Takže tento syntax, pro toto číslo v rozsahu, je velmi výrazný, pokud jde o styl. Spousta věcí v Pythonu uvidíme, přičemž tento formulář. A tak pokud jste přišli se nový objekt, který jste myslíte, že byste měli být schopni iteraci přes to, v tomto formátu, Ukazuje se, že pravděpodobně podporuje tento formát. Nebudeme jít výborný hluboko v technické důvody, proč to je pravda. Ale je to užitečné, intuice mít když jste se blíží Python programy, že tato věc se prostě bude fungovat. Zkus to. Spustit příkazového řádku Interpret, uvidíme, jestli to funguje, dál s věcmi, před vámi ani potřeba otevřít Google a říkají, co je syntaxe tento konkrétní věc? Spousta Python byste mohli objevit jen tím, že se snaží. To v případě, je ještě více podobné do C pak FoRS jsou. Všimněte si, že tam je žádné závorky. Závorky jsou, opět, neškodné, ale není nutné. Tam je tlustého střeva na konci Stejně jako pro smyčky, a znovu, relativní bloky spíše než členité vyrazil závorkami. Tato ostatní je na originálu úroveň odsazení, a jeho příslušného bloku opět odsazeny. Ti, kteří pracovat přesně tak, jak to dělají v C. To je ve skutečnosti velmi podobně. Opět platí, že tisk ztrácí jeden znak off printf Můžete předat některé řetězce. Ukazuje se, že řetězce může být buď vyznačeny od jednoduchých uvozovek nebo uvozovek. Neexistuje žádný rozdíl, kromě toho, že vnitřní z jednoduchých uvozovek, můžete použít dvojité uvozovky se vzdát, spíše než na uniknout všechny z nich. A uvnitř dvojitých uvozovek, budete Můžete použít jednoduché uvozovky s opustit aniž by jim uniknout. Pokud byste chtěli míchat je, můžete samozřejmě vzhlížet on-line, jak to udělat. Všimněte si, že tady, Já jsem prošel v závěru = tuto věc. To je příklad volitelný Argument, což je jedna z těch věcí, že Python podporuje, že dělá to docela užitečné. Takže tisk ve skutečnosti má hodně argumenty, které jsou obvykle nastavena na jejich výchozí hodnota, ale tady jsem se rozhodl přepsat jeden volal konec. Důvod, že se musím přepsat s prázdný řetězec je to, že tisk v Pythonu, a default, vytiskne nový řádek poté, co že jste to říkal taky. Tak to hash se vlastně bude vytisknout hash v novém řádku. A pokud nechci hash vytisknout nový řádek za ním, pak musím říci, netisknou jeden. Ale, ale tak, jedna poslední věc, která tento program chybí, že jeden má, je include v horní části. Tisk se peče do Pythonu, takže v podstatě že není záhlaví nebo modul , že je třeba zahrnují, ale pokud chtěl o další věci, v Python scriptu, Já bych to ve velmi podobné format-- slova jsou jen mírně liší. Zmínil jsem se, že jsme Nemusíte tu hlavní, protože začíná Python provádění v horní části. Kdybych chtěl zabalit to ve funkci, I by to udělat tohle-- I bych def název funkce, argumenty by mohly jít sem a my vidět některé z těch později, tlustého střeva, a pak znovu, to Celý set off blok je to, co je v provozu blok pro tuto funkci. Tak tohle je definice funkce. A je tu prohlášení, pak dolů tady, mohu jen volat funkci. A opět, program interpret, začíná na vrcholu, bude vidět je definice. To nebude provádět, dokud to se sem dostal, a pak je to jako, oh teď jsi to nazval, já Asi bych to měl spustit. Věc, která je velmi časté vidět v Pythonu souborech, zvláště Python soubory, které jsou uvolněny pro veřejnost a vyvinul by-- a rozvíjet a zachována, je něco, co tuto formu. Toto je tak proto, že basically-- Python, můžete začít na vrcholu a pak spustit dolů až na dno, I když jsem prostě musel Mario zavolal tady, pak kdykoli jsem se součástí tento soubor jiný soubor, protože jsem chtěl použít je funkce Mario, že by jiný soubor mají také tuto výzvu k Mario v něm. A když jsem běžel tento soubor, to by volat Mario. Takže je možné, že jen já Chcete spustit to, jestli jsem opravdu proveden tento konkrétní soubor. A tak jsem si zabalit to v idiom takhle, kde jsem řekl, Pokud je název tohoto provedení prostředí je hlavní, pak chci, aby tyto věci dělat. V opačném případě může někdo jiný use-- patří můj function-- můj soubor, a jen proto, aby si Přístup k těmto funkcím aniž byste museli spouštět věci že chci spustit v tomto souboru. To je, opět, volitelně ale velmi časté. Tyto věci jsou entirely-- jsou přesně stejné mezi C a Python, jistě v 3. Myslím si, že v 2, operátor divize Někdy se vrací, když plave vám operovali ints, a to buď jste chtěli, nebo že jste to neudělali. Ale plus, minus, a časy fungují přesně tak, jak byste čekali, leč přes mírně více typů. Takže si můžete násobit volně plovoucí ints, a ty druhy věcí. souprava funguje úplně stejně. Můžete použít dva stejné znaky. inequals-- větší než, menší než, tyto druhy things-- mají významy, které jste obeznámeni s nimi. Tam, kde C používá tyto operátory, Python používá něco více angličtinu ty čitelné. Takže místo toho dva, ampersandy, vy doslova napište slovo "a", "nebo" nebo ne." Stejně jako ve vaší if-- ve vašem podmíněné příkazy, jsme viděli dříve, že tento syntax v jazyce C odpovídá této syntaxi v Pythonu. A že to není hodně odlišné tam, až na trochu interpunkce kolem stranách. Opět platí, že pokud by C jinde pokud, Python používá Elif, ale jsou většinou změny na úrovni povrchu. Iterace, jako je to často napsáno v tomto idiomu v Pythonu. Můžete vyrábět tento druh věc s while na vnější straně pokud jste chtěli, ale vy rozhodně nemusíte. A opět, pokud jste chtěl vytisknout z prvků v poli můžete to udělat takhle. Jedna z zábavných věcí o Pythonu však, je, že nepotřebujete Použití tohoto paradigmatu, a můžete použít o něco více elegantní jednu. Říkáte, že pro A Ary. Takže spíše než jít sem a běží přes indexy, a pak vytáhl jednotlivé prvky, řeknete o skutečně jen přejet samotných prvků. A potom, co děláte Uvnitř mohou pracovat přímo na prvky, což je docela legrace. A budeme see-- budeme používat že znovu a znovu idiom jak jsme projít kódu. To je opět příkladem něčeho, že budu volat Python kouzlo, i když existují velmi technické důvody, proč to funguje. A tam jsou technické věci, které musí být platí o pole v pořadí pro tuto práci v zákulisí. Ta věc je, že většina druhů které byste čekali, aby to fungovalo měli to implementována Jste v vestavěné jazyce. Další věc, že ​​by bylo hezké pokud to fungovalo v každém jazyce, ale tam jsou některé důvody, proč se nemůže, vytisknout tento řetězec doby toto číslo. Ukázalo se v Pythonu, to dělá přesně Co byste chtěli, což je jen zábava, a znamená, že můžeme vlastně snížit tento program, znovu mario.c. Spíše než iterací hodně, můžeme jen říct, chci určitý počet míst, Chci počet hash, a některé hash na konci. A opět jsme se použít tento formát. Zde jsme předáním proměnná tímto způsobem. Opět jsme nemusíme říkat jaký typ proměnné je to, a jediný čas, my budeme chybám je v době spuštění. Když někdo se pokusí předat něco, to přijde do funkce v pohodě. Budeme-li klín zde, protože to není věc, kterou můžete vytvořit rozsahy přes, Dostanu runtime chyba tam, a já budu muset ladit to tak. Ale do té doby, nemám být velmi opatrní, o tom, co k vyprázdnění, tak dlouho, dokud v aktuální provedení to všechno funguje velmi čistě. Mohl bych dokonce, aby to trochu čistší použití konkrétní vestavěné funkce na řetězce, což je pravý Do bloku. To je jen užitečná funkce ležet v knihovně. Je to v dokumentaci pokud jdete a podívat se na to. A já říkám, no budu mít tento řetězec, nějaké číslo hashů, a rád bych se hned ospravedlnit to-- pad it out s mezerami, že je tato délka. Znovu, toto je v dokumentace, která přináší us-- Budu skutečně proklikat these-- což nás přivádí k naší druhé pravidlo pro Python-- standardní knihovně Metody funkce jsou vaši přátelé. A to je často stojí za to jít hledat Zajímalo by mě, jestli je věc, že ​​právě to dělá. Tam asi je. Pokud byste chtěli pad out řetězec, pokud byste chtěl vzít zpět polovina z řetězce, pokud byste Líbí se probírat řetězec, pokud byste chtěli rozbít pár věcí spolu s řetězcem s čárkami mezi nimi, tam jsou standardní knihovna funkce pro to udělat. A to dělá váš život jednodušší, pokud je používáte místo vyvalit vše na vlastní pěst v pěti řádků kódu zde, pět řádků kódu zde. To opravdu začíná na přidat až reálném čase. Jedním ze zajímavých věcí, o tom, jak to volána. Všimněte si, že je tu tečka věc. Mám nějaký objekt na levé straně, a pak jsem volal tečku funkce. To je jeden z paradigmat, že Python používá pro připevnění metody na objekty. Promluvíme si o tom, co to je velmi krátce na konci, ale víme, že se můžeme oba pracovat na věci podle přičemž ta věc říká tečku co, nebo na telefonním čísle funkce, která vezme že předmět a některé další argumenty. Tak to jsou oba způsoby, se věci dělají v Pythonu. A zda konkrétní funkčnost je implementována v tomto stylu, nebo to styl je něco, co vás by měl vypadat, dokud se dostanete viset pro který z nich je pravděpodobné, aby se dostal do. Je tu více či méně kohezní filozofií Python že jste většinou absorbují tím, že píše hodně v něm. Na nějakém místě, které jeden z nich něco, co se bude implementován jako vypadá přirozeně. Pro tuto chvíli, je to prostě něco, se naučíte, jak si přijít na to, každá jednotlivá věc. Takže standardní knihovna Funkce jsou vaši přátelé, a oni vám umožní psát věci, které zabírají tolik místa opravdu krátce, opravdu elegantně. A to je ve skutečnosti pravděpodobně více čitelné, řekl bych, než program C támhle. Nemluvě o tom, že je tak short se vejde celý slon v prostoru, že jsme zachráněni. Další věc, to je implementace Mario je to tečka C, což myslím, že je nejkratší můžete dostat. Nemá get int, ale že je těžké kódy hodnota 10 stejným způsobem, že tento člověk dělá. Ukázalo se, že tento jeden hodiny v na 84 znaků, zatímco Python je 64. A to je nekonečně více čitelný než tento odpad zde. Takže Python je účinnější v prostoru. Je to o něco méně efektivní v čase, ale ne o mnoho. Seznamy jsou důležitá věc v Pythonu. Nemáme je neviděl, ale oni fungují podobně jako pole dělat v C. Tak tady, můžete je deklarovat, můžete předat je do věci. Nyní čtverce je držitelem řada z těchto věcí. Opět jsme se deklarován jako typ, ale jestli se někdy zkuste ji použít, něco, co byste očekávali pracovat na pole celých čísel bude pracovat na pole celých čísel. To je věc, která si absolutně nemůžete dělat v C, protože paměť je tak ruce na, ale je velmi snadné udělat v Pythonu. Jestli Chci pole být větší, mohu připojit prvek k ní, a to je v pořádku. Co se děje v zákulisí? Tlumočník půjde out a získat nějaké paměti, a možná to bude dostat trochu více paměti, takže si nemyslím, takže nemám na realloc pokaždé. Ale kolik mají více paměti to potřebujete? To nejsou rozhodnutí že musíte udělat, jedná o rozhodnutí, že interpret se chystá udělat. Zde vidíme rozsah může trvat dva argumenty, ale je to stále bude inkluzivní z vrcholu, takže přidáme 1 tam. To je idiom, což je ještě více chytrý způsob, jak psát věci, jako je toto. Jmenuje se to seznam s porozuměním, a tady, co říkáme je Rád bych, aby v i na druhou pro každou hodnotu i v tomto rozsahu. To, co na pravé straně by mohl být další pole, a to, co v levé se, že by zvláštní funkci že by se v i jako proměnná a dej mi nějaký výsledek. Co budu dělat, je, Chystám se postavit matice, která je všechny tyto věci pro každou hodnotu v tomto rozmezí. A to je super elegantní, super krátký, a je to velmi jasné, co to znamená. To je jeden z things-- to je opět, jedním of-- velmi symbolický důvody, které lidi, jako Python. Pokud máte rádi programování takhle, pak Python je jazyk, která by vás mohla učit. A opět, tam jsou technické Důvody, proč to funguje. Ale co jsme týká, jsme více či méně je to jedno. Takže pokud chcete vytisknout seznam, některé stejné stylů jsou užitečné. Pro i v tomto rozsahu, mohli bychom index přes všechny věci, a pak vytisknout je všechny ven. A uvidíte tu len. Pokud jste někdy chtěli dostat délka pole, to je v Pythonu velmi snadné, je to velmi těžké v C. To by vytisknout přesně co byste očekávat, že to. Mohli bychom také, jak jsme viděli dříve, iterovat přes prvků v poli přímo, a pak už jen mluvit o tom, je, spíše než index zpět do pole pokaždé. A to je věc, kterou můžete udělat. Tak v C, pokud se zeptáte na něco takhle, tisk by řekl, to je pole celých čísel. To rozhodně není řetězec, nemohu vytisknout. Python více či méně nestará. Je to jako, existuje způsob, který jsem by to mohlo obrátit na řetězec? Jo, udělám to. A tak jsem si jen vytisknout to ven. To znamená, že můžete dělat věci jako-- tito je většina z pevných částí hry patnácti, písemné velmi stručně v Pythonu. Uvidíte, že je tu trochu of-- zde Já jsem cast celé číslo na řetězec, a musím to udělat ručně. A já se přidat že na jiném řetězci, nebo jinak Python dostane zmatený. Ale ať už když jste přidá řetězec na celé číslo, Myslím, že jsem se dostat integer zpět nebo řetězec zpátky? Ale na druhou stranu, pokud jste právě volejte str na věc, a mohla by v každém možný world být převedena na řetězec, to bude asi převeden do řetězce. Tady vidíme použití Seznam vnořených porozumění na levé straně, některé indexování, který je přesně tak, jak byste být použity na to, a někteří vytisknout věcí. Opět jsme definovány některé funkce a zavoláme je dolů v hlavní kdy jsme skutečně dostat soubor. return funguje přesně tak, jak byste očekáváte od práce s C. Najít, můžeme nastavit věci jako tohle-- tady je seznam s porozuměním tam je přiřazení k proměnné, a můžeme skutečně udělat ještě jednodušší. Nepotřebujeme psát hledání, protože vestavěné do jazyka je-li to, co je v tomto poli. Vrací true, jinak return false. Tak to je celistvost najít. Celistvost druhu zahrnuje volání druhu, což je-- existují implementace z toho vestavěný do jistých C knihovny. Pokud byste takhle druh zpět, vám můžete potlačit tento volitelný Argument v opačném směru s opravdovým. A pokud byste chtěli seřadit přes řetězce, který je vestavěný stejně. Takže to není říkat to jsou věci, které musíte dělat každý den, ale myšlenka je, že tento je filozofie Python, že všechny tyto věci, které byste druh chcete dělat jsou vestavěné. A většina standardní funkce, tak nějak, délka, cokoliv, podporovat nejvíce logicky rozumný vstup. Budete volat len ​​na poli ve stejném jak jste volání len na provázku. Ty multiply-- seřadit řetězce stejným způsobem třídit pole. Většina standardních funkcí že lidé stavět, a většina třetích stran knihoven, které lidé stavět, protože jsou emulovat konstrukce standardní knihovny, lze nazvat o všem, že jste jako, proč se to jen práce, v C. Více nebo méně, to bude fungovat v Pythonu proto, že lidé pracují za obr co věc je, a pak pracovat patřičně na to. Takže znovu, technické zázemí, ale to dělá náš život snazší, neboť programátoři. Tak tady je soubor I / O. soubor I / O má spoustu málo věcí, které dělají to složité, a tak tam jsou zdroje on-line, ale ve zkratce, říkáte otevřít na souboru jméno s určitým typem. Tak to je číst, číst a psát, psát nebo připojit. Přečetli jste si určitý počet znaky ven a tisknete ty, dostanete Dobrý den! Mám na mysli, jako je tento soubor měl Dobrý den! V tom, volání číst, a to, co dostanete zpět je řetězec, který má všechny zbytku pole, nebo všechny zbývající části spisu. Pokud zavoláte znovu číst, jste na konci souboru, a tak nemusíte dostat něco, a tak se budete ukončit. Znovu, toto je .close spíše než Zavřít soubor, protože by to bylo v C. Toto je více nebo méně, protože f je věc, a chcete na f zavřít. Ale základní soubor I / O, není obzvláště složité. Opět platí, že pokud si přejete otevřít soubor, pokud chcete přečíst určitou řadu, můžete dostat z konkrétní line-- tu vestavby pro to. Pokud byste chtěli napsat věc, můžete napsat to. Pokud byste chtěli vypsat individuální kousnutí, můžete napsat ty. A pokud byste chtěli iteraci na tratích souboru jednotlivě, jako jsme to udělali v kuse od Před několika týdny, můžete to udělat, aby. Opět platí, že většina objektů, které byste chtěli mít možnost s iterovat přes Podpora Iterace nad nimi. V Pythons, soubor je možná věc, která Rád bych s iterovat přes řádek po řádku. Pokud by to bylo slovníku slova a já jsem byl se snaží dostat ty jednotlivce slova se, pak se, v rámci této smyčky, linka, že to bude Každé slovo v pořadí, a to se bude popraven za každou linku v souboru až do konce souboru. A opět, když jsem vytisknout každý linka, linky přicházet s novými linkami, takže jsem nastavení koncového zpět k věci, jako je tento. Pak bych si obsah mého souboru. Druhá věc, která působí v některé způsoby, jako například seznamy a v některých ohledech jako něco podstatně silnější, jsou slovníky, které jsou opravdu pohodě použít, ale jsou v podstatě hash Tabulky v přestrojení. Můžete vytvořit jeden pomocí přesně dvě postavy, což je úžasné pokud jste se pokusili implementovat hash tabulky pro váš problém set, Víte, mnoho bolesti, která může být. Ale lidé dělali to, a udělal to tak dobře, že nemáte na si s tím starosti ještě. Pak můžete vkládat jednotlivé věci. Hash tables-- nebo slovníky ne zvlášť jedno, co jste ukládání v nich. Takže pokud některé položky jsou čísla, a některé položky jsou seznamy, pokud některé položky jsou další slovníky, a některé položky jsou řetězce, Python ne tolik péče. Opět platí, že pokud jdete do toho očekával řetězec, a to, co se dostanete zpět je pole, to je váš problém. A možná je to vina toho, kdo myslel, že to bylo uvedení věci ve slovníku, možná, že jsi to ty. Pokud to byl někdo, ostatní, doufejme, že byly dobře vychovaný o čem se děje ve slovníku a neopustil žádné nástrahy pro vás spadnout do. Ale standardní funkce budou vám zpět dobře se chovajících věci. Tak oni říkají, že toto se vrací zpět slovníku řetězců, pak vše, co jdeš se dostat ven z je řetězec. Pokud se vám něco z toho, a to výlety jste si, dobře, to může být na vás. Python určitě vám dává dost lano se oběsit, pokud budete chtít. Nyní můžeme vytisknout individuální prvky tohle a tohle se vrací přesně to, co byste očekávali. Přesně to, co byste očekávali, myslím, je výraz, který jsem pomocí hodně, ale to je více nebo méně jak Python funguje. Zeptáte-li se o věc, která není to, Python bude vyhodit chybu a to bude přestat vás z bez ohledu na program, který byl v. Bude to vlastně vytisknout více informací, než to, to bude bod vás-- to bude přidat čáru, a tak. A opět, možná chceme přecházet přes slovníky a najít všechny věci v něm. Zde jsme iterace přes ve stejnou dobu dvě věci. A tak budeme dělat s klíčem, hodnota, ale pak vytisknout všechny tyto. A pokud bychom chtěli cast-- pokud jsme vlastně běžel to, budeme mít nějaké problémy z následujících důvodů on-- když jsme šli s Davidem, to nemohlo add-- kdybychom ne vrci řetězec jako první, jsme nemohli dodat, že pole řetězců na palubu řetězce. Ale pokud budeme obsadil ji do A string, dostaneme něco jako je tento, což je možná to, co jsme chtěli přečíst. A to je speller. Právě čteme ve věcech. Takže můžeme číst v jednotlivá slova jsou čáry. My utnout poslední věc, takže tlustého střeva minus 1 Chomps z poslední věc, která we-- poslední znak řetězce. Řekneme. OK, z nichž každý jeden z těch, dostane vloží do tohoto slovníku, mapování na hodnotu 1. Děláme nijak zvlášť péče o, že jeden, ale je to jen tam říct, oh no, tahle věc Dám do slovníku. Vzhledem k tomu, později to, co jsme chystá udělat, je, že jsme chtěl říct, dobře, pokud je to ve slovníku vůbec. Opět platí, že tato kontrola pro Členství je až provozní za použití zcela jiný algoritmus, než to bude v seznamu, ale říkáme to stejným způsobem, který Je něco z toho Python cukrovou polevou věci, tak, že jsou jednodušší. A opět jsme viděli než se věci, jako je tento. To je v podstatě najít, nebo je to přesně stejné syntaxe as najít, ale je v provozu více než zcela odlišná struktura. A my to nijak zvlášť nezajímá. Takže to jsou věci, které byste byli požádáni, aby splnit pro pravopisu. Při tomto tempu, budeme se dostat více či méně všechny psets udělat. Publikum: Tak, že v podstatě jen se vrací jako nesprávně napsáno, pokud to není odpovídaly něco v slovníku? ROSS RHEINGANS-YOO: Ano, ano. A tak, jedná se o adaptace problému set který se vás zeptá, abyste udělali přesně to. Diváků: Proč je řada minus 1 tam? ROSS RHEINGANS-YOO: So když jste iterace přes soubor s žádostí o od vedení, linky přicházejí s znak nového řádku na konci to-- mínus 1 je prostě nakupovat ty pryč. A to je mimořádně flexibilní způsob indexování do věcí. Takže pokud máte řetězec, a chtěli byste, no já jsem začnou na charakteru tři a já půjdu až do konce. 3 dvojtečka udělá za vás. Pokud jste stejně jako, chci začít u začínají a jít na poslední minus 1 znak, tlustého střeva minus 1. A pokud byste chtěli jít od Třetí do minus jako první, pak bych řekl, že 3 minus 1. Navíc, pokud chcete, aby index do věcí počítání zezadu, stačí index s čísly minus. A protože kde C exploduje nebo možná krmit další paměť, kterou neměli Přístup k, slyšet, můžete říct minus 1 znamená, že poslední, ale 1 znak v řetězci. Moduly jsou version-- jsou analogů knihoven C a jsou užitečné pro spoustu věcí. Hodně věcí byste chtěli dělat v Pythonu, Kromě jednoduché manipulace proměnných, Chcete-li připojit do větší knihovny s větší rozhraní a další funkce pro interakci s jinými částmi světa. sys je jedním z těch, s partou nástrojů které jsou vhodné pro interakci s samotném systému a importovat ji jako import sys. Je tu další dokumentace od To, co jste tu mohli jít, nebo jste mohli najít na Googlu googling Python sys. Zadáte v zadání. První odkaz bude dokumentace v Pythonu 2, Druhá vazba se chystá být dokumentace Python 3. A pokud bychom napsal soubor, který vypadal jako tohle-- If zejména jsme při pohledu na působí na argumenty příkazového řádku, stejně jako jsme se naučili dělat velmi brzy v této třídě. To není obtížné. Můžete dostat ven argv, což je jedna z těch věcí, který je implementován sys. Není to vestavěný do základní balík, ale znovu, lze prodloužit pomocí importu že funkčnost z sys. Budete říkat sys. cokoliv. Zde je argv. Je tu vlastně žádný argc v sys, protože vás Můžete si jej tak snadno voláním len. My pak vytisknout, že ven, pak jsme běžel na našem terminálu echo-args.py. Máme se vrátit pole, který Je to první argument. Opět platí, že toto je argv 0, což je jméno té věci, která dostala volal. Pokud bychom nazývali to s přídavnou argumenty, dostali bychom ty zpátky. To je jeden způsob, jak dostat argumenty příkazového řádku. Chcete-li příznaky, kde odbočíte zvláštní věci na nebo přepsání konkrétní výchozí, argparse je váš přítel. A opět zjistíte, že on-line v pythonu argparse na Google. Existuje několik užitečnosti moduly, které najdete sami pomocí a znovu, pokud budete trávit nějaký čas tohoto jazyka importu jsons pro čtení a ven z JSON Soubory, není tak složité. Můžete otevřít soubor, nazvaný json.load v tomto souboru a vrátit věc. Co je to za věc? Je to JSON objekt. V případě, že JSON má pole, Python má pole. V případě, že má JSON asociativní pole, Pythonův slovníky, řetězce, a čísla, a tak dále. Chcete-li výpis, že z vás, otevřít nový soubor, říkáte výpis, a zatížení a skládek na jít dovnitř a ven z řetězců. Podobně, lák volána v podstatě stejné rozhraní. To je o něco více užitečné, pokud jste dumping Python objekty. Takže pokud jste někdy chtěli ušetřit verze aktuálního stavu proměnné pro budoucnost běh vašeho programu, okurka je Python je knihovna za to, že. Máte-li nějaký druh proměnná, která může být napsána za obdobných slov a znaků a bytes-- jako je tento slovník, můžeme napsat, my mohl napsat to dolů as jako json objektu, který byl doslova tyto znaky. A pak by bylo velmi snadné člověk otevřít to up-- otevřít a přečtěte si ji. Kdybychom nijak zvlášť péče o lidech to čtení, bychom mohli balíček ještě efektivněji do forem, které by mohly být později vybaleno nebo že by později mohl být nahuštěny. A to ušetří 80% prostor, který vaše předměty by se mohly trvat, pokud jste napsal ven latinkou. Zavoláte nálev moc totéž way-- skládka, zatížení, a pak se dostat své věci zpět. Takže pokud píšete velmi Python krátké programy, které chtějí ušetřit stát, a pak si přečtěte jim později, takové věci jsou vaši přátelé. Že byste mohli velmi snadno vypsat je jako formátu JSON. Většina objektů Python může vypsat ven JSON jestli je nějaká naděje, že strukturálně mohly by být zastoupeny tímto způsobem. To jsou jen špička ledovec moduly, které jsou užitečné. Takže sys, os, multiprocessing, jsou druh základních tahounů pro věci, musíme komunikovat s souborový systém os., jako os.isfile, os.isdirectory, os.makefile, to jsou vaši přátelé. Pokud chcete komunikovat s konkrétním typem souboru, JSON, lák, csv. Chcete-li komunikovat s web Stránky se urllib pro získání http stránek. bs4-- BeautifulSoup-- je to nádherný parser pro HTML. Můžete jej spustit na html a vy získat tento vnořený objekt Array teď, které si můžete procházet přes lookin, jako se jen hledá pokud je, v, což je fantastické. Je tu banda balíčky pro running-- za to zejména MATHY věci. Takže pokud chcete násobit, obrácení, transformace matice, numpy se používají lidé všech celém světě pro to. scipy je ještě užitečnější nástroje v tomto směru. sklearn-- strojové učení, zpracování přirozeného jazyka, Super užitečné věci, dostane implementovány v jazyce Python po celou dobu. A opět se mírně déle write-- líto, trvá o něco déle běžet, ale důvod, že skutečné inženýři mají tendenci Použití Python je proto, že mají tendenci být blokován na vás psaní kódu, spíše než váš počítač spuštěn kód. Takže pokud se chystáte napsat Program, který spousta dalších lidí se bude používat navždy, jako je Linux, vy může napsat, že v C. Pokud jste byli chystá napsat výpočetní motor, můžete psát v Pythonu, pokud jste potřebovali ji měnit každých pár měsíců. Někteří lidé by se napsat, že v C, protože jsou to takhle. Takže jsme viděli import sys jako způsob, jak se věci jak se dostat modul do programu. Můžete také importovat jako přezdívka, pokud budete chtít. Opět multiprocessing je bolest zadejte ven pokaždé, tak import as mp a pak kdykoliv použít v programu, řeknete mp.process, nebo co jste. Pokud byste chtěli import pouze jediná věc, tak urllib má věc zvanou Požadavek, takže si můžete importovat jen to. Později, nebudete ji vyvolat jako urllib.request, ale stejně jako požadavek sám od sebe. A můžete importovat vše z modulu, pokud by se vám líbí. To je občas není dobrý idea-- to obvykle není dobrý nápad, ve skutečnosti. Protože jste very--, protože pokud něco V tomto modulu má název, který vás chtěli použít někde jinde ve vašem programu, nemůžete. A to není vždy zřejmé, že je tomu tak. S cílem zajistit, aby co jste dělali v bezpečí, budete muset otevřít modul a vidět všechny názvy, které končí v there-- všechny funkce, všechny proměnné že žijí v tomto modulu, protože jste přinášet všechny je do místního názvů. Takže lidé dělají to. Obecně se doporučuje že nemáte dělat. Ale lidé to vše čas, protože jsou líný a nechci psát ven MP. cokoliv, nikdy. Všechny ty řeči o modulech aby mě kolem krátkém rozhovoru na tom, jak navrhovat programy v Pythonu. Prvním krokem je zkontrolovat, zda někdo jiný již udělal věc, nebo udělal 90% věci. Je pravděpodobné, že pravděpodobně mají, a vy by mělo jít dostat své věci a spustit to. Nebo napsat wrapper kolem něj přizpůsobit ji do svého účelu. Je to jen po tom má selhalo, že byste pak jít dál a začít přemýšlet o write-- Jak byste dal tuhle věc dohromady. Je tu spousta věcí tam, a to je jeden z nejužitečnějších věcí o Pythonu. Jako jazyk je elegantní, jazyk je snadno ovladatelný, ale také proto, je to tak elegantní a snadno ovladatelný, lidé používali to na dlouhá doba a je tu spousta věcí tam, že můžete využít pro vlastní potřebu. Takže poslední pravidlo Python je, někdo jiný už pravděpodobně psaný modul pro to, někdo jiný má již pravděpodobně psaný knihovnu za to. Předtím, než se pokusíte udělat něco, podívejte se aby zjistil, jestli to byla provedena. Není to tak těžké. Všechny moduly, které jsem dal nahoru předtím, snad s jedinou výjimkou, předinstalovány v každém standardní instalace Python. A tak se volání dovážet cokoliv, vás mít všechny této funkci na dosah ruky. Začátek zabalit to povídat, existuje několik věcí, že jsem odešel jako černé skříňky a druh utajeno, a tam je několik White Lies, že jsem Řekl, že v zájmu poctivosti, Budu alespoň bodě tady, i když nebudu jdou extra hluboko do všech z nich a jejich technické vysvětlení. Spousta věcí, že jsem volal magie je to, co ostatní lidé by vyžadovalo objektově orientovaného programování. Takže existuje mnoho things-- tak proměnné jsou velmi často jednoduché bajtů sedí v, paměť, ale jsou velmi komplikované objekty, které mají interní stát o funkcích a spoustou z skryté proměnné, spousta skrytý funkčnost, která vám umožní proměnit je v řetězcích který umožňuje iteraci nad nimi. A pokud jste writing-- a z důvodu, že mají všechny tyto bohaté funkce Je tomu tak proto k people-- architektů language-- šly skrz a pro každý standardní objekt, dát do funkce říci, je to, jak je to jak to bude fungovat pokud někdo chce pro iteraci nad ním. Takže všechno, někdo by mohl případně chtějí iteraci, má logiku napsanou v ručně na tom, jak jste má iteraci tohoto objektu. Vše, co byste mohli přát dumpingové do řetězce je logické napsal. To je funkce, která vám zavolat, pokud Chcete-li vypsat na to na řetězec. To je důvod, proč můžete volat len ​​na věci, to je důvod, proč můžete volat v, to je proč si můžete zavolat, pokud o všem že byste chtěli, protože Všichni, kdo nesou s sebou, technické know-how k tomu, že. To je něco, co jsem si Super nehodlá jít do. Ale pro věc v seznamu je decentně odlišné od C styl pro smyčky, a můžete přečíst vše o tom na internetu, pokud máte zájem. Tam je stinná stránka pro všechny z toho, že jsem se zmínil, takže je tu dvě věci. První je, že tento objekt orientovaný programování přidává spoustu režie na náhodné věci, takže můžete skončit up s použitím mnohem více paměti; můžete skončit s použitím trochu více Doba, než byste jinak. Other-- ale čím víc zákeřná temná strana, jak to je, pokud se věci prostě jednat jako chcete, aby aniž byste museli myslet supertvrdých o tom, zda by to mělo být int nebo zda by měla existovat float, to by mohlo být, že tady vyrábíte int, ale tady vám myslím, ale budou always-- líto, to by mohlo být to, že se zde si vyrobit plovák, ale když se dostanete do druhé části vašeho programu, myslíš, No jo, ale budou vždy podejte mi int. A pokud tomu tak není, je možné, že jste zaklíněný někde, pokud se pokusíte použít ho k indexu do pole, nebo co jste. Takže jeden z real užitečné věci, o C je to vás nutí k opravdu myslíte, tvrdě, než uděláte any-- Než si přinesete jakékoliv proměnné do existence, jako to, co je typ této proměnné. A to bude mít že typ pro všechny časy. To není pravda Python, a ve skutečnosti, budete can-- pokud jste jen nějak se podle sluchu, a vy některá rozhodnutí Jeden způsob, jak na jednom místě, a některá rozhodnutí jedním Způsob, na jiném místě aniž by dost materiálu za scény v jiném místě správně zachytit věci, vy Můžete získat některé velmi podivné chyby. A program může udržet v chodu po velmi dlouhou dobu, protože je to dělá hodně práce, říkat, dobře tato věc mohla fungovat tímto způsobem, takže budu běžet takhle. A ve skutečnosti, skutečnost, že se tlačí dopředu přes mnoho malých chyb znamená, že se často při chyba je ve skutečnosti špatný a vy vlastně chcete ho opravit, to skončí mil away-- programu skončí zastavení na míle daleko od okamžiku, kdy jsi měl chybu. A tak jedna věc, kterou bychom chtěli programy dělat, sometimes-- jednu věc že bychom chtěli programy dělat, když jsme ladění je selhání hlasitě a nedaří se velmi rychle, když se něco pokazí. Python je velmi špatná na to. Python je velmi dobrý v ne selhání a válcování vpřed přes nečekané věci. Což je výhodné, když píšete malých programů. Když se dostanete komplikovaný chyby Někdy trvá dlouhou dobu dráždit ven. Takže tam je temná strana pro všechny to, jako by to prostě funguje. Je to prostě funguje, jako byste očekávat, že to. Kromě toho, že pokud se tak nestane, můžete skončit up v úplně jiném místě a snaží se přijít na to, kde to bylo, že jste se pokazilo. Odvoz odpadu je-- tak jedna věc, kterou si všimnete je to, že některé z těchto věcí, které Přinesla jsem do existence-- Tato pole, tyto slovníky, tyto objektů, tyto files-- nikdy uvolněno. Nebylo volání zdarma v některé z této diskuse. A to byl na C-straně, protože Nikdy jsme se dostali do těch věcí. Ale v Python straně, není svobodný. Věci se automaticky uvolněna při Python si myslí, že nejste při pohledu na ně. Je to opravdu dobrý není uvolní věci, které můžete ještě mohlo být při pohledu na, ale to znamená, že pokud jste byli chystá přidělit tuto velkou věc, a jste jako, oh Skončil jsem s ním teď, to je těžké říct Python že jste udělal s tím teď. Někdy můžete nastavit tato proměnná není nikdo, a pak doufat, že nakonec garbage collector přichází skrze a čistí ji. Ale opět, vy ne mít kontrolu nad to. A jeden z důvodů, proč lidé používají C pro opravdu výkonnost kritické věci, je tato schopnost opravdu vědět, kdy je alokovaná paměť a když je uvolněno, a mají hodně kontroly nad říká, Jsem pomocí nic více paměti, než potřebuji. Což je něco, Python není to skvělé na adrese. Diváků: Můžu se vás na něco zeptat? Co jste myslel tím nepodaří hlasitě? ROSS RHEINGANS-YOO: Takže pokud se něco děje špatně a jste v ladění Režim, byste často chcete váš program vám říci, kde přesně se to pokazilo, a ne jen tiše zastavit běh. Ale vy byste ve skutečnosti je to pro tisk out všechny druhy informací o podobně, zde byla tato. To, co se stalo Pokud tisknete wen-- pokud používáte webový server-- Diváků: [Neslyšitelné] ROSS RHEINGANS-YOO: Jo, jestli máte spuštěnou webový server, je to někdy špatné, pokud jste vždy vyřazení chyby, a vy říkáte, dobře, že nefunguje. Jdu se zastavit. Já jsem prostě jít ignorovat to a jedeme dál. Vzhledem k tomu, pak se můžete dostat do stovky z těchto chyb, a ne vidět. Bylo by jistě užitečné pro účely ladění pokud pokaždé, když váš webový server proveden Chyba, jste měli trvalé záznamy o to. Možná si dokonce chtějí program zastavit, tak, aby tyto záznamy Nechápejte pohřben pod věcí. Ale zase, že je v režimu ladění. Často v režimu výroby, svět je trochu jiný. A v malých skriptů, které Běžím, kde to, co jsem řekl, dělat by mohl být jen trochu off z toho, co jsem chtěl, aby to udělat, pak nějak protlačit Chyby je něco, co budete chtít. A v těch případech, rozhodně Python opravdu vydělá jeho startů. Poslední věc, že ​​jsem neměl mluvit V tohle--, že jsem se mluvit o tom, ale může být ve skutečnosti vzteku první Čas máte jeden z těchto chyb, a druhý a třetí a čtvrtý když budete mít jednu tyto chyby. Python, jsem se zmínil, že používá bílý prostor vám říct, jakou úroveň odsazení a to, co funkční blok jste v, zachází tabulátory a mezery odlišně. Takže pokud jste na kartu více než čtyři, a pak další řádek má čtyři mezery, i když se objeví jako Stejné množství v editoru, Python neléčí jim totéž. Ve skutečnosti, Python zachází karet a prostory, jako je olej a voda. Jsou to jen rozdílné věci. Není zde žádné určité Délka, že karta je, takže to není jako karta rovná 8 prostory, a proto byste si kolem něj tímto způsobem. Stejně jako, když říká, co Úroveň prázdného místa jsem na, to je vlastně hledal vzor mezery a tabulátory. A tak, že nejlepší způsob, jak se s tím vypořádat je vždy použít mezery po celou dobu. A ve skutečnosti, v Cloud9 IDE a CS50 IDE, kartě klíčové vložky Čtyři prostory, v místo o kartu, která je super užitečné. Ačkoli znovu, pokud jste napsal Python program s kartami, které by bylo v pořádku, je to jen v případě, někdo šel a snažil se přidat jediný řádek do svého programu, který měl čtyři prostory pro každou kartu, to zlomí. A to by se zlomit způsobem že opravdu není vidět. I když skutečné chyby Zpráva, že to vrhá má co do činění s novým odsazení zde neočekává, nebo-- pokud se mluví o odrážky a vypadá to, že to je špatné, je to pravděpodobně proto, je tu problém, karta-space. Pořád vzteklý ladění. Největší celku, ty řeči, které jsem neměl dostat, protože je to opravdu složité, subtilní téma, a nebylo nutné provádět žádné z toho, co jsme udělali tak daleko, jsou koncept nazvaný tice. Jsou tam hodně jako pole, které nelze upravit. Dostanou používají po celém místě, protože jsou užitečné pro spoustu věcí že pole nejsou vhodné pro. Ale pokud chcete, aby se pole, a pak slibují interpret, který vás nikdy nebudou chtít upravit, že thing-- Ve skutečnosti, pokud chcete upravit, budete dělat nový s novým Hodnoty v to-- To jsou tice. Spíše než produkující je s hranatých závorek, vyrábíte je s kulatých závorek. Proč byste použili tyto věci, je trochu otázka. , Jediná věc, kterou budu říkají o vás, že je mohou používat jako n-tice Indexy pro slovníky. Nelze použít pole as Indexy pro slovníky. A proč je, opět, technické a Nebudu běžet do něj. Pset, že jsem se ani nedotkl Na této diskuse je pset6. Takže tady je návod, jak bys implementovat je-- tady je jak byste implementovat pset6 v Pythonu. Vedení na paměti Pythonu Design cyklus, první věc, co děláte, když jste psaní programů je kontrola aby zjistil, jestli to udělal někdo už. Ve skutečnosti, pokud chcete, na serve-- Apache 50 činí přibližně to, kromě to nepřijde Standardní instalován na počítačích s Linuxem. Python a Python jednoduchý http server dělá stejně. Pokud jste někdy na počítači Linux, nebo vnější Cloud9 IDE z CS50 a chcete, aby sloužil tento proud adresář určitý port, python-m SimpleHTTPServer Port slouží to. Můžete také importovat jednoduchý HTTP server a je to tu hodně funkce, pokud Chcete-li ji upravit, nebo jej změnit, nebo provozují to-- využít ji provozovat svůj vlastní server služby. Tak to je Python v kostce. A to bylo CS50. Děkuji.