Tagasi Python-le

Järjend ehk list

Selles peatükis:

  • saad teada, mis on järjend ehk list,
  • õpid, kuidas järjendeid programmeerimises kasutatakse,
  • koostad tuntud lõbusa paberimängu “Poiss ja tüdruk” eeskujul juhuvalikutega programmi.

Järjendi koostamine

Siiani on paaril korral vaja läinud loetelu erinevatest valikutest. Oleme need paigutanud kantsulgude sisse ja eraldanud üksteisest komadega. Meenutuseks allolev näide.

NB! Kantsulgusid saab siis, kui kasutad klaviatuuril Alt Gr klahvi ja numbreid 8 ning 9.

kingivalik = ["kommid", "küpsised", "mänguauto", "nukk", "lauamäng"]

Niisugust loetelu, kus elementidel on kindel järjekord nimetatakse Pythonis järjendiks ehk list’iks. Selleks, et koodis täpselt kirjeldada, mitmendat elementi valikust kasutatakse, võetakse appi indeks. Indeksid algavad 0-st ja meie näetes oleks selleks siis “kommid”. Edasi vastaks”küpsised” indeksile 1, “mänguauto” indeksile 2 jne.

Selleks, et mingit kindlat elementi kuvada, kasutame vana head print() käsku koos indeksiga.

Harjutused

Loo uus programmifail ja salvesta see. Nüüd kirjuta järgnev programm, mis määrab, et print() kuvab meile järjendist elemendi kohal 0.

kingivalik = ["kommid", "küpsised", "mänguauto", "nukk", "lauamäng"]
print(kingivalik[0])

Võid proovida vahetada print() järel kantsulgude sees 0 mõne muu numbri vastu. Programmi käivitades prinditakse numbrile vastav element.


Kui tahaks nüüd näha kogu listi, kasutame loop-stüklit ja muutujat item. Loop käivitub ühe korra ja item toob järjendist ükshaaval välja kõik elemendid ning need prinditakse meile üksteise alla.

kingivalik = ["kommid", "küpsised", "mänguauto", "nukk", "lauamäng"]
for item in kingivalik:
    print(item)

Sa saad järjendist elemete uutega asendada. Näiteks kustutame ära esimese (indeksiga 0) elemendi kommid ja asendame porganditega.

kingivalik = ["kommid", "küpsised", "mänguauto", "nukk", "lauamäng"]
kingivalik[0]="porgandid"
print(kingivalik[0])

Kui salvestad ja käivitad programmi, siis prinditakse kommide asemel porgandid.


Kui tahaksid elementi lihtsalt ära kustutada, siis kasutame meetodit del ning kustutame ära kommid. Seega saavad küpsised elemendiks, mis vastab indeksile 0 ja programmi käivitamiseks prinditaksegi meile küpsised.

kingivalik = ["kommid", "küpsised", "mänguauto", "nukk", "lauamäng"]
del kingivalik[0]
print(kingivalik[0])

Järjendisse saab ka asju juurde liita. Selleks on olemas meetod append, mis lisab uue elemendi järjendi lõppu. Järgmine programm lisab kingivalikute järjendisse viimaseks Lego ning prindib siis kõik elemendid üksteise all välja. Proovi!

kingivalik = ["kommid", "küpsised", "mänguauto", "nukk", "lauamäng"]
kingivalik.append("Lego")
for item in kingivalik:
    print (item)

Kuidas tundub? On siiani arusaadav? Vaatame siis edasi ja liidame mõned järjendid omavahel kokku. Tee selleks uus programm. Loo kaks erinevad järjendit ning määra, et lõplik kingivalik on kahe eraldiseisva järjendi summa. F5 käivitab programmi, mis prindib elemendid mõlemast järjendist üksteise alla.

kingivalik1 = ["kommid", "küpsised", "jäätis", "piparkoogid", "kringel"]
kingivalik2 = ["droon", "vildikad", "mänguauto", "nukk", "lauamäng"]
kingivalik = kingivalik1 + kingivalik2
for item in kingivalik:
    print (item)

Mäng “Poiss ja tüdruk”

Kes ei oleks seda lõbusat mängu mänginud, kus seltskonnas kirjutatakse paberiribale üks poisinimi, volditakse kinni ja antakse järgmisele mängijale. Järgmine mängija kirjutab ribale ühe tüdruku nime, voldib kinni ja annab edasi. Seejärel kirjutatakse kohtumispaik, mida üks ja teine ütles ning mis siis juhtus. Mängu lõpus volditakse paberiribad lahti ning loetakse lood ette.

Kui nüüd mõelda, siis moodustavad ju kõik poiste nimed ja tüdrukute nimed ja kohtumispaigad jne omamoodi järjendid. Prooviks seda mängu mängida Pythonis!

Esimese asjana peaks siis koostama mõned järjendid. Nii nagu tegid kingivalikuga. Kirjuta need üksteise alla ning lisa igale järjendile võrdusmärgi järele kantsulgude sisse näiteks 3 elementi. Näiteks:

tudruk = ["Pipi Pikksukk", "Lumivalgeke", "Rapunzel"]
poiss = ["Kr...

Mida naljakamad suudad välja mõelda, seda toredam saab tulemus.

Nüüd kui järjendid on olemas tuleb välja mõelda lugu, mille seest juhuvalikuga elemente välja kutsuma hakata. Juhuvaliku jaoks peame importima random mooduli ja seejörel kasutamine while-tsüklit. While true hoiab tsükli nii kaua käimas kuni saadakse käsk tsükli peatamiseks.

import random
while True:

Loo alguses kohtuvad poiss ja tüdruk. Programm valib kummagi juhuslikult vastavatest järjenditest.

Kirjuta nüüd print() abil ja näite eeskujul üksteise alla kogu vajalik lugu. Vajalik lisatekst pane sobivasse kohta jutumärkide vahele.

Selleks, et programm pärast valikute tegemist peatuks prindime ühe tühja rea ning lisame inputi, mis alustab while-loopi uuesti kui kasutaja Enterit vajutab.

Kas õnnestus? Kui tahad, saad nüüd oma programmi veelgi lihvida, lisada uusi tegelasi, kohtumispaiku ning vastuseid.

Minu programm sai selline.

naine = ["Pipi Pikksukk", "Lumivalgeke", "Rapunzel"]
mees = ["Mr Bean", "jõuluvana", "Käsna-Kalle"]
koht = ["Nissi kaupluses", "pimedas metsas", "teisel planeedil"]
nriided = ["roosa kleit", "draakoni kostüüm", "sukeldumismask"]
mriided = ["ujumispükse", "supermani keepi", "korstnapühkija mundrit"]
njutt = ["'Kas süüa tahad?'", "'Mis vahid?'", "'Mis su nimi on?'"]
mjutt = ["'Ei tea.'", "'Lähme Hessi!'", "'Olen väga julge!'"]
pealtnagija = ["päkapikk", "kuri õpetaja", "robot"]
arvamus = ["'Oi aegu, oi kombeid!'", "'Häbi peaks teil olema!'", "'Te olete nii kena paar!'"]

import random
while True:
    print(random.choice(naine), "ja", random.choice(mees), "kohtusid", random.choice(koht))
    print("Naisel oli", random.choice(nriided))
    print("Mees kandis", random.choice(mriided))
    print("Naine ütles: ", random.choice(njutt))
    print("Mees vastas: ", random.choice(mjutt))
    print("Seda nägi pealt", random.choice(pealtnagija))
    print("Ta ütles: ", random.choice(arvamus))

    print()
    input("Vajuta Enter ja loo uus jutt!")
    print()

Kasutatud allikad: