1.13 Käyttäjältä kysyminen, input/raw_input
Jo aloittelevat ohjelmoijat voivat tehdä Python-kielellä pienen pelin. Siihen liittyy tietojen kysyminen käyttäjältä. Python-kielessä on helppo toiminto input(’kysymys’), jolla käyttäjältä voidaan kysyä jokin kysymys (kysymys tulostuu toimintaikkunaan, vastaus kirjoitetaan kysymyksen perään) ja input-funktio lukee käyttäjän vastauksen. Python-kielen vanhemmissa versioissa sama funktio toimii nimellä raw_input(kysymys). Input tulkitsee käyttäjän vastauksen aina merkkijonoksi, joten mikäli käyttäjän vastausta käytetään laskuissa, se tulee tapauksesta riippuen muuttaa kokonais- tai desimaaliluvuksi int(’merkkijono’) tai float(’merkkijono’)-funktioita käyttäen.
Input/raw_input ei välttämättä toimi oikein kaikilla online-alustoilla.
Pelien rakenne sisältää usein while True, input ja if – break- rakenteita. Pieni, mitään järkevää tekemätön peli, voisi olla:
Alla on pari esimerkkiä pienistä peleistä (tutustu ensin koodiin, sitten voit kopioida koodin ja kokeilla pelejä):
Iän laskeminen. Peli toimii Spyderissä, Eclipsessä ja repl.it:ssä. Koodi on tekstimuodossa, jotta sen voi kopioida helposti.
Koodi alkaa tästä:
import datetime
paivays = datetime.datetime.now()
print(’Milloin olet syntynyt?’)
syntymaAika = input(’Kirjoita muodossa pp.kk.vvvv ’)
sPaiva = int(syntymaAika[0:2])
sKuukausi = int(syntymaAika[3:5])
sVuosi = int(syntymaAika[6:10])
vv = paivays.year – sVuosi
kk = paivays.month – sKuukausi
pp = paivays.day – sPaiva
if
pp kk -= 1
pp += 30
if
kk vv -= 1
kk += 12
print (’Olet ’ + str(vv) + ’ vuotta, ’ + str(kk) + ’ kuukautta ja ’ + str(pp) + ’ paivaa vanha.’)
Pelin toiminta:
rivi 1: tuodaan datetime-moduulin toiminnat käyttöön
rivi 2: haetaan nykyinen päivämäärä ja tallennetaan se muuttujaan paivays.
rivi 4: tulostetaan kysymys
rivi 5: input tulostaa kysymyksen ja lukee käyttäjän vastauksen, tallennetaan merkkijono muuttujaan syntymaAika
rivit 7-9: poimitaan syntymaAika-merkkijonosta patka tietyillä indekseillä, muutetaan merkkijono kokonaisluvuksi ja tallennetaan muuttujiin
rivit 11-13: lasketaan ikä
rivit 15-21: otetaan huomioon iän laskemisessa negatiiviset tulokset
rivi 23: tulostetaan tiedot käyttäjälle
Arvaa luku- peli. Peli toimii Spyderissä, Eclipsessä ja repl.it:ssä. Koodi on tekstimuodossa, jotta sen voi kopioida helposti. Pelistä pääsee pois arvaamalla oikein, painamalla toimintaikkunan punaista neliötä tai stop-näppäintä.
Lisää koodia:
import random
luku = random.randint(0, 100)
arvaus = int(input(’Arvaa luku 0 – 100! ’))
while True:
if arvaus == luku:
print (’Arvasit oikein, hienoa! ’)
break
elif luku > arvaus:
arvaus = int(input(’Luku on suurempi, kokeile uudestaan! ’))
else:
arvaus = int(input(’Luku on pienempi, kokeile uudestaan! ’))
Pelin toiminta:
rivi 1: tuodaan random-moduulin toiminnot käyttöön
rivi 3: arvotaan jokin luku väliltä 0-100 ja tallennetaan se muuttujaan luku.
rivi 4: input tulostaa kysymyksen ja lukee käyttäjän vastauksen. Int() muuttaa vastauksen kokonaisluvuksi.
rivi 6: luodaan silmukka, jota toistetaan kunnes silmukka katkaistaan.
rivi 7: jos käyttäjä arvaa oikein, …
rivi 8 … niin tulostetaan käyttäjälle tieto oikeasta arvauksesta ja ….
rivi 9 … katkaistaan while-silmukka. Koodin lukua jatketaan riviltä 15.
rivi 10: jos arvaus ei ollut oikein, mutta arvattu luku on liian pieni, niin …
rivi 11: … annetaan käyttäjälle lisävinkki. While-silmukka aloitetaan alusta.
rivi 12: muussa tapauksessa (eli arvaus ei ollut oikein, eikä liian pieni, joten se oli liian iso)…
rivi 13: … annetaan käyttäjälle lisävinkki. While-silmukka aloitetaan alusta.
rivi 15: lopputervehdys käyttäjälle