ROSS RHEINGANS-YOO: Hi, mimi nina Ross. Na hii ni CS50 semina. Itachukua wewe kutoka programu katika C na programu katika Python. Chatu ni lugha scripting. Ni kwa kiasi kikubwa kama C katika syntax, ingawa baadhi ya maelezo ya kiufundi ya jinsi syntax anapata kunyongwa ni tofauti kidogo. Ni chini ya nguvu kuliko C katika baadhi ya njia. Ni chini expressive kwa ambapo hasa katika kompyuta yako kumbukumbu anapata kuweka nje, jinsi anapata kuweka nje, wakati anapata uhuru, na wale aina ya mambo. Ni muhimu zaidi kuliko C katika baadhi ya njia, kwa sababu ni rahisi kwa mpango katika. Lugha ni, kwa baadhi watu, zaidi Intuitive. Na kwa kweli, lengo ni kwa kuwa ni kwa kasi kwa mpango na uwezekano wa polepole kutekeleza. Sasa kama unadhani kuhusu kiasi cha muda alitumia juu ya mwisho yako tatizo kuweka maandishi kanuni yako dhidi ya kiasi cha muda wanatumia juu ya tatizo lako mwisho kuweka utekelezaji kanuni yako, d kufikiria kwamba lugha ambayo ilikuwa mara mbili kwa haraka kuandika, na mara mbili kama mwepesi wa kutekeleza, ili kuwa kuboresha zaidi C katika baadhi ya njia. Hakika wakati wewe ni kujaribu kuandika programu ndogo kufanya mambo kidogo, Chatu ni lugha muhimu ya uchaguzi. Na mwishoni mwa hii semina hiyo, natumaini utasikia kuwa na uwezo wa kufanya uchaguzi katika miradi ya baadaye kuhusu ambayo ni lugha sahihi kwa kutumia, si wazo kwamba lugha moja ni zaidi kusahihisha wakati wote. Mambo machache kuhusu nini semina ni. Semina hii si nia ya kufundisha chatu kutoka mwanzo. Chatu ni sawa kwa C, na mimi nina kuchukua kwamba wewe ni CS50 mwanafunzi, au mtu na uzoefu sawa na C. Kama uko CS50 mwanafunzi karibu tatizo kuweka 6, hivyo wameweza kuona mengi ya mambo katika C, Mimi nitakupa tofauti kubwa, na baadhi ya mambo kwamba kufanya chatu tofauti na maalum na muhimu, lakini mimi si kwenda na kwenda kwa nini lugha ya programu ni na jinsi ya kuandika mipango. Hata hivyo, semina hii kufundisha kuandika mipango chatu kama wewe ni mmoja wa wale makundi kadhaa. Tena tutaangalia jinsi ungependa kutekeleza psets-- kwamba lazima 1-6 katika Python-- na kutoa kuyatumia kwa nyaraka rasmi kwa matumizi ya baadae. Jambo jingine hayo ni muhimu kuhusu jinsi majadiliano hayo ni kwa ajili, video hii itakuwa online, kwa heshima ya CS50, hivyo unapaswa kujisikia kama unahitaji kuchukua maelezo. Unaweza daima kurudi nyuma na kuangalia saa hiyo baadaye kama kumbukumbu. Zaidi ya hayo slides zinapatikana sasa hivi katika tovuti hii, ambayo lazima kuchukua wewe kufanya doc Google. Ni toleo kidogo Abridged nini mimi nina kuonyesha kwenye screen. Moja caveat makini kabla sisi kuruka katika, chatu 3 ni lugha tofauti na chatu 2. Wao kuangalia mengi sawa; kuna kidogo sana tofauti kiufundi ambayo kusababisha mipango yaliyoandikwa katika Python 2 si kuwa na uwezo wa wauawe katika Python 3 mazingira. Appliance CS50 kuja na Chatu, na msingi anatumia chatu 2. Unaweza kuangalia hili kwa kuandika katika mstari amri yako chatu --version, ambayo lazima pato 2.7.6 juu ya appliance sasa. Jaribu chatu 3, ambayo haina kazi katika appliance, kama chatu defaults kwa 2.X.Y, ama kwenye appliance au kwenye mashine yako mwenyewe. Unapaswa kuchukua nafasi ya chatu 3 wowote katika majadiliano hayo kwamba mimi kuandika chatu. Kama mashine yako ni mbio 2 na msingi, aina Chatu 3 ili kuwa na uwezo wa kweli kufuata pamoja na kutekeleza mambo hayo. Zaidi ya hayo, mimi itabidi kumweka wewe katika rasilimali rasmi sasa. docs.python.org/3--~~V makini kwamba hiyo ni 3 na si 2-- ina marejeo muhimu. Mafunzo itachukua wewe kupitia sehemu kubwa ya mambo sawa kwamba mimi nina kufanya sasa, isipokuwa katika fomu asilia. Kumbukumbu ni muhimu kama rejea kwa lugha, na maktaba Standard inatoa wewe baadhi ya upanuzi na kazi zaidi. Hivyo kwanza kabisa chatu mpango. Upande wa kushoto tuna kiwango C, juu ya haki, tuna chatu. Unaweza kuwa na kutambuliwa tatizo hili, ni moja ya tatizo la kwanza seti katika CS50, na hizi kulitatua kutumia ufumbuzi huo. Sasa, sababu tuko kuangalia upande hizo kwa upande ni ili tuweze kuangalia kisintaksia tofauti. Moja ya tembo katika chumba kwamba unaweza kuwa niliona haki mbali bat, ni kwamba chatu hana kuu kazi wrapping karibu kificho. Hivyo katika C, wewe kuandika rundo la mafaili, wewe kuwaunganisha pamoja, na mpango wa kuanza utekelezaji katika jambo hili aitwaye int kuu. Katika chatu, kuandika faili wewe, nitafanya faili, Mpango kuanza utekelezaji juu ya faili. Hivyo ni kwenda kuanza juu ya faili kwenda chini mpaka kupata kitu kingine chochote. Kama anaona ufafanuzi kazi, itakuwa si kweli nitafanya kwamba kanuni, itakuwa tu kufafanua kazi. Lakini hapa, wakati wa kwanza mpango huo ni n sawa na 10, Jambo la kwanza kwamba mpango huu kufanya ni kuchukua thamani hii ya 10 na kuliweka katika variable kuitwa n. Akizungumza ya kwamba mstari, mmoja wa wengine things-- sorry-- hii maana yake ni kwamba mipango C, wewe utakuwa kuandika yao, itabidi kufanya nao, ambayo itakuwa waomba baadhi ya amri Clang, na kisha utasikia kukimbia kusababisha kutekelezwa. Mipango chatu, kukimbia Nakala file-- mario.py hii huenda kuwa faili hili kwamba mimi tu ilionyesha you-- utasikia kukimbia kwamba faili na wewe utakuwa kutekeleza, na yaliyomo yake itakuwa imetekelezwa na chatu mkalimani. Unaweza kufanya hivyo katika IDE yako. Hivyo kama nina Habari file, ambayo tu ina yaliyomo hii. Hii ni kweli chatu 2, si chatu 3, hivyo si wasiwasi kuhusu syntax kwa sasa. Lakini mimi itabidi kukimbia chatu, juu ya hello.py, na ni anaendesha. Njia nyingine kwamba naweza kutumia chatu kwamba Mimi si kukabiliana na mambo mengi katika majadiliano hayo, ni kama mimi aina tu chatu, ni matone yangu ndani ya mazingira ambapo Siwezi kulisha ni chatu mstari kwa mstari. Hivyo hapa, kama mimi aina katika magazeti nafasi 'hello, dunia'. Aina kuingia. Itakuwa mate yangu kwamba kuunga matokeo kuwa mstari wa mtu binafsi mara moja. Hii ni inaweza kuwa na manufaa. Katika majadiliano hayo nitafanya mambo juu ya slides. Na hivyo wewe utakuwa na uwezo wa kufuata pamoja ama katika hapa, au kwa kuandika mafaili halisi na kisha utekelezaji wao. Lakini, kurejea huu kanuni, jambo lingine kwamba unaweza kuwa noticed-- vizuri, kuna mambo mawili ambayo waweza taarifa kuhusu vitalu haya. Kwanza, badala zaidi mundane, ni kwamba chatu hana semicolon trailing. Semicolons ni hiari kila mahali na wapole kila mahali. Unaweza kuongeza yao. Inaweza kufanya watu ambao kuandika Chatu kwa snicker hai saa wewe nyuma yako, kwa sababu wao siyo lazima. Wao ni mara nyingi ishara ya anashikiliwa zaidi kutoka C. wabunifu wa lugha kuhisi kuwa ni wazi zaidi kwa njia hii na kwamba siyo muhimu kwa kutangaza kila wakati wewe kumaliza line. Kitu kingine cha ajabu kuhusu n huu ni haina aina masharti. Moja ya vipande uchawi wa Python-- na mimi nina kwenda kumwita uchawi, lakini kuna sana sababu za kiufundi kwa nini works-- moja ya vipande uchawi wa chatu ni kwamba vigezo wanaweza kupanua au kuogopa vyenye data chochote aina ungependa unataka yao. Hivyo hii ni 10. Kama baadaye chini mimi ajili ya hii n 0.5, itachukua kwamba 0.5. Hakuna jambo kwamba ni int hapa na kuelea huko, kitu chochote ambayo inatumia n huu itakuwa, zaidi au chini, kuwa na uwezo wa chug pamoja kama anapata ama ya wale. Isipokuwa kuna baadhi ni za kweli sababu ni kwa nini hawawezi kutumia data aina hiyo n kwa sasa ina, ambapo kiwango kutakuwa na kupata wedged na kutupa makosa, na wale aina ya mambo. Lakini hapa, chatu kweli haina huduma ya kile ni kwamba mimi nina kwenda kwa fimbo katika hii adhabu, kama, unataka kuwa jambo hili? Jambo hili kwa kuwa? Yeah, ni aina ya kitu. Mimi itabidi fimbo yake katika mwisho. Ni utakuwa tatizo baadaye, ikiwa mtu ambaye anataka kutumia kufikia lengo hilo hawezi kushughulikia hilo. Hii ni moja ya kubwa tofauti kati ya chatu na C kwamba inafanya kuwa rahisi kuandika kubwa sana mipango C na inafanya kuwa rahisi kuandika ndogo sana chatu mpango. Kwa syntax siyo sana tofauti katika kile yake. Ni tofauti kidogo katika jinsi gani walionyesha. Hivyo hii ni sana, kile kinachoitwa Pythonic, njia ya kuandika hayo. kwa mstari katika mbalimbali (n), hii ni mbalimbali ya idadi kutoka 0 kwa n, umoja juu ya chini na ya kipekee juu. Hivyo ni kutoka 0 kwa N-1, ambayo ni nini hasa C kificho anafanya, isipokuwa ni rahisi sana kuangalia labda. Kuzuia husika ni si kuweka mbali na braces, badala ni kuweka mbali na indentation hii. Basi wote wa mistari haya ni nafasi nne juu ya upande wa kulia, au kama kuhusu tembo upana. Na hao ndio walio kwenda wauawe katika hii kwa. Kama mimi fujo up indentation juu ya hili na mimi kushinikiza kwamba magazeti nyuma indentation awali, kwamba magazeti kuondoka kwa kitanzi. Tofauti na C, ambapo hapa mimi kwa kweli haja ya hoja kwamba kufungwa mabao mawili kote. Hii ina maana kwamba huwezi kupata makosa kwamba kuruka nje saa wewe kwa sababu wewe kuweka brace katika mahali sahihi. Haina maana kwamba kupata makosa kwamba kuruka nje saa wewe kwa sababu wewe indented mstari sahihi. Hivyo inafanya indentations super makini. Hopefully walikuwa kuwa super makini na indentation yako anyway, na hivyo hii si kwamba zaidi ya mzigo. Lakini utawala wa msingi kwa chatu, na tutaweza kuwa wanandoa wa haya kwamba tutaweza kwenda kupitia kupitia kozi ya majadiliano, ni kujaribu syntax asili kabla ya kuangalia kitu chochote juu. Hivyo syntax hii, kwa idadi hii katika mbalimbali, ni tofauti sana katika suala la mtindo. Kura ya mambo katika Python tutaona kuchukua fomu hii. Na hivyo kama wewe kuja na kitu kipya kwamba kufikiri unapaswa kuwa na uwezo wa iterate juu ya hii, katika muundo huu, zamu nje pengine inasaidia muundo huo. Sisi siyo kwenda super kina katika sababu za kiufundi kwa nini hiyo ni kweli. Lakini ni muhimu kuwa na Intuition wakati wewe ni inakaribia mipango chatu, kwamba jambo hili ni kwenda tu kufanya kazi. Kujaribu. Boot juu amri Line Mkalimani, kuona kama ni kazi, kuendelea na mambo, kabla ya hata haja ya kufungua Google na kusema, nini syntax kwa Jambo hili hasa? Kura ya chatu ungeweza kugundua tu kwa kujaribu. Hii ikiwa ni hata zaidi kama C kisha fors ni. Kumbuka kwamba hakuna mabano. Mabano ni, tena, wapole lakini lazima. Kuna matumbo mwishoni kama kwa tanzi, na tena, vitalu jamaa ni indented badala ya kuweka mbali na braces. Kingine Hii ni katika awali Kiwango cha indentation, na muhimu kuzuia wake indented tena. Wale kazi hasa kama wanavyofanya katika C. Hii ni kweli sana sawa. Tena, magazeti hupoteza tabia moja mbali ya printf Wewe kupita baadhi ya masharti. Ni zinageuka masharti yanaweza ama kuwa alama mbali na quotes moja au quotes mbili. Hakuna tofauti, isipokuwa ndani ya kwamba ya quotes moja unaweza kutumia quotes mbili kwa kuachana, badala ya kuwa na kutoroka wote. Na ndani ya quotes mbili, wewe Unaweza kutumia quotes moja na kuachana bila ya kuwa na kutoroka kwao. Kama alitaka kuchanganya nao, unaweza hakika kuangalia juu online jinsi ya kufanya hivyo. Utagundua kuwa zaidi ya hapa, Nimekuwa kupita katika mwisho = jambo hili. Huu ni mfano wa hiari Hoja, ambayo ni moja ya mambo kuwa chatu inasaidia kwamba inafanya kuwa muhimu kabisa. Hivyo magazeti kweli ina mengi ya hoja, ambayo ni kawaida kuweka default yao thamani, lakini hapa nimekuwa aliamua kupuuza mtu mmoja aitwaye mwisho. Sababu kwamba nina kuipuuza kwa kamba tupu ni kwamba magazeti katika Python, na msingi, Prints nje mstari mpya baada ya jambo kwamba wewe aliiambia hiyo pia. Hivyo hash hii ni kweli kwenda magazeti nje hash katika mstari mpya. Na kama Sitaki hash magazeti nje mstari mpya baada ya hayo, basi mimi kusema wala magazeti moja. Lakini, hata hivyo, jambo moja la mwisho kwamba mpango huu ni kukosa kwamba mtu ana ni an ni pamoja na juu. Magazeti ni Motoni katika Python hivyo kimsingi kwamba hakuna kichwa au moduli kwamba unahitaji pamoja, ingawa kama alitaka ni pamoja na mambo mengine katika Python script, Napenda kufanya hivyo katika format-- sawa maneno ni kidogo tu tofauti. Mimi alieleza kuwa sisi hawana haja kuu hapa, kwa sababu chatu kuanza utekelezaji juu. Kama nilitaka wa kufuta huu katika kazi, mimi bila kufanya hivyo kama hii mimi kusema def jina kazi, hoja wanaweza kwenda katika hapa na tutaweza kuona baadhi ya wale baadaye, matumbo, na kisha tena, hii nzima kuweka mbali na jingo ni nini kazi kuzuia kwa kazi hiyo. Hivyo hii ni ufafanuzi ya kazi. Na kuna tamko, basi chini hapa, naweza tu kuwaita kazi. Na tena, mpango mkalimani, kuanzia juu, utaona hii ni ufafanuzi. Itakuwa si kutekeleza hii mpaka kupata hapa, na kisha ni kama, loo sasa umetumia hilo, mimi nadhani ni lazima nitafanya hivyo. Jambo hilo ni la kawaida sana kuona katika Python mafaili, hasa chatu mafaili kwamba ni iliyotolewa kwa umma na maendeleo by-- na maendeleo na iimarishwe, ni kitu cha aina hii. Hii ni basically-- hivyo kwa sababu Chatu, kuanza juu na kisha kutekeleza chini kwa chini, Mimi kama mimi tu alikuwa Mario walioitwa hapa, kisha wakati wowote mimi ni pamoja na faili hii katika faili jingine, kwa sababu nilitaka kutumia ni Mario kazi, kwamba faili wengine ingekuwa pia kuwa wito huu kwa Mario ndani yake. Na wakati mimi mbio faili kwamba, ingekuwa kuwaita Mario. Hivyo inawezekana kwamba mimi tu unataka kukimbia huu ikiwa nimepata kweli kunyongwa faili hili fulani. Na hivyo siwezi kufuta hii katika nahau kama hii, ambapo nasema, kama jina la utekelezaji huu mazingira ni kuu, kisha nataka kufanya mambo haya. Vinginevyo mtu mwingine anaweza use-- ni pamoja na function-- yangu faili yangu, na tu kupata upatikanaji wa kazi hizo bila ya kuwa na kuendesha mambo kuwa nataka kutekeleza katika faili hii. Hii ni mara ya pili, hiari lakini kawaida sana. Mambo hayo ni entirely-- ni sawa kati ya C na chatu, hakika katika 3. Nadhani katika 2, mgawanyo operator wakati mwingine anatoa nyuma ikifungwa wakati wewe upasuaji ints, na ama alitaka kuwa au wewe hakufanya hivyo. Lakini plus, bala, na mara kazi hasa kama wewe d kutarajia, ila juu ya aina kidogo zaidi. Hivyo unaweza kuzidisha ikifungwa na ints, na wale aina ya mambo. kuweka kazi sawa. Unaweza kutumia ishara mbili sawa. inequals-- mkubwa kuliko, chini kuliko, aina hii ya things-- kuwa na maana kwamba wewe ni ukoo na wao. Ambapo C anatumia waendeshaji hao, Chatu anatumia kidogo zaidi Kiingereza someka ndio. Hivyo badala ya mbili, ampersands, wewe halisi aina ya neno "na", "au," au "si." Kama katika if-- yako katika yako kauli masharti, tuliona mapema kwamba syntax hii katika C sambamba na syntax hii katika Python. Na si kuna mengi tofauti hapo, ila kwa kidogo ya uandishi kuzunguka pande zote. Tena, ambapo C ingekuwa mwingine kama, chatu anatumia elif, lakini hizi ni zaidi kiwango cha uso mabadiliko. Iteration kama hii ni mara nyingi Imeandikwa katika idiom hii katika Python. Unaweza kutengeneza aina hii ya Jambo kwa kitanzi wakati juu ya nje kama alitaka, lakini wewe hakika si lazima. Na tena, kama alitaka magazeti nje vipengele katika safu ya unaweza kufanya hivyo kwa njia hii. Moja ya mambo ya kujifurahisha kuhusu chatu ingawa, ni kwamba huna haja kutumia dhana hii, na unaweza kutumia kidogo zaidi ya kifahari moja. Unaweza kusema kwa ary katika. Hivyo badala ya kwenda hapa na bomba zaidi fahirisi, na kisha kuunganisha nje mambo ya mtu binafsi, kumweleza kwa kweli tu kukimbia juu ya mambo wenyewe. Na kisha chochote ni kufanya ndani ya wanaweza kufanya kazi moja kwa moja juu ya mambo, ambayo ni pretty furaha. Na tutaweza see-- tutaweza kutumia kwamba idiom tena na tena kama sisi kutembea kwa njia ya kificho. Hii ni, tena, mfano wa kitu ambacho mimi itabidi piga chatu uchawi, ingawa kuna sababu za kiufundi sana kwa nini ni kazi. Na kuna mambo ya kiufundi kwamba haja ya kuwa kweli kuhusu safu ili kwa hii kazi nyuma ya pazia. Suala hapa ni kwamba aina ya ambayo wewe d kutarajia hii kazi wamekuwa na hii kutekelezwa kwa wewe katika kujengwa katika lugha. Kitu kingine kwamba itakuwa nzuri kama hii kazi katika kila lugha, lakini kuna baadhi ya sababu kwa nini hawawezi, magazeti kamba huu mara idadi hii. Zamu nje katika Python, hii gani hasa nini Ningependa, ambayo ni tu kujifurahisha, na maana yake ni kwamba tunaweza kweli kupunguza mpango huu, tena mario.c. Badala ya iterating mengi, tunaweza tu kusema, nataka baadhi idadi ya nafasi, Nataka idadi ya hashes, na baadhi hashes mwishoni. Na tena, sisi kutumia muundo huu. Hapa, sisi ni kupita katika kutofautiana kwa njia hii. Tena, hatuna haja ya kusema ni aina gani ya kutofautiana ni, na wakati tu tutaweza kupata makosa ni wakati kukimbia. Wakati mtu anajaribu kupita kitu katika, kutakuwa na kuja katika kazi nzuri tu. Kama sisi kabari hapa kwa sababu hii si Jambo kwamba unaweza kujenga safu juu, Mimi itabidi kupata Runtime kosa pale, na mimi itabidi Debug kwa njia hiyo. Lakini wakati huo huo, sina kuwa makini sana kuhusu nini anapata kupita katika, hivyo muda mrefu kama katika halisi utekelezaji yote kazi cleanly sana. Mimi naweza hata kufanya hii kidogo safi kutumia hasa kujengwa katika kazi juu ya masharti, ambayo ni Right Justify. Hii ni kazi muhimu amelala karibu maktaba. Ni katika nyaraka kama wewe kwenda na kuangalia kwa ajili yake. Na nasema, vizuri mimi nina kwenda na kamba hii, baadhi ya idadi ya hashes, na Ningependa haki kuhalalisha it-- pedi ni nje na nafasi ya kuwa urefu huu. Tena, hii ni katika nyaraka, ambayo huleta us-- Mimi itabidi kweli click kupitia these-- ambayo inatuleta utawala wetu wa pili kwa Python-- kiwango maktaba mbinu kazi ni rafiki yako. Na ni mara nyingi wakati thamani yako kwenda kuangalia kwa Nashangaa kama kuna jambo kwamba tu hana huu. Kuna pengine. Kama Ningependa kwa pedi nje kamba, kama wewe d kama kuchukua nyuma nusu ya kamba, kama wewe d kama kutafuta njia kamba, ikiwa Ningependa smash michache ya mambo pamoja na kamba kwa koma baina yao, kuna kiwango maktaba kazi kwa kufanya hivyo. Na inafanya maisha yako rahisi kama wewe kuzitumia badala ya rolling nje kila kitu juu yako mwenyewe katika mistari mitano ya kificho hapa, mistari mitano ya kificho hapa. Kwamba kweli kuanza saa kuongeza hadi muda muafaka. Moja ya mambo ya kuvutia kuhusu jinsi hii anapata kuitwa. Utagundua kwamba kuna nukta kitu ni. Mimi na baadhi ya kitu upande wa kushoto, na kisha mimi kuitwa nukta kazi. Hii ni moja ya dhana kwamba chatu anatumia kwa attaching mbinu za vitu. Tutaweza majadiliano juu ya jambo hili ni kwa ufupi sana mwishoni, lakini tunajua kwamba tunaweza wote kazi juu ya mambo kwa kuchukua kwamba kitu akisema nukta chochote, au kwa kupiga kazi ambayo inachukua kwamba kitu na baadhi hoja nyingine. Basi hizi ni kwamba njia zote mbili kufanya mambo katika Python. Na kama fulani utendaji huo unatekelezwa kwa mtindo huu au huu mtindo ni kitu ambacho lazima atafute mpaka kupata hutegemea ambayo moja ni uwezekano wa kuanguka katika. Kuna zaidi au chini ya kushikamana falsafa nyuma chatu kwamba kunyonya zaidi kwa kuandika mengi ndani yake. Wakati fulani, ambayo mmoja wa haya kitu utatekelezwa kama inakuwa asili. Kwa sasa, ni kitu wewe kujifunza kama wewe kufikiri kila kitu binafsi. Hivyo kiwango cha maktaba kazi ni rafiki yako, na wao basi wewe kuandika mambo ambayo kuchukua nafasi hii kiasi kweli muda mfupi, kweli elegantly. Na hii ni kweli pengine zaidi legible, ningesema, kuliko mpango C kule. Bila kutaja ukweli kwamba ni hivyo short unaweza fit tembo nzima katika nafasi hiyo tumekuwa kuokolewa. Kitu kingine, hii ni utekelezaji ya Mario hiyo ni nukta C, ambayo nadhani ni fupi unaweza kupata hiyo. Haina kupata int, lakini ni ngumu codes thamani ya 10 njia ile ile kwamba hii mtu gani. Zinageuka kuwa hii moja Clocks katika saa Wahusika 84, ambapo chatu ni 64. Na hii ni kubwa zaidi someka kuliko huu takataka hapa. Hivyo chatu ni ufanisi zaidi katika nafasi. Ni kidogo kidogo ufanisi katika muda, lakini si kwa kiasi. Orodha ni jambo muhimu katika Python. Hatujaona yao, lakini kazi kiasi kama arrays kufanya katika C. Hivyo hapa, unaweza kutangaza yao, unaweza kupita yao katika jambo. Sasa viwanja ana safu ya mambo haya. Tena, sisi si alitangaza kama aina, lakini kama sisi milele kujaribu kuitumia, chochote ambacho wewe d kutarajia kwa kazi ya safu ya integers ni kwenda kufanya kazi kwenye safu ya integers. Hii Ni jambo ambalo wewe kabisa hawezi kufanya katika C, kwa sababu kumbukumbu ni hivyo mikono juu, lakini ni rahisi sana kufanya katika Python. Kama nataka safu yangu kuwa kubwa, siwezi append kipengele nalo na ni faini. Nini kinaendelea nyuma ya pazia? Mkalimani kwenda nje na kupata baadhi ya kumbukumbu, na labda kutakuwa na kupata kidogo ya kumbukumbu ya ziada, hivyo mimi si hivyo sina kwa realloc kila wakati. Lakini ni kiasi gani na zaidi kumbukumbu gani haja? Hii si maamuzi kwamba una kufanya, hizi ni maamuzi ambayo mkalimani ni kwenda kufanya. Hapa tunaona mbalimbali Unaweza kuchukua hoja mbili, lakini bado kwenda kuwa umoja ya juu hivyo sisi kuongeza 1 huko. Hii ni namna ya neno, ambayo ni hata zaidi njia wajanja kuandika mambo kama haya. Ni wito orodha ufahamu, na hapa ni nini sisi ni kusema ni Ningependa kuweka katika i mraba kwa kila thamani ya i katika mbalimbali huu. Jambo hili juu ya haki inaweza kuwa mwingine safu, na jambo hili upande wa kushoto kuwa kazi yoyote ile ambayo ingeweza kuchukua katika i kama kutofautiana na kunipa nje baadhi matokeo. Nini mimi kwenda kufanya ni, Mimi nina kwenda kujenga safu hiyo ni mambo yote haya kwa kila thamani katika mbalimbali huu. Na hii ni super kifahari, super mfupi, na ni wazi kabisa nini maana yake. Hii ni moja ya things-- hii ni mara ya pili, moja of-- nembo sana ya sababu ya kuwa watu kama chatu. Kama wewe kama programu kama hii, basi chatu ni lugha unaweza kama kujifunza. Na tena, kuna kiufundi sababu kwa nini hii kazi. Lakini mbali kama sisi ni wasiwasi, sisi zaidi au chini hawajali. Hivyo kama unataka magazeti nje orodha, baadhi ya Nahau huo ni muhimu. Kwa i katika mbalimbali huu, tunaweza ripoti kwa mambo yote na kisha magazeti wote nje. Na wewe utakuwa kuona Len hapa. Kama wameweza milele alitaka kupata urefu wa safu, hiyo ni rahisi sana katika Python, ni vigumu sana katika C. Hii itakuwa magazeti nje hasa nini d kutarajia kwa. Tunaweza pia, kama tumeona kabla, iterate juu ya vipengele katika safu moja kwa moja, na kisha tu majadiliano juu ya nao, kuliko kuwa na ripoti nyuma katika safu ya kila wakati. Na hili ni jambo kwamba unaweza kufanya. Hivyo katika C, kama wewe kuuliza kwa kitu kama hii, magazeti kusema, hiyo ni safu ya integers. Hiyo ni dhahiri si kamba, siwezi magazeti hayo. Chatu zaidi au chini haina huduma. Ni kama, kuna njia ya kuwa mimi inaweza kugeuka hii katika kwa kamba? Naam, mimi itabidi kufanya hivyo. Na hivyo mimi itabidi tu magazeti kwamba nje. Hii ina maana kwamba unaweza kufanya mambo haya like-- ni zaidi ya sehemu ngumu ya mchezo wa kumi na tano, imeandikwa sana kwa ufupi katika Python. Utaona kwamba kuna kidogo of-- hapa Nimekuwa kutupwa integer kwa kamba, na mimi kuwa kufanya hivyo manually. Na mimi nina kwenda kuongeza kwa kamba nyingine, au vinginevyo chatu anapata kuchanganyikiwa. Lakini kama wakati uko kuongeza kamba kwa integer, am nadhani ya kupata integer nyuma au kamba nyuma? Lakini tena, kama wewe tu piga str juu ya jambo, na ni inaweza uwezekano wowote katika dunia kuwa waongofu katika kamba, pengine itakuwa waongofu katika kamba. Hapa, tunaona matumizi ya Furushi orodha ya ufahamu upande wa kushoto, baadhi Indexing, ambayo ni hasa kama wewe d kuwa kutumika yake, na baadhi uchapishaji nje ya mambo. Baadhi tena, tumekuwa inavyoelezwa kazi na tutaweza kuwaita chini katika kuu wakati sisi kweli kupata faili. kurudi kazi hasa kama wewe d kutarajia kutoka kufanya kazi na C. Kupata, tunaweza kuanzisha mambo kama Haya hapa ni orodha ya ufahamu kuna zoezi kwa kutofautiana, na tunaweza kweli kufanya hivyo hata rahisi. Hatuna haja ya kuandika utafutaji, kwa sababu kujengwa katika lugha ni kama jambo hili ni katika safu hii. Kurudi kweli, pengine kurudi uongo. Hivyo hiyo ni ukamilifu wa kupata. Ukamilifu wa aina inahusisha wito aina, ambayo is-- kuna utekelezaji ya hii kujengwa katika maktaba fulani C. Kama Ningependa huu aina ya nyuma, wewe Unaweza kupuuza hii hiari Hoja kwa kinyume na kweli. Na kama Ningependa kutatua juu ya masharti, hiyo ni kujengwa katika kama vile. Hivyo hii si kusema hivi ni mambo ambayo unahitaji kufanya kila siku, lakini wazo ni kwamba hii ni falsafa ya chatu, kwamba mambo haya yote ambayo wewe d aina ya kutaka kufanya ni kujengwa katika. Na kazi zaidi ya kiwango, hivyo aina, urefu, chochote, kusaidia pembejeo zaidi kifikra busara. Wewe wito Len juu ya safu hiyo njia wito Len juu ya kamba. Wewe multiply-- wewe kutatua masharti njia hiyo hiyo aina arrays. Wengi kazi ya kiwango kwamba watu kujenga, na zaidi ya tatu maktaba kwamba watu kujenga, kwa sababu wao ni emulating mpango wa maktaba standard, anaweza kuitwa juu ya kila kitu ambayo uko kama, kwa nini haina hii tu kazi, katika C. Zaidi au chini, itakuwa kazi katika Python kwa sababu watu kazi nyuma ya takwimu nini jambo ni na kisha kazi ipasavyo juu yake. Hivyo tena, historia ya kiufundi, lakini hufanya maisha yetu rahisi kama programmers. Hivyo hapa ni faili I / O. faili I / O ina kura ya mambo madogo kwamba kufanya hivyo ni ngumu, na hivyo kuna rasilimali online, lakini kwa kifupi, wewe piga wazi kwenye faili la jina na aina fulani. Hivyo hiyo ni kusoma, kusoma na kuandika, kuandika au append. Kusoma idadi fulani ya wahusika nje na magazeti hayo, utasikia kupata Hello! I mean, kama faili hili alikuwa Hello! Katika barua hiyo, piga kusoma, na nini itabidi kupata nyuma ni kamba ambayo ina kila ya mapumziko ya safu, au yote ya mapumziko ya faili. Kama wito kusoma tena, uko mwishoni mwa faili, na hivyo huwezi kupata chochote na hivyo itabidi karibu. Tena, hii ni .close badala ya faili karibu, kama itakuwa katika C. Hii ni zaidi au chini kwa sababu f ni Jambo, na Ningependa kwa f kwa karibu. Lakini faili msingi I / O ni si hasa ngumu. Tena, kama Ningependa kufungua faili, ikiwa Ningependa kusoma mstari fulani, unaweza kupata nje ya fulani line-- kuna kujengwa-ins kwa ajili hiyo. Kama Ningependa kuandika Jambo, unaweza kuandika hii. Kama Ningependa kuandika binafsi kuumwa, unaweza kuandika hizo. Na kama Ningependa iterate juu ya mistari ya faili mmoja mmoja, kama tulivyofanya katika kipande kutoka Wiki chache zilizopita, unaweza kufanya hivyo kwa. Tena, vitu zaidi kwamba wewe d kama kuwa na uwezo wa iterate juu ya msaada iterating juu yao. Katika chatu, faili ni labda jambo ambalo Ningependa iterate juu ya mstari kwa mstari. Kama ilivyokuwa kamusi ya maneno na mimi nilikuwa kujaribu kupata wale mtu binafsi Maneno nje, basi, ndani ya kitanzi hii, mstari ni kwenda kuwa kila neno kwa upande na hii kinaenda wauawe kwa kila mstari katika faili mpaka mwisho wa faili. Na tena, kama mimi kuchapishwa kila mstari, mistari kuja na mistari mpya, hivyo mimi nina kuweka mwisho nyuma kwa jambo kama hili. Kisha Ningependa kupata yaliyomo ya faili yangu. Jambo la pili ambayo inafanya kazi katika baadhi ya njia kama orodha, na katika baadhi ya njia kama kitu kikubwa nguvu zaidi, ni Mkwawa, ambayo ni kweli baridi kutumia lakini kimsingi hash meza katika kujificha. Wewe kujenga moja kwa kutumia hasa wahusika wawili, ambao ni wa kushangaza kama wewe walijaribu kutekeleza hash meza kwa tatizo seti yako, unajua maumivu kiasi kwamba wanaweza kuwa. Lakini watu wamefanya , na kufanya hivyo vizuri, kwamba huna kwa wasiwasi kuhusu hilo tena. Basi unaweza kuingiza mambo ya mtu binafsi. Hash tables-- au Mkwawa si hasa huduma ya kile wewe ni hifadhi ndani yao. Hivyo kama baadhi viingilio ni idadi, na baadhi entries ni orodha, kama baadhi viingilio ni Mkwawa mengine, na baadhi entries ni masharti, Chatu hana huduma nyingi. Tena, kama wewe kwenda ndani yake wanatarajia kamba na nini kupata nyuma ni safu, hiyo ni tatizo lako. Na labda ni kosa la ye yote walidhani ilikuwa kuweka mambo katika kamusi, labda hiyo ilikuwa yenu. Kama hiyo ilikuwa mtu mwingine, pengine walikuwa vizuri tulipokuwa kuhusu nini kinachoendelea katika kamusi na hakuwa na kuondoka pitfalls yoyote kwa wewe kuanguka katika. Lakini kazi ya kiwango mapenzi kukupa nyuma mambo vizuri tabia. Hivyo wanasema anarudi hii kuunga kamusi ya masharti, kisha kila kitu wewe ni kwenda kutoka nje ya ni kamba. Kama wewe kufanya baadhi ya hii na safari ninyi mahakamani, vizuri, hiyo inaweza kuwa ni juu yenu. Chatu hakika anatoa kutosha kamba na hutegemea mwenyewe, kama Ningependa. Sasa tunaweza magazeti nje ya mtu binafsi mambo haya na anarudi hii nini hasa d kutarajia. Nini hasa d kutarajia, mimi nadhani, ni maneno kwamba mimi nina kutumia mengi, lakini hiyo ni zaidi au chini jinsi chatu kazi. Ukiuliza kwa jambo ambalo si hivyo, chatu kutupa nje makosa na itakuwa kuacha wewe nje ya chochote mpango ungekuwa katika. Ni itabidi kweli magazeti nje Maelezo zaidi ya hapo, kutakuwa na uhakika you-- ni itabidi kuongeza line, na hivyo. Na, tena, labda tunataka iterate juu Mkwawa na kupata mambo yote ndani yake. Hapa sisi ni iterating juu mambo mawili kwa wakati mmoja. Na hivyo tutaweza kufanya hivyo kwa ufunguo, thamani, lakini kisha magazeti nje yote haya. Na kama sisi alitaka cast-- kama sisi kweli mbio hivyo, tunataka kuwa baadhi ya matatizo kwa sababu on-- wakati sisi aliingia pamoja na Daudi, haikuweza add-- kama hatukuwa kuwatupia kamba ya kwanza, sisi hakuweza kuongeza kwamba safu ya masharti kwenye kamba. Lakini kama sisi kuwatupia kamba, sisi kupata kitu kama hii, ambayo ni labda nini tunatarajia kusoma. Na hii ni speller. Sisi tu kusoma katika mambo. Ili tuweze kusoma katika maneno ya mtu binafsi kama mistari. Sisi Night mbali mwisho Jambo, hivyo matumbo bala 1 chomps mbali jambo la mwisho kwamba we-- tabia mwisho wa kamba. Tutaweza kusema. OK, kila mmoja wa wale anapata kuingizwa katika kamusi hii, ramani ya thamani ya 1. Sisi si hasa huduma kuhusu kwamba mmoja, lakini ni tu pale kusema, oh vizuri, jambo hili mimi itabidi kuweka katika kamusi. Kwa sababu baadaye nini tuko kwenda kufanya ni tuko kwenda kusema, vizuri, ikiwa ni katika kamusi hata kidogo. Tena, kuangalia hii kwa taarifa ni juu ya uendeshaji kutumia tofauti kabisa algorithm kuliko mapenzi katika orodha, lakini sisi kuiita njia hiyo hiyo, ambayo ni baadhi ya kwamba chatu sukari mipako mambo ili wao uko rahisi kutumia. Na tena, tumeona mambo kama haya kabla. Hii ni kimsingi kupata, au ni hasa syntax sawa kama kupata, lakini ni kazi juu ya muundo tofauti kabisa. Na sisi si hasa huduma. Basi hizo mambo ambayo walitakiwa kutekeleza kwa speller. Katika kiwango hiki, sisi ni kwenda kupata zaidi au chini wote wa psets kufanyika. Watazamaji: Hivyo kwamba kimsingi tu anakuja nyuma kama kimakosa yameandikwa kama hana mechi kitu katika kamusi? ROSS RHEINGANS-YOO: Ndiyo, ndiyo. Na hivyo, hii ni kukabiliana na hali ya tatizo kuweka ambayo anauliza kufanya hasa kwamba. Watazamaji: Kwa nini ni mstari bala 1 huko? ROSS RHEINGANS-YOO: Kwa hiyo wakati wewe ni iterating zaidi ya faili kuomba na mistari, mistari kuja na mpya mstari tabia mwishoni wa hili bala 1 ni kwa duka wale mbali tu. Na hii ni hasa rahisi njia ya Indexing katika mambo. Hivyo kama una kamba, na Ningependa, vizuri mimi nina kwenda kuanza saa tatu tabia na mimi nina kwenda hadi mwisho. 3 matumbo kufanya hivyo kwa ajili yenu. Kama wewe ni kama, nataka kuanza saa mwanzo na kwenda mwisho bala 1 tabia, matumbo bala 1. Na kama alitaka kwenda kutoka tatu minus kwanza, basi d kusema 3 bala 1. Zaidi ya hayo, kama unataka ripoti ndani ya vitu kuhesabu kutoka nyuma, wewe tu ripoti katika na namba bala. Na kwa sababu, ambapo C ingekuwa kulipuka au labda kulisha wewe kumbukumbu wengine hawakuwa na upatikanaji wa, kusikia unaweza kusema bala 1 ina maana mwisho lakini 1 tabia katika kamba. Modules ni version-- ni milinganisho kwa maktaba katika C na ni muhimu kwa ajili ya mambo mengi. Mambo mengi wewe d kama kwa kufanya katika Python, badala rahisi matumizi mabaya ya vigezo, unataka kunasa katika maktaba kubwa na kubwa interfaces na zaidi uwezo kwa ajili ya mazungumzo na sehemu nyingine za dunia. sys ni mmoja wa wale pamoja na kundi la zana ambayo ni muhimu kwa ajili ya mazungumzo na mfumo wenyewe na kuagiza kama kuagiza sys. Kuna nyaraka zaidi kutoka kwamba, ambayo unaweza kwenda hapa, au unaweza kupata kwenye Google na googling chatu sys. Wewe aina katika kuingia. Kiungo kwanza ni kwenda kuwa nyaraka katika Python 2, kiungo cha pili ni kwenda kuwa nyaraka chatu 3. Na kama sisi aliandika nje faili kwamba inaonekana kama hii Kama hasa, tuko kuangalia kazi ya hoja mstari amri, kama sisi kujifunza kufanya sana mapema katika darasa hili. Hii si vigumu. Unaweza kupata nje argv, ambayo ni moja ya mambo hayo ambayo ni kutekelezwa na sys. Siyo kujengwa katika msingi mfuko, lakini tena, wewe Unaweza kupanua kwa kuagiza kwamba utendaji kutoka sys. Itabidi kuiita sys. chochote. Hapa kuna argv. Kuna kweli hakuna argc katika sys, kwa sababu wewe Unaweza kupata urahisi hivyo kwa kupiga len. Sisi basi kuchapishwa kwamba nje, basi sisi mbio juu ya wastaafu wetu echo-args.py. Sisi kupata nyuma safu, ambayo ni hoja hii kwanza. Tena, hii ni argv 0, ambayo ni jina la kitu kwamba got kuitwa. Kama sisi kuitwa ni pamoja na ziada hoja, tunatarajia kupata wale nyuma. Hii ni njia mojawapo ya kupata hoja mstari amri. Kama unataka bendera ambapo kugeuka mambo fulani juu ya au override chaguo-msingi hasa argparse ni rafiki yako. Na tena unakuta online katika chatu argparse katika Google. Kuna michache ya shirika modules kwamba wewe mwenyewe kupata kutumia na tena, kama wewe kutumia muda wowote ya lugha hii kuagiza jsons kwa kusoma ndani na nje ya json mafaili, si kuwa ngumu. Wewe kufungua faili, wewe kuitwa json.load kwenye faili la kuwa na kupata nyuma kitu. Ni kwamba jambo gani? Ni json kitu. Ambapo kwamba json ina safu, chatu ana arrays. Ambapo kwamba json ina arrays associative, chatu ya Mkwawa, masharti, na idadi, na kadhalika. Unataka dampo kwamba nje, kufungua faili mpya, wewe piga dampo, na mizigo na madampo kwa kwenda ndani na nje ya masharti. Vile vile, kachumbari anapata kuitwa katika kimsingi interface huo. Ni kidogo muhimu zaidi ikiwa wewe ni utupaji chatu vitu. Hivyo kama wameweza milele alitaka kuokoa toleo la hali ya sasa ya kutofautiana kwa siku zijazo kukimbia ya mpango wako, kachumbari ni chatu ya maktaba kwa kufanya hivyo. Kama una aina yoyote ya kutofautiana ambazo zinaweza kuandikwa nje kwa maneno kama na wahusika na ka kama kamusi hii, tunaweza kuandika, sisi inaweza kuandika ni chini kama kama json kitu, ambayo ilikuwa halisi hizi wahusika. Na basi itakuwa rahisi sana kwa binadamu kufungua hiyo up-- kufungua na kuisoma. Kama hatukuwa hasa huduma kuhusu binadamu kuisoma, tunaweza kufunga hata kwa ufanisi zaidi katika aina ambazo zinaweza baadaye unpacked au ambazo zinaweza baadaye kuwa umechangiwa. Na hii anaokoa 80% ya nafasi kwamba vitu yako nguvu kuchukua kama wewe aliandika yao nje longhand. Wewe piga kachumbari sana sawa way-- dampo, mzigo, na kisha kupata vitu yako nyuma. Hivyo kama wewe ni kuandika sana mipango ya muda chatu kwamba wanataka kuokoa hali, na kisha kusoma kuwarejesha baadaye, mambo kama haya ni rafiki yako. Kwamba unaweza sana urahisi dampo yao kama json. Wengi chatu vitu Unaweza dampo nje json kama kuna matumaini yoyote kwamba kimuundo wangeweza kuwa kuwakilishwa kwa njia hiyo. Hizi ni ncha ya barafu juu ya modules ambayo ni muhimu. Hivyo sys, os, multiprocessing, ni aina ya workhorses msingi kwa mambo tunahitaji kushirikiana na mfumo wa faili os., kama os.isfile, os.isdirectory, os.makefile, haya ni rafiki yako. Kama unataka kiutendaji na hasa aina ya faili, json, kachumbari, csv. Kama unataka kiutendaji na mtandao kurasa, urllib kwa ajili ya kupata http kurasa. bs4-- BeautifulSoup-- ni parser ajabu kwa html. Wewe kuendesha kwenye html na wewe kupata hii Furushi safu kitu sasa, ambayo unaweza traverse zaidi Lookin, na kama kuangalia tu kwa ikiwa, ni, katika, ambayo ni ya ajabu. Kuna kundi la fedha kwa running-- kwa ajili ya kufanya hasa mambo mathy. Hivyo kama unataka kuzidisha, Geuza, kubadilisha matrices, numpy hutumiwa na watu wote duniani kote kwa ajili hiyo. scipy ni hata muhimu zaidi zana katika upande huo. sklearn-- kujifunza mashine, usindikaji wa asili ya lugha, super mambo muhimu, anapata kutekelezwa katika Python wakati wote. Na tena, inachukua kidogo tena kwa write-- pole, inachukua kidogo tena kukimbia, lakini sababu kwamba wahandisi halisi huwa matumizi chatu ni kwa sababu wewe huwa na kuwa imefungwa kwenye wewe kuandika kanuni, badala kuliko kompyuta yako mbio kificho. Hivyo kama wewe ni kwenda kuandika mpango, ambayo kura ya watu wengine ni kwenda kutumia milele, kama Linux, wewe Huenda kuandika ni katika C. Kama ungekuwa kwenda kuandika injini hesabu, unaweza kuandika katika Python kama wewe unahitajika mabadiliko hayo kila baada ya miezi michache. Baadhi ya watu bila kuandika katika C kwa sababu wao ni kama hiyo. Hivyo tumeona kuagiza sys kama njia ya kupata mambo ya kupata moduli katika mpango wako. Unaweza pia kuagiza kama jina la utani, kama Ningependa. Tena multiprocessing ni maumivu kwa aina nje kila wakati, hivyo kuagiza kama Mbunge na kisha wakati wowote matumizi yake katika mpango, wewe itabidi kusema mp.process, au kitu gani wewe. Kama Ningependa kuagiza tu jambo moja, hivyo urllib ina kitu kinachoitwa ombi, hivyo unaweza tu kuagiza kwamba. Baadaye, huwezi waomba kama urllib.request, lakini tu kama ombi peke yake. Na unaweza kuagiza kila kitu kutoka moduli kama Ningependa. Hii ni mara kwa mara si nzuri idea-- hii kwa kawaida si wazo nzuri, kwa kweli. Kwa sababu wewe very-- kwa sababu kama kitu katika moduli ambayo ina jina kwamba alitaka kutumia mahali pengine katika mpango wako, huwezi. Na si mara zote wazi kwamba hiyo kesi. Ili kuhakikisha kuwa nini walikuwa kufanya alikuwa salama, unahitaji kufungua moduli na kuona yote majina kwamba kuishia katika there-- yote ya kazi, wote wa vigezo wanaoishi katika moduli kwamba, kwa sababu wewe ni kuleta yote ya yao katika namespace lako. Hivyo watu kufanya hivyo. Ni kwa ujumla ilipendekeza kwamba huna kufanya hivyo. Lakini watu kufanya yote haya wakati kwa sababu wao ni wavivu na hawataki aina nje Mbunge. kitu chochote, milele. Majadiliano haya yote kuhusu modules kuniletea karibu na majadiliano short juu ya jinsi gani kuandaa programu katika Python. Hatua ya kwanza ni kuangalia kuona kama mtu mwingine tayari amefanya jambo, au amefanya 90% ya jambo. Nafasi ni wao pengine, na wewe anatakiwa kwenda kupata kitu zao na kukimbia huo. Au kuandika kanga pembezoni kuitumia kwa madhumuni yako. Ni tu baada ya kuwa ana alishindwa kwamba wewe d kisha kwenda juu na write-- kuanza kufikiria juu ya jinsi gani kuweka jambo hili kwa pamoja. Kuna kura ya mambo huko nje, na kwamba moja ya muhimu sana mambo kuhusu chatu. Kama lugha ni kifahari, lugha Ni rahisi kutumia, lakini pia kwa sababu hivyo ni kifahari na rahisi kutumia, watu wamekuwa wakitumia hayo kwa muda mrefu na kuna mengi ya mambo huko nje kwamba unaweza kuunganisha kwa ajili ya matumizi yako mwenyewe. Hivyo utawala wa mwisho wa chatu ni, mtu mwingine tayari pengine imeandikwa moduli kwa kuwa, mtu mwingine tayari pengine imeandikwa maktaba kwa ajili hiyo. Kabla ya kujaribu kufanya kitu, angalia ili kuona kama imekuwa ni kutekelezwa. Siyo kwamba bidii. Wote wa modules kwamba mimi kuweka kabla, na labda isipokuwa moja, kuja kabla ya imewekwa katika kila kiwango cha chatu ufungaji. Na hivyo kwa mwito wa kuagiza chochote, wewe na yote hayo utendaji fingertips. Mwanzo wa kufuta hii majadiliano, kuna mambo machache kwamba nimepata kushoto kama masanduku nyeusi na aina ya glossed juu, na kuna nyeupe chache uongo kwamba nimekuwa aliiambia kuwa ni kwa ajili ya uaminifu, Mimi itabidi angalau hatua hapa, hata kama mimi si kwenda super kina katika wote na maelezo yao ya kiufundi. Mambo mengi kwamba nimepata aitwaye uchawi ni nini watu wengine kuita kitu Programu oriented. Hivyo kuna kura ya things-- hivyo vigezo ni mara nyingi sana si ka rahisi kukaa katika, kumbukumbu, lakini ni ngumu sana vitu mbalimbali vyenye ndani hali kuhusu kazi na kura vigezo ya siri, kura ya utendaji siri, ambayo inakuwezesha kurejea kwao katika masharti, ambayo inakuwezesha iterate juu yao. Na kama wewe ni writing-- na sababu ya kuwa wao wote wa utendaji hii tajiri ni kwa sababu people-- wasanifu wa language-- wamekwenda kupitia na kwa kila kiwango cha kitu, kuweka katika utendaji kusema hii ni jinsi hii ni jinsi hii ni kwenda kufanya kazi kama mtu anataka iterate juu yake. Hivyo kila kitu ambacho mtu anaweza uwezekano wanataka iterate juu, ina mantiki yaliyoandikwa katika manually juu ya jinsi uko zinatakiwa iterate juu ya kwamba kitu. Kila kitu kwamba unaweza uwezekano wanataka kutupwa kwenye kamba ina mantiki maandishi. Hii ni kazi ambayo wewe piga kama unataka dampo hii nje kwa kamba. Hii ni kwa nini unaweza piga len juu ya mambo, hii Hii ndiyo sababu unaweza kupiga kwa katika, hii ni nini unaweza kupiga ikiwa katika juu ya kila kitu kwamba wewe d wanataka, kwa sababu wale wote ni kufanya pamoja nao, kiufundi know-jinsi ya kufanya hivyo. Hili ni jambo ambalo mimi nina super si kwenda katika. Lakini kwa kuwa jambo katika orodha ni subtly tofauti na C style kwa tanzi, na unaweza kusoma yote juu kwamba juu ya biashara kama wewe ni nia. Kuna upande wa giza kwa wote ya hii, kwamba nilivyoeleza, hivyo kuna mambo mawili. Kwanza ni kwamba kitu hicho oriented Programu anaongeza mengi ya uendeshaji kwa mambo random, hivyo kuishia kwa kutumia kumbukumbu mengi zaidi; wewe kuishia kutumia zaidi kidogo muda zaidi kuliko wewe ungekuwa vinginevyo. Other-- lakini zaidi insidious giza upande wa hii ni, kama mambo kitendo tu kama unataka yao bila wewe kuwa na kufikiri super ngumu kuhusu kama hii inapaswa kuwa int au kama kuna haja ya kuwa kuelea, inaweza kuwa kwamba zaidi ya hapa wewe kuzalisha int lakini hapa wewe kufikiri lakini wao itabidi always-- pole, inaweza kuwa kwamba hapa wewe kuzalisha kuelea, lakini wakati kupata sehemu ya pili ya mpango wako, wewe ni kufikiri, oh vizuri, lakini wao itabidi daima kupita kwangu int. Na kama hawana, inawezekana kwamba wedged mahali fulani, kama wewe kujaribu kutumia kwamba kwa ripoti ndani ya safu, au kuwa na nini. Hivyo moja ya kweli mambo muhimu kuhusu C ni majeshi ya wewe kufikiri kweli ngumu kabla ya kufanya any-- kabla kuleta kutofautiana yoyote kuwepo, kama yale ni aina ya kutofautiana hii. Na itakuja kuwa aina hiyo kwa wakati wote. Hii si kweli Chatu, na kwa kweli, wewe can-- kama wewe ni tu aina ya kwenda na sikio, na kufanya maamuzi baadhi moja ya njia katika eneo moja, na baadhi ya maamuzi moja njia katika sehemu nyingine bila kuweka mambo nyuma ya kutosha pazia katika sehemu nyingine kukamata vitu vizuri, wanaweza kupata makosa ya baadhi ya ajabu sana. Na mpango unaweza kuweka mbio kwa muda mrefu sana, kwa sababu ni kufanya kazi nyingi za kusema, vizuri Jambo hili linaweza kufanya kazi kwa njia hii, hivyo mimi nina kwenda kukimbia kwa njia hiyo. Na kwa kweli, ukweli kwamba inasukuma mbele kupitia kura ya makosa madogo maana yake ni kwamba, mara nyingi wakati kosa ni kweli mbaya na huna kweli wanataka kurekebisha, inaishia maili away-- mpango huishia kuacha maili kutoka wakati alikuwa makosa yako. Na hivyo suala moja ambalo tungependa mipango ya kufanya, sometimes-- jambo moja kwamba tungependa mipango cha kufanya wakati sisi ni debugging ni kushindwa kwa sauti kubwa na kushindwa sana haraka wakati kitu fulani kitaenda vibaya. Chatu ni mbaya sana wakati huo. Chatu ni nzuri sana katika si kushindwa na rolling mbele kupitia mambo isiyotarajiwa. Hivyo hii ni muhimu kwa ajili ya wakati wewe ni kuandika mipango ndogo. Baada ya kupata ngumu mende ni wakati mwingine inachukua muda mrefu tease yao nje. Hivyo kuna upande wa giza kwa wote ya hii, kama ni kazi tu. Ni kazi tu kama wewe d kutarajia kwa. Ila kwa kuwa wakati hana, wewe kuishia up katika sehemu tofauti kabisa na kujaribu kufikiri ambapo ilikuwa kwamba potoka. Ukusanyaji takataka is-- hivyo jambo moja kwamba utakuwa taarifa ni kwamba yeyote mambo hayo kuwa Nimekuwa kuletwa katika existence-- arrays haya, Mkwawa haya, haya vitu, haya files-- kamwe kupata huru. Hakukuwa na wito kwa bure yoyote ya majadiliano hayo. Na kwamba alikuwa juu ya C-upande, kwa sababu sisi kamwe got katika mambo hayo. Lakini katika Python-upande, kuna si bure. Mambo kupata moja kwa moja huru wakati chatu anadhani wewe si kuangalia yao. Ni nzuri kwa kweli si kumkomboa mambo ambayo wewe bado wanaweza uwezekano wa kuwa na kuangalia, lakini hii ina maana kwamba kama ungekuwa kwenda kutenga jambo hili kubwa, na wewe ni kama, loo Mimi nina kufanyika kwa hayo sasa, ni vigumu kusema chatu kwamba wewe ni kosa na hivyo sasa. Unaweza wakati mwingine kuweka kwamba kutofautiana kwa kuwa hakuna, na kisha matumaini kwamba hatimaye ushuru takataka huja kupitia na cleans nje. Lakini tena, huna kuwa na udhibiti juu hilo. Na moja ya sababu ya kuwa watu kutumia C kwa kweli utendaji mambo muhimu, ni uwezo huu kwa kweli kujua wakati kumbukumbu ni zilizotengwa na wakati ni huru, na kuwa na mengi ya udhibiti wa kusema, Mimi nina kutumia hakuna kumbukumbu zaidi kuliko mimi haja. Ambayo ni kitu ambacho Chatu ni kwamba kubwa katika. Watazamaji: Je, mimi kuuliza swali wewe? Je, maana ya kushindwa kwa sauti kubwa? ROSS RHEINGANS-YOO: Hivyo kama kitu kinaendelea vibaya na uko katika debugging mode, wewe ungekuwa mara nyingi sana wanataka mpango wako kukuambia ambapo hasa ni gone vibaya, na si tu kimya kimya kuacha kuendesha. Lakini wewe d kweli ni kuchapa nje ya kila aina ya habari kuhusu kama, hapa ilikuwa hii. Jambo hili lilitokea Kama wewe ni uchapishaji wen-- kama wewe ni mbio mtandao server-- Watazamaji: [inaudible] ROSS RHEINGANS-YOO: Yeah, ikiwa wewe ni mbio mtandao wa kompyuta, ni wakati mwingine mbaya kama wewe ni daima kutupa makosa, na wewe ni kusema, vizuri kwamba hakuwa na kazi. Mimi nina kwenda kuacha. Mimi tu kwenda kupuuza na kuitunza kinachoendelea. Kwa sababu basi unaweza kupata katika mamia wa makosa haya na kuona kwao. Bila ya shaka kuwa na manufaa kwa madhumuni debugging kama kila wakati mtandao wa kompyuta yako alifanya makosa, alikuwa muda mrefu rekodi ya jambo hilo. Labda hata wanataka mpango kuacha, ili kumbukumbu hizo hawana kupata kuzikwa chini ya mambo. Lakini tena, hiyo ni katika debugging mode. Mara nyingi katika hali ya uzalishaji, dunia ni tofauti kidogo. Na katika maandiko vidogo kwamba mimi nina mbio, ambapo kitu kwamba nilisema kufanya inaweza kuwa tu kidogo mbali kutokana na kile ungependa kufanya, kisha aina ya kusukuma kwa njia ya makosa ni kitu unaweza kutaka. Na katika kesi hizo, hakika Chatu kweli anapata kuanza yake. Jambo la mwisho kwamba sikuwa majadiliano Haya katika kwamba sikuwa kuzungumzia lakini inaweza kuwa kweli vijimambo kwanza wakati una moja ya makosa haya, na pili na ya tatu na ya nne wakati una moja makosa hayo. Chatu, nilivyoeleza kwamba anatumia nafasi nyeupe kukuambia nini ngazi ya indentation na kile kazi kuzuia uko, inayotibu tabo na nafasi tofauti. Hivyo kama wewe tabo juu ya nne, na kisha mstari wa pili, ambaye nafasi nne, hata kama show up kama sawa kiasi katika mhariri wako, Chatu hana kutendewa sawa. Kwa kweli, chatu chipsi tabo na nafasi kama mafuta na maji. Ni mambo tu tofauti. Hakuna fulani urefu kwamba tabo ni, hivyo si kama tabo ni sawa na 8 nafasi, na hivyo ungependa kupata karibu yake kwa njia hiyo. Kama, wakati anasema, nini kiwango cha nyeupe nafasi mimi nina katika, ni kweli kuangalia kwa mfano wa nafasi na tabo. Na hivyo, njia bora ya kukabiliana na hii ni daima kutumia nafasi wakati wote. Na kwa kweli, katika Cloud9 IDE na CS50 IDE, Tab muhimu yako kuwekeza nafasi nne katika badala ya tab, ambayo ni super muhimu. Ingawa tena, kama wewe aliandika chatu Mpango na tabo kwamba itakuwa nzuri, ni tu kama mtu akaingia na alijaribu kuongeza line moja kwa mpango wako kwamba alikuwa nafasi nne kwa kila tab, ingekuwa kuvunja. Na bila kuvunja kwa njia kwamba kweli ni kutoonekana. Ingawa makosa halisi ujumbe kwamba huo unatoa ina nini na mpya Indent si inatarajiwa hapa, or-- ikiwa ni kuzungumza juu indents na inaonekana kama ni makosa, pengine ni kwa sababu kuna tatizo tabo-nafasi. Wao bado uko vijimambo kwa utatuzi. Zima kubwa katika majadiliano hayo, ambayo sikuwa kupata kwa sababu ni kweli ngumu, hila mada, na haikuwa lazima kufanya lolote mambo tumefanya hadi sasa, ni dhana iitwayo tuples. Wao ni pale kiasi kama arrays kwamba huwezi kurekebisha. Wao kupata kutumika kila mahali kwa sababu wao ni muhimu kwa kura ya mambo kuwa arrays si muhimu kwa ajili ya. Lakini kama Ningependa kufanya safu, na kisha ahadi mkalimani kwamba ni kamwe kwenda wanataka kurekebisha kwamba thing-- kwa kweli, kama unataka kurekebisha, itabidi kufanya moja mpya na mpya maadili katika it-- wale ni tuples. Badala ya kuzalisha hao kwa mabano mraba, wewe kuzalisha yao kwa mabano pande zote. Kwa nini ungependa kutumia mambo haya, ni kidogo ya swali. . Kitu tu kwamba mimi itabidi kusema juu ya hilo ni wewe Unaweza kutumia tuples kama fahirisi kwa Mkwawa. Huwezi kutumia arrays kama fahirisi kwa Mkwawa. Na kwa nini ni, tena, kiufundi na Mimi si kwenda kukimbia ndani yake. Pset kwamba mimi si kuguswa juu ya katika majadiliano hayo ni pset6. Hivyo hapa ni jinsi you d kutekeleza a-- hapa ni jinsi gani kutekeleza pset6 katika Python. Kuweka akilini chatu kubuni mzunguko, jambo la kwanza kwamba kufanya wakati uko Mipango kuandika ni kuangalia ili kuona kama mtu amefanya hivyo tayari. Kwa kweli, kama unataka kwa serve-- Apache 50 anafanya takriban hii, isipokuwa haina kuja kiwango cha imewekwa kwenye mashine ya Linux. Chatu hana, na chatu rahisi http server gani pia. Kama wewe ni milele kwenye mashine Linux, au Cloud9 IDE nje ya CS50 na Ningependa kutumikia sasa hii directory kwa bandari fulani, chatu-m SimpleHTTPServer bandari mtumishi hiyo. Unaweza pia kuagiza rahisi http server na ni got mengi ya utendaji kama unataka Customize yake, au mabadiliko hayo, au ni kukimbia it-- kuunganisha kwa kuendesha huduma yako mwenyewe server. Hivyo hiyo ni chatu kwa kifupi. Na hii imekuwa CS50. Asante.