1 / 14

Python - seznami

Python - seznami. uporaba. Album sličic. Anže se je odločil, da bo zbiral sličice. Tiste o živalih. Kupiš čokoladko, v ovitku je skrita sličica živali in potem to sličico nalepiš v album. Seveda ne bo odnehal, dokler ne bo zbral sličic vseh živali!

maxime
Download Presentation

Python - seznami

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Python - seznami uporaba

  2. Album sličic • Anže se je odločil, da bo zbiral sličice. Tiste o živalih. Kupiš čokoladko, v ovitku je skrita sličica živali in potem to sličico nalepiš v album. • Seveda ne bo odnehal, dokler ne bo zbral sličic vseh živali! • Mene, kot starša, pa zanima, koliko bo zaradi tega obremenjen družinski proračun, torej, koliko čokoladic bom moral kupiti, da bo album poln!

  3. Ideja • Izračunajmo! • Pa se še spomnimo toliko matematike? • S pomočjo računalnika simulirati nakupovanje. • Polnjenje albuma izvesti velikokrat in določiti povprečje. • Če bomo to izvedli dovolj-krat, se matematični in "statistični" izračun ne bosta veliko razlikovala!

  4. Predpostavke • Proizvajalci so pošteni • Vse sličice nastopajo enako pogosto • Anže ne pozna nikogar, ki bi zbiral iste sličice in nima možnosti menjave. • Kupovanje • Enostavno • Izberemo naključno število med 1 in velikostjo albuma (številom sličic) • random.randint(1, velAlbuma)

  5. Album • Sličica – posamezni element seznama • Seznam tako velik kot album (kot je število sličic) • Zanima nas le, če sličica je, ali ni • album = [False] * velAlbuma • album[5] ... ali imamo sličico 5 • Ni ok ... Zadnje sličice ne moremo dobiti • indeksi od 0 do velAlbuma – 1 • Zato raje • album = [False] * (velAlbuma + 1) • Na album[0] pa kar pozabimo

  6. Osrednji del • Kupimo čokolado • slicica = random.randint(1,velAlbuma) • Če sličice še nimamo, jo "nalepimo" • album[slicica] = True • Ponavljamo, dokler album ni poln! • Kako vedeti, da je poln • Vsakič pregledati, če so nalepljene že vse sličice (če ni nobena vrednost album[i] False) • predolgo • Pomniti, koliko sličic nam še manjka

  7. Osrednji del while kolikoManjka > 0 : slicica = random.randint(1,velAlbuma) #kupilsemsličico kolikoKupil = kolikoKupil + 1 if (not album[slicica] :#nimam je še! kolikoManjka = kolikoManjka - 1 album[slicica] = True # nalepim

  8. Funkcija album import random def album (velAlbuma) : ''' kolikosličic je potrebnokupiti, danapolnimo album ''' album = [False] * (velAlbuma + 1) # nazačetku je album prazen kolikoManjka = velAlbuma kolikoKupil = 0 # dokler ne napolnimalbuma while kolikoManjka > 0 : slicica = random.randint(1,velAlbuma) # kupilsemsličico kolikoKupil = kolikoKupil + 1 if not album[slicica] : # nimam je še! kolikoManjka = kolikoManjka - 1 album[slicica] = True # nalepim # album je poln return kolikoKupil

  9. In zakaj nikoli ne pristati …

  10. Pokemon album • Tu ni čokoladic, ampak je v zavojčku 6 sličic • Kupovanje malo drugače: • # kupili smo nov zavojček. V njem je 6 sličic! i = 1 while i <= 6 : slicica = random.randint(velAlbuma) # kupil sem sličico if not album[slicica] : # nimam je še! kolikoManjka = kolikoManjka - 1 album[slicica] = True # nalepim i = i + 1

  11. Izboljšava • V zavojčku so različne sličice • Kako generirati 6 različnih števil! • Ideja: • Izberemo indeks sličice • Na začetku je številka sličice enaka indeksu • Prvič so kandidati mesta(indeksi) od 1 do velAlbuma • Drugič so kandidati mesta od 1 do velAlbuma - 1 • tretjič ...

  12. Generiranje različnih • namestoizbiredamo "zadnjo" sličico, dabo v naslednjemkoraku OKsajzadnjemesto ne bomoupoštevali! • Sličicanamestuizbire pa tako ne boprišlaveč v poštev • 1 2 3 4 5 ...... Izbiramo med 1 – 5. Denimo da izberemo 2 • 1 5 3 4 2 .... Izbiramo med 1 – 4. Denimo, da izberemo 4 • 1 5 3 4 2 .... Izbiramo med 1 – 3. Denimo, da izberemo 2 (torej dejansko sličico 5!) • 1 3 5 4 2 ... Konec. Izbrali smo torej 2, 4 in 5!

  13. Generiranje različnih i = 1 slike = ['*'] # element na mesto 0 ni pomemben while i <= velAlbuma : slike.append(i)#tatabelaoznačuještevilkosličice i = i + 1 i = 1 while i <= 6 : #Izberemoiztabelesliksličico. Prvič so kandidatimestaod 1 do velAlbuma #Drugič so kandidatimestaod 1 do velAlbuma – 1, tretjič ... izbira = random.randint(1, velAlbuma - (i - 1)) slicica = slike[izbira] slike[izbira] = slike[velAlbuma - (i - 1)] #namestoizbiredamo "zadnjo" sličico, dabo v naslednjemkoraku OK #sajzadnjemesto ne bomoupoštevali! Sličicanamestuizbire pa #tako ne boprišlaveč v poštev if not album[slicica] : #nimam je še! kolikoManjka = kolikoManjka - 1 album[slicica] = True #nalepim i = i + 1

  14. Več nakupov • Doslej izvedli le en nakup • Da bo rezultat smiselen – vso polnitev ponoviti velikokrat • Celoten program damo v zanko • Ta se izvede denimo 1000x • Računamo povprečje • Vsakič k vsoti prištejemo število potrebnih nakupov za tekočo polnitev albuma • Na koncu vsoto delimo s 1000

More Related