DavidErikMollberg/kennsluromur huggingface dataset:
Það er það er ý það eru ý ýmiss konar atriði í sambandi við forritunarmálið sjálft sem þurfið að læra hvernig það er byggt upp það er svokölluð málskipan hvernig á að raða saman setningum í málinu hvernig á að að aflúsa það og nota það yfirhöfuð
Og á sama tíma eruð þið að læra um hvernig eigi að leysa vandamál almennt
Hvernig er best að ráðast innan gæsalappa á tiltekið vandamál brjóta það upp í einstakar einingar þannig að hægt sé að leysa sérhverja einingu eina og sér og þannig að raða saman lausnum á einstökum einingum þannig að heildarlausnin liggi fyrir
Þannig að það þetta er þetta er bæði sem sagt vandamálið og það sem er erfitt við tölvur að við þurfum einhvern veginn að koma okkar hugsun til skila og og það getur við þurfum að nota sem sagt tiltekið forritunarmál til þess að koma okkar hugsun til skila lausn á einhverju tilteknu vandamáli og það er oft erfitt fyrir okkur að gera eins og ég sagði áður fyrir sérstaklega fyrir þá sem hafa ekki æfingu í því
Þannig að það er tvennt hérna sem getum við sagt að sé svona aðalatriðið
Við þurfum að læra það að að leysa vandamál
Við þurfum að læra það að leysa vandamál
Hvaða aðferðum getum við beitt til að leysa eitthvað vandamál sem einhver leggur fyrir okkur
Og við þurfum að geta notað tól sem að gerir okkur kleift að gera þetta á auðveldan hátt eða að minnsta kosti á auðveldari hátt
Það sem við höfum leggjum áherslu á í námskeiðinu er það á þennan problem solving hluta sem sagt það að leysa vandamál og bætum síðan við ýmiss konar tólum í í í einhverju tilteknu forritunarmáli sem gera okkur kleift eða hjálpa okkur til að leysa almenn vandamál
Nú þá kemur spurningin Hvað er það sem gerir forrit að góðu forriti
Ja við getum sagt að forrit er einhvers konar hugsun þess sem að skrifar það og þannig að það fyrsta sem maður þarf að gera er að hugsa um vandamálið og þetta getur verið erfitt fyrir marga
Það er að segja að átta sig á því að hugsa um vandamálið og leysa það raunverulega í huganum áður en maður fer að skrifa forritið sjálft
Þannig að þetta er mjög mikilvægur hlutur hugsa um vandamálið áður en maður byrjar að skrifa
Og það er reyndar einmitt regla eitt sem að bókin talar um í þessum tiltekna kafla núll
Think before you program sem sagt hugsa áður en maður forritar
Hugsa áður en maður forritar
Nú svo er líka sagt að markmiðið með tilteknu forriti er ekki að endilega að það verði keyrt heldur að það verði lesið
Vissulega er það þannig að þegar við skrifum forrit þá viljum við að geta keyrt það
En við erum líka í mjög mörgum tilvikum að skrifa eitthvað forrit sem aðrir koma til með að lesa eða við sjálf og við verðum að geta lesið og skilið það til að geta viðhaldið og þróað þau áfram
Það verður því verið viðhaldið og jú það verður líka keyrt
Regla tvö er að forrit sé einhvers konar ritgerð innan gæsalappa til að leysa eitthvert tiltekið vandamál en það vill til að það keyrir líka á tölvu
Þannig það er ágætt að hugsa um þetta svona
Þegar við skrifum forrit þá viljum við að það sé einhvers konar leiðarvísir að því hvernig eitthvað tiltekið vandamál er leyst
En svo vill svo reyndar til líka að við getum keyrt það forrit á tölvu
Þá kemur spurningin af hverju ætlum við að nota Python
Ja Python er einfaldara forritunarmál heldur en mörg önnur mál forritunarmálið c plús plús hefur til dæmis verið notað sem fyrsta forritunarmál í þessu námskeiði áður
Java hefur líka verið notað sem fyrsta forritunarmál og það hafa verið færð rök fyrir því að Python sé einfaldara forritunarmál fyrir að læra fyrir þá sem hafa ekki grunn í forritun
Og hvað þýðir einfaldara í þessu tilviki
Þannig að þetta tvennt kannski gerir okkur kleift að setja fókusinn meira á það að leysa vandamál sem sagt problem solving heldur en forritunarmálið sjálft þannig að við við drukknum ekki í einhverjum smáatriðum í forritunarmálinu sjálfu heldur setjum áhersluna fyrst og fremst á hvernig við ætlum að leysa vandamálið
Þegar við erum búin að hugsa um það hvernig við leysum vandamálið þá verður tiltölulega auðvelt fyrir okkur að varpa þeirri hugsun yfir í forritunarmálið sem um ræðir sem er í þessu tilviki Python
Það eru mörg margir hlutar af öðrum forritunarmálum sem koma sjálfgefnir með Python
Þar erum við að tala um ýmiss konar gagnaskipan eins og lista og dictionaries
Þetta eru hlutir sem við lærum seinna ýmiss konar lykkjur og frábrigði iterations og exceptions og svo eru ýmis svona ýmsir pakkar sem fylgja forritunarmálinu til þess að leysa einhver einhver svona eitthvað sem eru þekkt verkefni
Já hér er talað um Python is often described as batteries included
Og það sem við við viljum auðvitað að kenna grunnatriðin í tölvunarfræði og við viljum að það sem þið lærið sé nothæft og það sem er það sem er einn kosturinn við Python líka er að það er það sem heitir open source
Þannig að svona niðurstaðan er eiginlega sú að margir líta svo á að Python sé mjög hentug til þess að leysa vandamál og oft á svona skjótan eða fljótari hátt heldur en hægt er að gera í ýmsum öðrum forritunarmálum
En svo auðvitað þarf að gera sér grein fyrir því að það að taka eitthvert eitt námskeið í Python eða eitt námskeið í forritun þar sem Python er notað gerir mann alls ekki að einhverjum sérfræðing í forritun
Það er eitthvað sem maður lærir á löngum tíma en vonandi tekst okkur þó að gera okkur að komast vel áfram og mynda ákveðinn grunn sem verður síðan nýtanlegur í námskeiðunum sem á eftir koma
Svo er annað sem að hugtak sem er gott að hafa í huga er þetta hugtak sem á ensku heitir computational thinking
Það er þessi hugsun að vera með það í huga að maður geti alltaf skrifað eitthvað forrit fyrir eitthvað tiltekið verkefni
Þannig að eins og hérna segir hey Ill just write a program for that
Ef einhver kemur upp með eitthvert vandamál sem þarf að leysa þá sé hugsunin sú að já ég get bara skrifað forrit til að leysa það
Þannig að maður hugsi svona computationally eða tölvunarfræðilega
Og Python hjálpar manni að láta þetta gerast vegna þess að að skrefið frá lausninni þegar maður er búinn að hugsa um lausnina í það að útfæra hana í forritunarmáli eins og Python er ekki mjög stórt
Python forritunarmálið hjálpar manni til þess að taka þetta skref
Ja auðvitað er það líka bara persónubundið og það er ekkert eitt rétt svar við það við því hvað er besta forritunarmálið
Og hér nákvæmlega stendur the answer is no
This is because there is no best language
Nú þá þannig að reglurnar tvær sem er sem sagt mikilvægt að hafa í huga hérna í byrjun er það að maður eigi að hugsa fyrst áður en maður forritar
En það vill svo til að forritið keyrir líka á tölvu
Já komið þið sæl ég ætla í þessu myndbandi aðeins að fara yfir aflúsun eða það sem á ensku kallast debugging
Og ég ætla aðeins að fjalla um það hvernig við getum notað svokallaðan aflúsara í Python eða debugger til þess að finna villur í okkar forritum
Villur eru náttúrulega eitthvað sem allir forritarar gera
Þannig að við þurfum að hafa eitthvað tæki til þess að hjálpa okkur til þess að finna villur
Og þetta orð íslenska aflúsun það er að segja á ensku er talað um bug eða lús og við erum þá að aflúsa en það sem á ensku heitir debugging
Það er að segja að losna við viðkomandi bug eða lús
Tökum við sko förum bara beint hérna inn í visual studio og ég er hérna með forrit sem að ég kalla sum series og ég ætla að skrifa hérna forrit sem á að finna summu af einhverri röð
Og við skulum gera ráð fyrir að notandinn slái inn hérna einhverja tölu þannig að ég ætla ka að breyta tölunni í integer og notandinn slær inn gefum honum hérna eitthvað prompt enter number eða enter segjum bara end of series svona
Þannig að ef að notandi slær inn til dæmis fimm þá séum við að reikna út einn plús tveir plús þrír plús fjórir plús fimm sem eru fimmtán þannig að við segjum að við notum hérna ja það er hentugt að nota for lykkju í þessu vegna þess að við vitum að við þurfum að ítra frá einum upp í einhverja tölu sem notandi slær inn
Þannig að segjum hérna að við séum með for lykkju for i in range einn komma max int svona
Og við þurfum að í sérhverri ítrun í lykkjunni þurfi að ha halda utan um einhverja summu þannig að segjum að hérna við köllum þetta bara the sum leggjum við hana töluna sem að gildi sem er virkt í sérhverri ítrun í lykkjunni þannig að fyrst er i einn þá leggjum við einn við svo er i tveir og þá leggjum við tvo við og svo framvegis
Nú til þess að þetta gangi þá þurfum við að upphafsstilla summuna okkar og við eðlilegt að upphafsstilla hana með núlli hérna
Nú ég ætla að keyra þetta núna
Enter end of series og þá ætla ég að slá inn fimm og ég fæ the sum is ten
Og þá er spurningin en bíddu það er villa það er augljóslega villa í forritinu vegna þess að ég veit að það á að koma út fimmtán nú ein leið til þess að finna innan gæsalappa svona villu er að nota print setningar ég ætla að setja inn í kóðann ákveðnar setningar sem að hjálpa manni að sjá hvað er að gerast og ég gæti farið þá leið að segja hér
Keyri þetta aftur enter end of series það er fimm
Og þá átta ég mig á því að síðasta stakið síðasta gildið kemur ekki með
Nú við vitum það einmitt að range er frá einhverju start einhverri upphafs tölu upp í stopp tölu og stopp talan er ekki með
Eins og hérna segir start defaults to zero and stop is omitted stopp fyrirgefið stopp er hérna exclusive start er inclusive og stopp er exclusive þannig að það er ljóst að ég hefði þurft að fara hér upp í max int plús einn til þess að þetta væri rétt og ég get sannfært mig um það segjum bara að ég taki þessa print setningu út aftur hérna keyri þetta aftur fimm og ég fæ the sum is fimmtán
Þannig að þetta er vissulega ein leið til að finna villur í forriti það er að setja inn print setningar sem að hjálpa mönnum til að sjá hvað er að gerast í forritinu
En þetta er ekki besta leiðin til þess að finna villur og ástæðan er sú að það bara að setja inn auka línur eða auka skipanir í forritið sem ekki eru raunverulega hluti af forritinu það er ekki mjög hentugt og getur við getum hreinlega til dæmis bara gleymt að taka þær út
og þið getið ímyndað ykkur að ef við værum með mjög stórt forrit og við værum að reyna að finna villur á einhverjum á einhverjum stað í forritinu þá gæti verið erfitt fyrir okkur að þurfa að setja inn print setningar hér og þar til að átta sig á því hvað er að gerast í flæði forritsins
Þannig að betri leið er sú að nota innbyggðan aflúsara sem að kemur hérna með okkar forritunarumhverfi í visual studio code og hann gerir okkur kleift að hann er hann er hægt að ræsa hér með debug en til þess að nota hann þá þarf ég að setja inn kóðann svokallaða break punkta
Og þið sjáið að þegar ég fer með músina hérna út á enda þá verður hérna rauður punktur og ég get smellt á hann og gert hann aktífann þannig að núna hérna er þessi setning orðin aktív og við skulum hafa þetta eins og þetta var hérna þetta var svona
Villan var svona
Þetta þýðir það að þegar ég keyri þennan svokallaða aflúsara eða debugger þá mun hann og þá er ég búinn að setja ákveðin break point að þá mun forritið eða debuger inn sjá til þess að að þegar ég kem í þessa setningu þá stoppi keyrsla forritsins og ég geti þá skoðað hvað er í gangi á þessum tiltekna stað
Þannig að prófum þetta bara ég get smellt hér á ég get líka sagt hérna debug start debugging
Þá segir hún ja hvað viltu aflúsa
Jú ég vil hérna debug currently active Python file
Þá fer debug urinn í gang og það fyrsta sem maður geri ég þarf náttúrulega að slá inn hérna töluna sem að er inntak frá notandanum og ég slæ inn fimm og þá sjáið þið núna að í stað þess að keyra alla for lykkjuna þá stoppar aflúsarinn í þessari línu þar sem ég bað hann einmitt um að stoppa með af því ég setti break point í þessa línu
Hvað er max int hérna
Það er fimm jú það er akkúrat það sem notandinn sló inn
Ég get keyrt hana núna með því að se velja hérna step over
Ef ég smelli step over þá fer ég raunverulega yfir þessa setningu þar sem að break punkturinn var og held áfram á næstu setningu
Hver er næsta setningin
Hún sést hérna með þessum gula þessari gulu ör hérna
Nú ég get haldið áfram ég get sagt step over aftur þá fer ég aftur hérna niður og hvert i ið er orðið núna
Og ég segi aftur step over
Hvert er hver er summan orðin
Hún er orðin þrír vegna þess að einn plús tveir eru þrír
Svona gæti ég haldið áfram
Continue hér þýðir að ég keyri forritið fram að næsta break point i þannig ef ég geri continue þá er ég aftur kominn hingað
The sum er þrír og ég segi ég get sagt continue aftur þá lendi ég aftur hér the sum er orðið sex vegna þess að það er einn plús tveir plús þrír
Hvert er i ið á þessum tímapunkti
Það er fjórir
Sko i ið er orðið fjórir það á eftir að leggja fjóra við
Þannig að ef ég geri eitt svona step over þá sjáum við að the sum er orðið sko tíu það er að segja einn plús tveir plús þrír plús fjórir og ef ég segi núna step over einu sinni í viðbót þá sjáið þið að ég fer út úr lykkjunni vegna þess að max int var fimm sem þýðir sem var exclusive þannig að fimm eru ekki með þannig að ég var raunverulega bara ítra frá einum upp í fjóra
Og svona svona gæti ég sem sagt notað aflúsarann til þess að skoða hvað er að gerast í flæði forritsins án þess að vera nokk án þess að þurfa að skrifa einhverjar print setningar
hver eru gildi tiltekinna breytu á tilteknum stað og og það komi UNK sem sagt til með að hjálpa mönnum til þess að finna raunverulega villuna
Í þessu tilviki hér þá áttuðum við okkur á því að i ið þegar i ið var komið upp í fjóra þá hætti lykkjan þannig að hún fór einum of stutt
Og þá gætum við lagað það með því að segja hérna einmitt max int er sama sem ja segja max int plús einn hér í staðinn fyrir max int
Ef ég segi hérna continue núna þá klárar bara forritið og það segir hérna the sum is tíu
Þetta var sem sagt svona mjög einföld notkun eða dæmi um einfalda notkun á á debugger
Ég ætla kannski aðeins hérna að sýna ykkur annað dæmi sem að þar sem ég ætla að nota fall sem er reyndar eitthvað sem við komum til með að tala um í næsta tíma
En það er allt í lagi
Ég ætla að gera bara eitthvað einfalt fall hérna
Segjum sem svo að já bara við skulum bara kommentera þetta hérna út
Ég ýtti á control k c til þess að kommentera út kóða control k c í visula studio og í stað þess að gera þetta hérna í for lykkju segjum þá að ég ætli að kalla á fall sem að reiknar þessa summu fyrir mig
Og þá þarf ég að skrifa fallið og þetta er eitthvað sem að eins og ég sagði áðan mun við munum sjá í næsta tíma
En við skulum samt sem áður gera það hér þannig að þið hafið þó dæmi um hvernig hægt er að aflúsa föll
Það tekur inn eina tölu n getum þess vegna kallaði hana max ja köllum hana n bara hérna
Og þetta fall á að skila og kannski ætti ég að skrifa það hérna returns the sum of one to n það er þet það þetta sem fallið gerir
Og svo ætla ég hérna að skila summuni
Sem sagt fallið á að skila þessari summu til baka hérna
Þannig að í stað þess að gera þessa for lykkju hérna þá ætla ég að kalla á þetta fall og segja bara að okkar summa sé sama sem niðurstaðan af því að kalla á fallið series sum með þessari tölu sem notandi sló inn sem var max int
Þannig að þetta hér er svokallað falla kall
Það tekur þessa tölu max int sendir hana inn hérna fyrir þetta n n ið er notað í útreikningi og það er summuni er skilað hérna að lo að lokum og hún kemur inn í þessa breytu hér og svo prenta ég hana út hérna
Og hvað gerist þegar ég keyri þetta forrit
Ég slæ inn fimm og ég fæ út tíu það er aftur það er sama villa og áður ég hefði viljað fá fimmtán hérna
Þá gæti ég á nákvæmlega sama hátt sett break punkt við segjum að ég til dæmis setji break punkt hérna áður en ski tilteknu áður en summuni er skilað til baka og ef ég keyri þetta núna með debugg inum start debugging
Sko þetta þessi skipun hér input skipunin var keyrð
Ég setti summuna sem núll ég kalla og fallið eins og það heitir og þá lendi ég hér inni í fallinu og það var ekki fyrr en hér sem var break punktur þannig að aflúsarinn stoppar á þessari setningu
Og þá get ég á sama hátt áður skoðað hérna Hérna fæ er the sum tíu hérna er f n fimm og þar með veit ég að fimm mínus einn eru fjórir og þá fæ ég fimm sinnum fjórir eru tuttugu deilt með tveimur það er tíu
Þannig að ég hef gert einhverja villu hérna í formúlunni sjálfri og ef þið munið kannski hver formúlan er fyrir summu raðar þá er hún einmitt ekki n sinnum n mínus einn heldur e deilt með tveimur heldur n sinnum n plús einn deilt með tveimur
Slæ inn fimm hver summan hér núna
Jú hún er fimmtán vegna þess að hérna er fimm sinnum fimm plús einn sem eru sex það eru þrjátíu deilt með tveimur gefur fimmtán
Ef ég segi continue núna þá enda ég einmitt með rétta svarið
Þannig að þetta voru svona tvö stutt dæmi um það hvernig hægt er að nota aflúsarann það er mjög mikilvægt fyrir ykkur að venjast því að nota aflúsarann þegar þið lendum í einhverjum villum í ykkar forritum þá eigið þið strax að setja einhverja break punkta á þá staði þar sem þið haldið að að villan sé eða á einhvern stað sem getur hjálpað ykkur til að finna villuna keyra debugger inn hann mun þá stoppa á þessum break punkti og þá getið þið skoðað gildi breytnanna
Þið getið gert step over til að skoða hvað gerist ef að viðkomandi setning er keyrð
Þið getið gert continue og svo framvegis
En aðal málið er það ekki vera að setja inn einhverjar print setningar í ykkar kóða til þess að finna villur
Komið þið sæl ég ætla í þessu myndbandi að fjalla aðeins um textaskrár
Sko Það sem við höfum verið að gera hingað til að stórum hluta er að lesa inn gögn af lyklaborði þar sem notandinn hefur gefið okkur einhver gögn sem við höfum beðið hann um með því að nota til dæmis input setningu í Python og beðið notandanum að slá inn einhver gögn fyrir okkur sem við siðan meðhöndlum á einhvern hátt í forritinu
Þetta er að sjálfsögðu ekki eina leiðin til þess að fá gögn fá inntaks gögn í forrit og kannski jafnvel algengari leið er einmitt að fá gögnin úr einhverri tiltekinni skrá eða jafnvel gagnagrunni nú reyndar gagnagrunninn eitthvað sem við ætlum ekki að tala um í þessu námskeiði en það er nú sérnámskeið fyrir það
En við ætlum aðeins að skoða það hvernig við getum lesið gögn úr skrám
Og hérna er ég komin með í visual studio skrá sem ég kalla hérna data punktur tekst sem inniheldur þrjár línur first line second line og third line
Og nú er spurningin hvernig ég get farið að því að fá þessi gögn eða lesið þessi gögn inn í Python forriti
Við skulum kannski bara búa okkur til nýja skrá hérna
Hvað eigum við að kalla þetta read data punktur p y eitthvað sem les gögn
Nú til þess að lesa gögn þá þarf ég í fyrsta lagi geta opnað skrána og það sem ég ætla að gera hér vegna þess að nú er náttúrlega að læra um föll ég ætla einmitt að nýta mér það að brjóta strax þetta vandamál sem ég stend frammi fyrir er já hvert er vandamálið
Það þarf bara að sannfæra lesa þessar þrjár línur hérna og segjum bara að prenta þær beint út óbreyttar
Það er vandamálið þannig ég ætla að brjóta þetta vandamál uppi svona hlutverkefni Og það fyrsta verkefni er það að
Við getum sagt ég geti skrifaði lítinn algóritma sem gerir þetta
Fyrsta sem ég þarf að gera er að fá skráar við skulum hafa þetta á ensku bara get file name from user
Næsta er að open file
Ég ætla að opna skrána og þryðja ég ætlaði að sýna read file og fjórða sem þarf að gera er raunverulega að output data
Í rauninni er ég búinn að skrifa svona einhvers konar leiðarvísir fyrir mig hérna í þessu fyrir þetta tiltekna vandamál
Nú ef við bara förum hérna stað sé fyrsta verkefnið get filename from user
Þá gæti ég bara sagt hérna það er í sjálfu sér kannski nógu einfalt vandamál að ég þurfi ekki fall fyrir það Vegna þess þetta er eitthvað sem við höfum gert margt margoft segjum bara hérna file name sama sem input file enter name eitthvað svona biðjum notandann að slá inn þetta skráarnafn sjái það nú svo sem engin sérstök ástæða endilega til að búa til fall fyrir þetta þetta er svo einfalt
Þá erum við komin að þessu open file hvernig opna ég skrá
Ég ætla bara að eiga fall sem gerir það ekki bara kalla það einmitt open file
Það tekur þá inn eitthvert skráarnafn sem notandinn er þegar búinn að skrá inn og já jú filename einmitt
Og við ætlum þá að nota fall i Python sem heitir open og kalla hérna breytu sem fær til baka þegar ég opna skrána ætli að kalla hana file object tölum um það rétt á eftir
Þetta gæti kallað á open fall sem opnar skrá með þessu nafni og ég ætla að segja ég ætla opna hana með r hvað þýðir það
Ég ætla að opna hana í read ham í hvaða mode eins og sagt er á ensku
Það sem ég fæ til baka ég kalla hérna file object
Og kennslubókin einmitt talar um þetta sem file object
Þetta er einhvers konar hlutur sem stendur fyrir þessa skrá
Svo get ég seinna meir ef þetta ef mér tekst að opna þessa skrá farið að vinna með þennan hlut til dæmis lesið einstakar línur úr skránni með því að tala við þetta file object og við skulum bara skila þessu til baka
Sjáum við hvað þetta hefur skýrt afmarkað hlutverk
Þá er ég raunverulega búinn með þennan hluta hérna númer tvö númer þrjú var að lesa skrána
Nú er þá ekki einmitt eðlilegt bara eiga sér fall sem getur gert það
Ég kalla bara read file
Og nú þarf ég að geta ítrað í gegnum gögnin sem eru sem file object stendur fyrir
Þannig nú gæti ég sagt for eigum við ekki að kalla þetta bara line in file object
Þá get ég ítrað yfir gögnin línu fyrir línu
Þannig ef við hoppum yfir í data skrána okkar hérna
Þá er ég einmitt að ítra yfir þessi gögn sem sagt línu fyrir línu
Ég mun fyrst lesa þetta first line
Svo mun ég lesa þetta second line og svo framvegis
Þannig að í fyrstu ítrun í þessari lykkju þá hefur breytan line sem er af taginu strengur gildið first line af því að hún er að koma héðan first line
Og það eina sem ég ætla að gera núna í þessu einfalda forriti sem er bara til að sýna hvernig við gerum mjög gerum grunnatriði í skráar vinnslu
Það er að prenta út
Nú mætti svo sem segja að þetta fall mitt read file hefur ekki kannski alveg nógu skyrt og afmarkað hlutverk
Það er að segja það bæði les skrána og prentar eitthvað út
Þannig að hérna ég er búinn að lesa nú væri kominn aftur í aðalforritið og það er kannski ágætt að gera svona þetta hér er main prógram og ja kannski ætti nú bara nýta tækifærið núna og segja sko main fall það getur nú bara hreinlega verið sér fall líka
afhverju bý ég ekki bara til hérna main kalla sjáið kallar sjáið ég bý til fall sem heitir main
Færi kóðann hérna upp og eina
Síðan þarf að gera er að kalla á main
Þmain kall hér mun kalla á þetta main sem að byrjar um að biðja notandanum skráarnafn og þegar ég kom með skráar nafnið þá ætla ég að kalla á fallið read file
Sem að tekur file nafnið inn
Ég ætlaði að opna fyrirgefið átti að vera open file
Open fæl sem tekur skrá nafnið en það fær einhvers konar file obbbjetobject ta til baka
Sjáum hérna file object ið er skilað
Þannig við sjáum núna af því við erum oft að tala um læsileika sjáið hvað main fallið sem er aðal fallið hjá mér er einfalt
Það er að segja það er raunverulega bara röð falla köllum má segja
síðan og ég file name til baka
Ég sendi fælinn inn í open file fallið og ég file object til baka
Ég sendi file object ið inn í read file fallið þannig að það eru engin flækja í main fallinu sjálfu
Öll lógíkin er hjúpuð inn í föll
Sem var akkúrat kosturinn við föll og við erum búin að tala um hjúpun og information upplýsingahuld
Prófum að keyra þetta hérna
Þá kemur hérna enter filename og hvað kallaði ég skránna aftur
First line Svo kemur second line og svo kemur third line
En það sem þið takið eftir er að það ég það kemur alltaf auð lína á milli línanna first line auð lína second auð lína og third line auð lína
Ja ástæðan er sú að þegar við lesum þessa skrá hérna data punktur text þá er new line karakter hérna aftast í skránni
Aftast fyrirgefið í sérhverri línu
þannig það má hugsa sér sko new line karakterar er oft settur fram svona í í hérna forritum
Þetta er það má hugsa sér að sérhver lína endi á þessum karakter að hann sé hérna karakterinn newline við sjáum hann bara ekki
Visual stúdíó sýnir hann ekki en hann er þarna
Og þegar við lesum inn sérhverja línu hér þá hún einmitt new line karakterinn þannig að þegar við prentum út línuna þá prentast út newline karakterinn með sem veldur því að kemur ný lína en print fallið í Python er líka þannig að það prentar alltaf new line eftir að það er búið að prenta út það sem er innan inni í sviganum eftir að búið að prenta út viðfangið
Þess vegna erum við að fá tvö new line
Og þá er spurningin hvernig getum við leyst það
Já við gætum leyst með því að hreinlega að losa okkur við new line sem er í þessari breytu line hérna