Close menu
Close menu

Tunnistaudu

Kirjaudu

Etkö ole vielä jäsen?

Liity jäseneksi

1.13 Input-syöte

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:

1.13.1 input esimerkki.png

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