Implementirajmo još jedan jednostavan program: igru “pogodi broj.” Zamislimo prvo ovu igru kao da je igraju dvije osobe. Jedan igrač tajno odabire broj u nekom rasponu, na primjer između jedan i sto. Drugi igrač zatim pokušava pogoditi broj tako što kaže neki broj koji je prvi igrač mogao odabrati i kaže ga prvom igraču. Prvi igrač tada odgovara s “Točno!” ukoliko je drugi igrač pogodio broj ili s “Ne, odabrani broj je veći.” ili “Ne, odabrani broj je manji.” kako bi dao drugom igraču dodatne informacije za pogađanje broja.
Kako ovo isprogramirati? Korisno je prvo riječima opisati najjednostavniji oblik ovog programa.
program mora odabrati slučajan broj u određenom rasponu
program mora obavijestiti korisnika o tome u kojem rasponu se traži broj
korisnik mora unijeti neki broj
program mora provjeriti da li je taj broj odabrani broj i zatim:
ako je korisnik pogodio broj, ispisati mu da je uspješno završio igru
ako korisnik nije pogodio broj, ispisati mu da li je traženi broj veći ili manji i zatražiti ga da unese novi broj
koraci 3. i 4. se moraju ponavljati sve dok korisnik ne uspije pogoditi broj
Kao što vidimo, u ovom programu potrebna nam je mogućnost odabira nekog slučajnog broja. Ovo je česta potreba u programiranju pa većina operativnih sustava i programskih jezika uključuje ovu mogućnost. Za vježbu, pokušajte sami pronaći kako s Pythonom generirati slučajan cijeli broj. Ovakve potrebe, naime, ne valja učiti na pamet već se potrebno moći sam snaći pretraživanjem dokumentacije ili weba.
Pokušajte sami implementirati opisani program prije no što nastavite čitati skriptu!
Kada pokrenemo prikazani program i unosimo brojeve sve dok ne pogodimo traženi broj ispis izgleda otprilike ovako:
Kao što vidimo, u Pythonu je odabir slučajnih brojeva potpomognut
standardnim modulom random. Funkcija za odabir slučajnih cijelih
brojeva zove se randint i njeno korištenje za odabir slučajnog broja
između 1 i 100 izgleda ovako: n = random.randint(1, 100). Ova funkcija
uključuje obje granice kao mogući rezultat, odnosno u prijašnjem slučaju
mogu se odabrati i 1 i 100. Naravno, ovo su detalji koje također
nije potrebno znati na pamet, jednostavno je previše toga i detalji se
mogu razlikovati među programskim jezicima. Sjetite se da ako nas
zanimaju detalji vezani za tu funkciju, to možemo lako dobiti tako što u
Python komandnu liniju uvezemo modul random s import random, a zatim
izvršimo help(random.randint).
U svakom slučaju, ovo je relativno jednostavan program koji opet
demonstrira mogućnosti petlje while. Vježbe radi, doraditi ćemo ga
kako bi demonstrirali razlike između petlji for i while. Program
sada korisniku dopušta pogađanje broja bilo koji broj puta. Kako
doraditi program da dopušta samo određen broj pokušaja? Drugim riječima,
ako korisnik prebaci, na primjer, pet ili deset pokušaja, program mu
treba javiti da nije uspio pogoditi broj u dozvoljenom broju pokušaja i
završiti igru.
Pokušajte sami implementirati ovu nadogradnju.
Rješenje koje koristi petlju while bi moglo izgledati ovako. Korisniku
smo u ispisu prikazali i broj pokušaja.
Ovo možemo riješiti i petljom for. Sada naime, znamo da kod želimo
ponoviti točno n puta (dozvoljen broj pokušaja) što pogoduje korištenju
petlje while. Prikazano je i dobar primjer za korištenje mogućnosti
for ... else.
Rješenje petljom for ima par linija kôda manje i nekima može biti
elegantnije. U ovom slučaju svejedno je koji pristup odaberemo pa je
najbolje odabrati onaj koji nam je samima najlogičniji. U oba slučaja
program će se ponašati identično i njegovo izvršavanje može proizvesti
sljedeći ispis:
Ovaj program je sada više-manje gotov.