DavidErikMollberg/kennsluromur huggingface dataset:
Þannig að ef ég vil nota get sum í einhverju allt öðru verkefni þá get ég alltaf kallað á get sum með því að láta get sum fá tilvísun á lista
Þannig að þetta viljum við alls ekki sjá notkun á global lykilorðinu
Svo koma hérna skilgreiningu á föllum og svo þar svo heldur aðalforritið áfram hér ég er búinn að missa yfirsýnina svo að ég tali nú ekki um ef að allt í einu næsta setning fær að koma hérna á milli
Og hérna segir í lýsingu í þessu verkefni eigið þið að útfæra klasann basket ball player og tvö föll utan klasans
við þurfum að geta áttað okkur á hver hin föllnu niðri og hvað þau gera með því að skoða kóðann
og aðalforrit er gefið sem les inn tölu frá notanda
sem sagt meðal annars í aðalforritinu er þessi virkni að upphaf stilla handahófs tölurnar með random seed
þrjú tólf stig og svo framvegis Og summan af þessu hérna sem er sex plús tíu eru sextán plús tólf eru tuttugu og átta
plús átta eru þrjátíu og sex plús tólf eru fjörutíu og átta er þessi summa hérna fjörutíu og átta sem Chicago Bulls skoraði hjá sama fyrir LA Lakers farið í gegnum sérhvern leikmann
og skrifa út hversu mörg númer hvað hann er og hversu stigann skoraði
svo ég get nefnt annað dæmi um inntak úttak En það nægir okkur svo sem að skoða bara þetta hérna
það sem var gefið hérna
En við förum bara aðeins í gegnum þetta hérna svona línu fyrir línu fyrst
Það er að segja þessi leikmaður sem hefur eitthvað ákveðið númer það er hann sem tekur skotið hérna
in each team líka það er ýmislegt sem við þurfum að prenta út hérna
Sem að raunverulega endurspeglast í þessu hér
Við erum ekki alveg búnir að skoða til hlítar hérna aðalforritið Kíkjum aðeins á að það hérna er main
Play er hins vegar gefið lay tekur inn team a og team b hleypur frá núll upp í game lenght Hvað var game length
þannig það ítrar fjörutíu og átta sinnum raunverulega fer frá
þá ætla ég að segja hér að
ef hann tekur ekki skotið
Við erum að bæta við annaðhvort tveimur stigum eða þá verðum við að bæta við núll stigum
Prófum þetta aftur
er hækkað
Byrjar í núll verður svo tveir Svo er hitt liðið sem er í núll og verða fjórir
Þannig þetta
Ja hérna segir you need to impliment this function print winner
Which team won Hvernig getum við gert það
Ja það lið vinnur sem að
nafnið á liðinu sem vann
og náttúrulega hérna megin líka heil tala sem kemur til baka og ég er að bera saman tvær tölvur í er að bera saman tvo integer a og Python er náttúrulega með stærri virkjanir tilbúinn fyrir upptaka class anum Ég þarf ekki sjálfar að útfæra hann
Þá er það b er það ekki sem vann
sjá aðeins hérna team get name
eina sem þarf að gera er að skipta þessu út hérna
og svo að ítra í gegn
Og það er náttúrulega self sem kemur hér
Það á að koma number númer leikmannsins og points hversu mikið hann skoraði
Þannig að number og númer leikmannsins svo á að koma points
í basketball player sjáum við það hér self punktur undirstrik undirstrik number og self punktur undirstrik undirstrik points
Ég gæti vissulega sett new line hér en eru ekki bara einfaldlega að segja já eftir
Og þurfum við þá ekki bara gera það sama fyrir
sækjum nafnið á team b
ef self points sé stærri en other points þá fáum við true sem er akkúrat það sem greater ætti að skila til baka
hefðum við átt að átta okkur á því að
semsagt ell fyrir vinstri err fyrir hægri u fyrir upp og dé fyrir niður
Og ef notandi er til dæmis staddur í neðstu röðinni og ýtir á d fyrir niður þá færist hann í efstu röðina
og ég lít svo á að
Þannig að þetta gefur okkur vissulega vísbendingar um
og ef að leikurinn er ekki í þessum lista left right up or down takið eftir að hérna er verið að nota þessa fasta ell left fyrir ell
þá hættir
ekki það hlutverk það hefur eingöngu það hlutverk að sækja leikinn
sem eins og hérna segir í doc string returns an initialized grid for given dimension
þannig að við fáum hérna í þessu tilviki fimm x inn í þennan sublist a hérna af því það er verið að hlaupa frá núll upp í fjóra þannig að fimm x fara inn í sublist ann og þegar það er búið þá er sublist anum bætt við grid ið þannig að lokum verði grid ið listi af listum
Þannig grid ið muni innihalda fimm raðir og sérhver röð
Það var o Það er staða leikmannsins það er efst í vinstra horninu uppi
þannig að þegar við erum búnir að upphafsstilla það þá verðum við að sýna það
að þetta er byrjunin á algríminu Vegna þess að ég er bara túlka það hvernig þetta inntak og úttak er hérna sjáum hérna er
búið að upphafsstilla borðið og það er sýnt
svo er lesið inntak frá notanda og leikurinn er framkvæmdur og borðið sýnt Svo er næsti leikur lesið frá notanda leikur er framkvæmdur og borðið sýnt Þannig að þegar ég er búinn að lesa fyrsta eintakið frá notandanum
er það ekki Þetta gerum við endurtekið Við meðan inntakið er ekki quit framkvæma leikinn sem notandi vill lesum næsta leik
Við við framkvæmum leikinn
útfærum eitt fall í einu og prófum það Sjáum hvort að það virkar ekki ana af stað og útfæra mörg föll í einu
þessum lista af listum
Þá ætla ég að kalla á eitthvað sem ég kalla display grid er það ekki ágætis nafn
það ver verður svona trú þessari vinnuaðferð að forrita frekar lítið í einu og prófa frekar oftar
Display grid ég veit að þetta fall virkar get move en mér vantar þetta fall sem framkvæmir leikinn
hérna sagt dev make move og pass Þetta er bara stubbur er það ekki
Það er út af þessari setningu i if move not in left right up or down þá skilum við quit til baka
í augnablikinu sem sagt ég fæ eitthvað row komma colunn inn og ég bara skila því beint til baka án þess að gera nokkuð
annars ef að leikurinn er right þá geri ég eitthvað annars ef að leikurinn er
vegna þess að hann getur ekki verið kvitt við hefðum ekki farið inn í lykkjuna okkar í aðalforritið ef hann hefði verið quit En allt í lagi höfum þetta bara svona
Hvað er það sem ég þarf að gera ef að leikurinn er left ef ég á að færa mig til vinstri
segja hérna makes the given move
takið eftir þegar o ið er hér og ég fer fer til hægri
breytta staðan
Þannig að nú er ég búinn að gera make move sem kallar á fallið find new position og takið eftir hvað hvað er mikilvægt að gera þessi föll þannig þau UNK
given the move
Já og þá sé ég nú
ég er ekkert að nota það ég er alla vega ekkert að nota það í augnablikinu óþarfi
að hafa það hérna inni
Svona prófum aftur
þá hækka ég column um einn ef ég færi aftur til hægri
þá er o ið komið hingað
Þannig ef col er stærri en núll þá get ég dregið frá annars læt ég col verða dim mínus einn
þannig að þegar ég er staddur lengst til hægri
eins og hérna þá ég má ekki fara til hægri ef að ég er kominn hérna í fjóra
þannig að þá segi ég hér
þá segi ég að col sé samasem núll er það ekki
Þannig að ef move er up ég má eingöngu gera það
segi þá row er samasem dim
Hvað gerist ef ég geri q Quit Þannig þetta
og ég ætla að kalla þetta fall fyrsta fallið
annars set ég value sem dim mínus einn Ég get gert þetta í svona einni setningu með því að segja
Það segir þá
UNK dimension mínus einn verð ég að passa mig á
ég er búinn að losna við þessa hreiðruðu if else setningar sem voru hérna
þegar maður les þetta þá sér maður hérna já ókei
og sama með increase þannig að ég er búinn að ég þarf ekki þegar ég les þennan kóða
þá þarf ég ekki að vita nákvæmlega hvernig decrease virkar Ég veit bara að hlutverk þess er einmitt að minnka dálkinn sama með increase ég þarf ekki að vita hvernig það virkar
ef ég geri left fyrir vinstri þá fer ég hringinn ef ég geri right aftur þá fer ég hringinn ef ég geri upp
Í þessu myndbandi ætla ég að fara aðeins yfir hvernig við getum sett upp Python umhverfi fyrir Mac
Þetta er mjög einfalt
Og prenta einn plús þrír skulum við gera núna fæ fjóra
Í þessu myndbandi ætla ég að fara yfir það hvernig við setjum upp Python fyrir Windows umhverfið
Þannig að ég ætla að hlaða þessu hérna niður og þar sem að Google Chrome er sem sagt að hlaða niður executable útgáfu af þessari þessari uppsetningu
Ég gæti prófað að segja þetta print tveir plús þrír
Nú til þess að að loka þessu þá get ég sagt quit hérna til þess að hætta í þessum túlki
Það er einmitt mappan sem ég valdi í uppsetningarforritinu áðan þannig að þetta slóðin sko það að Python mappa sé í slóðinni gerir kleift gerir þessari skipanaskel kleift að finna Python forritið þegar ég slæ bara inn hérna Python í skelinni
Svona til að glöggva okkur aðeins betur á þessu við getum opnað hérna file explorer ég get farið á harða diskinn minn yfir á C drifið og þá sjáum við það að undir users Hrafn er Python
Hins vegar ef ég vil skrifa lengri Python forrit þá myndi ég ekki skrifa það svona setningu fyrir setningu og prófa það svona í þessum túlki heldur myndi ég búa til sérstaka skrá skrifa Python forritið þar inn og keyra það
hvernig við höldum utan um gögn og listi í Python er það sem að heitir sequence það er að segja það skiptir við getum vísað í tiltekin stök í listanum til að til að ná í gögnin Til dæmis listi af núll er fyrsta stakið og listi af einn er annað stakið og svo framvegis
Kannski bara til að skýra aðeins betur byrjum bara strax á því að búa okkur til hérna dictionary
slæ á enter er hérna Ef ég skoða hvernig
Jú það er einmitt tvö þúsund sjöuhundruð sextíu og fimm
lyklana til þess að komast í gildin maður notar lykilinn til þess að komast í gildin
Þannig að það er í sjálfu sér sjáiði enginn munur á því að segja
ég gæti náttúrlega líka bara breytt einhverju gildi
Nú það eru ýmsar sko
mjög góðar fyrir þess skonar verkefni
Vegna þess að það að búa til algrímið það setur okkur í ákveðin svona ferli hugsunarferli sem að hjálpar okkur við að brjóta vandamálið einmitt niður í einstakar einingar
Ég ætla bara að sýna ykkur hér hvernig við brjótum þetta upp í svona þrjú hlutverkefni og ég ætla að ekki að brjóta þau frekar niður sem ég bendi hins vegar á að hægt er að gera og svo ætla ég að raunverulega að skrifa föll sem að leysa sérhvert af þessum hlutverkefnum
Þannig að ég ætla að skrifa hérna fall sem ég byrja með def skilgreiningu lykilorðið def og hvað eigum við að kalla þetta
Eigum við ekki að hafa þetta bara í einhverju sem við köllum hérna a string
Þegar sá strengur er kominn frá notandanum þá ætla ég einfaldlega skila honum til baka svona Þannig að með því að skrifa þetta litla fall hérna þá er ég búinn að leysa fyrsta hlutverkefnið í þessu vandamáli
Og það þýðir þá það að ég gæti notað þetta fall aftur og aftur í mínum kóða vegna þess að það hefur bara þetta fyrirfram ákveðna skýra hlutverk
Já hvað eigum við þá ekki bara að fara hérna í næsta hlutverkefni reikna út fjölda tölustafa í strengnum
Ja ég þarf náttúrulega að ítra í gegnum þennan streng er það ekki
Nú man ég ekki alveg hvort þetta er rétt hérna skrifað hjá mér við sjáum það þá á eftir hvort ég fæ villu
Ég gæti það alveg og en við skulum bara sleppa því í í þetta sinn vegna þess að það er ekki alltaf ástæða til þess að að búa til fall ef að það sem maður er að gera er algjörlega trivíalt eins og við getum sagt
einf núna að kalla á þessi föll mín
Það er þetta fall og það tók ekkert viðfang þannig að það bara svigi opnar svigi lokast
Ef ég keyri þetta aftur prófum núna með einhvern tölustaf for tólf ritun
Ég er að prófa ýmisleg ýmis jaðartilvik og það er hluti af því sem að við leggjum áherslu á og kennslubókin hefur talað um test your program thoroughly eða hvernig sem það var orðað sem sagt hugmyndin að prófa forritin ykkar vel með ýmiss konar jaðartilvikum sem sagt reyna að sjá fyrir ykkur hvað það er sem að gæti komið upp af því að forritið þarf að vera robust
Þá er það auðveldasta eftir Það er að segja að púsla þessu öllu saman með einfaldlega röð af fallaköllum
Og þessi bool segð hún er athuguð áður en við keyrum þessar setningar
Og þá stendur hér er fimm minni en fimm
Nú við sjáum hérna að það kom út ég skrifaði tölurnar sem að counter stendur fyrir eina tölu í sérhverri línu stundum getur verið þægilegt að skrifa út þannig að það komi ekki alltaf ný lína og það er hægt að gera til dæmis hér með því að segja se setja hérna ákveðna auka parameter inn í print fallið segja hérna end sama sem hafa það hérna space svona
Af hverju
Þannig að ef ég keyri þetta og ég slæ inn tíu hér þá fæ ég það sama og áður þannig að það er enginn munur þarna á
Við skulum bara demba okkur strax í hérna eitthvert dæmi um fall
Þannig að það sem við þurfum að gera okkur grein fyrir hér er að def og kóðinn sem hér ég merki hann er hluti af skilgreiningu á fallinu
Þannig að það er munur á þegar þetta fall er skilgreint hérna í kóða þegar Python túlkurinn sér þennan kóða þá a gerist í sjálfu sér ekki neitt
Og við skulum bara demba okkur strax í dæmi um notkun á svona exception handling eða meðhöndlun frábrigða
Þess vegna fá kemur villan upp
Try þýðir ég ætla að reyna að gera eitthvað
En ég verð að passa mig á því að counter inn verður auðvitað að hækka í serhverri ítrun í lykkjunni verð ég að segja er það ekki counter plús saman sem einn hækkar counter inn
Ég fæ second line hérna
Counter inn er einn og þessi if setning verður aldrei trú vegna þess að line number hjá mér er núll en counter inn byrjar í einum
Þá prentast aldrei út þessi lína ég vissulega ítra yfir hérna gögnin að óþörfu en línan sem að samsvarar því línunúmeri sem ég sendi inn prentast aldrei út og það er bara rétt vegna þess að þetta er ekkert línunúmer sem er leyfilegt