110 likes | 251 Views
Zgled. Ugani število. Problem. Napišimo program, ki si “ izmisli ” naključno število , potem pa nas v zanki sprašuje , katero je izmišljeno število . Če število uganemo , nas program pohvali in se zaključi , če pa ga ne uganemo , nam predlaga , da poskusimo še enkrat . .
E N D
Zgled Ugani število
Problem • Napišimo program, kisi “izmisli” naključnoštevilo, potem pa nas v zankisprašuje, katero je izmišljenoštevilo. Češtevilouganemo, nas program pohvali in se zaključi, če pa ga ne uganemo, nampredlaga, daposkusimošeenkrat.
Načrtprograma • generiramonaključnoštevilo in sigazapomnimo v spremenljivkistevilo. • Obvestimouporabnikaprograma (igralca), kajpričakujemoodnjega (pravilaigre). • Ponavljamonaslednjipostopek: • pozovemouporabnika, najvpišeštevilo: • če se prebranošteviloujema z naključnogeneriranim (stevilo), uporabnikapohvalimo in program končamo; • siceruporabnikupovemo, daštevilaniuganil.
Neskončna zanka whileTrue: ukaz 1 ukaz 2 … ukaz n • Nikoli je ni konec! • A enkrat bi bilo pa le dobro nehati …
"Pobeg" iz zanke • Shema whileTrue: ukaz 1 ukaz 2 if nek_pogoj: zaključi zanko ukaz 3 ukazZaZanko
Prisonbreak • Ukaz break zaključiprvozanko,znotrajkatere se nahaja. • Shema whileTrue: ukaz 1 ukaz 2 if nek_pogoj: ukaz2a ukaz2b break ukaz 3 ukazZaZanko
Primer uporabe • Malo privlečen za lase • Sestavi funkcijo, ki izpiševsaštevilaod 1 do n, na koncu pa še 'KONEC' defenaDoDeset(n): st = 1 whileTrue: print(i) i = i + 1 if i > n: break print('KONEC')
Nazaj na Ugibanje importrandom def ugani(): stevilo = random.randint(1, 10) print("Izmislil sem si število med 1 in 10. Poskusi ga uganiti!") whileTrue: st = int(input("Katero število sem si izmislil?")) ifstevilo == st: print("Čestitam! Pa ti si genij!") break else: print("Ja ... Še se bo treba matrat...") print('Hvala za igro!')
Lahko tudi brez else importrandom def ugani(): stevilo = random.randint(1, 10) print("Izmislil sem si število med 1 in 10. Poskusi ga uganiti!") whileTrue: st = int(input("Katero število sem si izmislil?")) ifstevilo == st: print("Čestitam! Pa ti si genij!") break # break nas tako ali tako vrže ven, torej … print("Ja ... Še se bo treba matrat...") print('Hvala za igro!')
Omejimo število poskusov • Omejimoštevilomožnosti – recimona 5. • uvestimoramoštevecmožnosti. • Kako? • Predvsakimvpisomštevila s straniigralcagaopozorimonaštevilomožnosti. • Po uganjevanju in preverjanjurezultata se števecmožnostizmanjšazaena. • Če se zgodi, da se števeczmanjšananič, moramoigralcana to opozorititerzaključitiigro.
Program importrandom def ugani(): stevilo = random.randint(1, 10) print("Izmislil sem si število med 1 in 10. Poskusi ga uganiti!") moznosti = 5 whileTrue: print("Imaš še", moznosti, "možnosti") st = int(input("Katero število sem si izmislil: ")) ifstevilo == st: print "Čestitam! Pa ti si genij!") break # prvi izhod print("Ja ... Še se bo treba matrat ...") moznosti = moznosti - 1 ifmoznosti == 0: print("Joj joj joj. Izgleda, da ne bo šlo...") print("Število je " + str(stevilo)) break # in še drugi print('Hvala za igro!')