MicroPython — slučajni brojevi i osnovni algoritmi


U mnogim igrama i projektima potrebno je da računar donosi nasumične odluke ili da obrađuje podatke po određenim pravilima. U ovoj lekciji naučićeš kako se u MicroPython-u koriste slučajni brojevi i kako izgledaju jednostavni algoritmi.


Slučajni brojevi (random)


MicroPython ima modul random koji omogućava generisanje slučajnih brojeva. To se često koristi u igrama, simulacijama i mini-projektima.



import random

# generiše ceo broj između 1 i 6
broj = random.randint(1, 6)
print(broj)

Funkcija randint(a, b) vraća ceo broj između a i b, uključujući oba kraja.


Primer 1: bacanje kockice



from microbit import *
import random

while True:
    # slučajan broj od 1 do 6
    kocka = random.randint(1, 6)
    display.show(kocka)   # prikaži broj na LED matrici
    sleep(1000)           # sačekaj 1 sekundu pre sledećeg bacanja

Svake sekunde prikazuje se novi broj od 1 do 6 — kao bacanje kockice.


Primer 2: slučajna animacija srca i osmijeha


from microbit import *
import random

slike = [Image.HEART, Image.HAPPY, Image.SAD]

while True:
    izbor = random.choice(slike)  # bira nasumičnu sliku iz liste
    display.show(izbor)
    sleep(500)

random.choice(lista) bira slučajan element iz liste — zgodno za mini-igre i animacije.


Šta je algoritam?


Algoritam je tačan redosled koraka koji rešava neki problem. U programiranju to znači:

  • uzmi podatke
  • obradi ih po pravilima
  • dobij rezultat

Primer jednostavnog algoritma



broj = 7

if broj > 5:
    display.scroll("Vece od 5")
else:
    display.scroll("Manje ili jednako 5")

Ovaj program proverava da li je broj veći od 5 i prikazuje poruku.


Rad sa listama i algoritmi


Liste (nizovi) se često koriste za čuvanje više vrednosti. Na njima možemo primenjivati algoritme.



brojevi = [3, 7, 2, 9, 5]

# pronalaženje najvećeg broja
najveci = brojevi[0]
for b in brojevi:
    if b > najveci:
        najveci = b

display.scroll(najveci)

Ovo je primer algoritma za pronalaženje maksimuma.


Primer: pronalaženje najmanjeg broja


najmanji = brojevi[0]
for b in brojevi:
    if b < najmanji:
        najmanji = b

display.scroll(najmanji)

Jednostavno sortiranje (ideja)


Sortiranje znači da brojeve poređamo od najmanjeg ka najvećem. U MicroPython-u često je dovoljno razumeti ideju, ne i savršenu efikasnost.



brojevi = [4, 1, 3, 2]

for i in range(len(brojevi)):
    for j in range(i + 1, len(brojevi)):
        if brojevi[j] < brojevi[i]:
            brojevi[i], brojevi[j] = brojevi[j], brojevi[i]

display.scroll(brojevi[0])  # prikaži najmanji broj

Povezivanje sa prethodnim lekcijama


Ova lekcija se prirodno povezuje sa:


Mini zadaci — vežba random i algoritama


Zadatak 1

Napravi program koji prikazuje slučajan broj od 1 do 10 na LED matrici svake sekunde. Dodaj sleep() da animacija ne ide prebrzo.


Zadatak 2

Kreiraj listu sa 7 slučajnih brojeva (0–9) i napiši algoritam koji pronalazi najveći broj i prikazuje ga.


Zadatak 3

Napravi mini-igricu: - Pritisni dugme A da generišeš nasumičan broj od 1 do 6. - Pritisni dugme B da proveriš da li je broj veći od 3 i prikaže odgovarajuću sliku (HEART ili SAD).


Zadatak 4 (izazov)

Napravite program koji generiše 10 slučajnih brojeva, čuva ih u listu i izbroji koliko ih je veće od 5. Prikaži rezultat na LED matrici.


Zadatak 5 (napredni)

Napravite animaciju sa slučajnim izborom slika (HEART, HAPPY, SAD). Svaki put kada se pritisne dugme A, promeni sliku na novu nasumičnu. Kombinujte while True, if button_a.is_pressed() i random.choice().


Povezivanje sa kontrolnim naredbama i promenljivama


U MakeCode‑u si naučio/la kako promenljive i kontrolne naredbe (ako/onda) funkcionišu zajedno u projektima poput brojača klikova i mini igara. Te primere i objašnjenja možeš pronaći na strani:
Upotreba promenljivih i kontrolnih naredbi u projektima micro:bit‑a

Na toj stranici ćeš videti praktične primere korišćenja promenljivih i kontrolnih naredbi u MakeCode okruženju — kao što su:

  • brojač pritisaka tastera A
  • kombinacija A, B i A+B za različite akcije
  • aritmetičke operacije i vizuelni prikaz rezultata
To je odlična osnova da razumeš kako da iste ideje implementiraš u MicroPython‑u.

5 primera u MicroPython‑u


Primer 1 — Brojač pritisaka

Brojač pritisaka tastera A: svaki pritisak povećava promenljivu i prikazuje je.


from microbit import *

broj_klikova = 0

while True:
    if button_a.was_pressed():  # detektuje A pritisak
        broj_klikova += 1       # povećava brojač
        display.show(broj_klikova)
    sleep(100)

Ovo je MicroPython ekvivalent MakeCode brojaču klikova iz palete Variables.


Primer 2 — Interaktivna računica brojeva

Pritisni A da generišeš nasumičan broj a, B da generišeš b, i A+B da prikažeš njihov proizvod.


from microbit import *
import random

a = 0
b = 0

while True:
    if button_a.was_pressed():
        a = random.randint(1,10)
        display.show(a)
    if button_b.was_pressed():
        b = random.randint(1,10)
        display.show(b)
    if button_a.is_pressed() and button_b.is_pressed():
        proizvod = a * b
        display.show(proizvod)
    sleep(100)

Ovo je Python verzija MakeCode primera sa proizvodom brojeva.


Primer 3 — Brojevi veći od srednje vrednosti

Generiši listu random brojeva i prikazuj koliko njih prelazi srednju vrednost liste.


from microbit import *
import random

while True:
    lista = [random.randint(0,9) for _ in range(7)]
    srednja = sum(lista) / len(lista)
    count = 0
    for n in lista:
        if n > srednja:
            count += 1
    display.show(count)
    sleep(2000)

Primer kombinuje random brojeve, liste, petlje i algoritamsku obradu podataka — sve teme koje se nadovezuju na MakeCode promenljive i Math.


Primer 4 — Sabiranje parova

Generiši par nasumičnih brojeva i prikaži njihov zbir kada se pritisne A+B.


from microbit import *
import random

x = random.randint(0,10)
y = random.randint(0,10)

while True:
    if button_a.was_pressed():
        display.show(x)
    if button_b.was_pressed():
        display.show(y)
    if button_a.is_pressed() and button_b.is_pressed():
        zbir = x + y
        display.show(zbir)
    sleep(100)

Vežbaš rad sa promenljivama i grananjem uslova — ekvivalent MakeCode sabiranju iz palete Math.


Primer 5 — Matematički izazov: kvadrat i linearna funkcija

Pritisni A da prikazuješ kvadrat nasumičnog broja, B da prikazuje linearnu funkciju (npr. 2n+1).


from microbit import *
import random

while True:
    if button_a.was_pressed():
        n = random.randint(0,9)
        display.show(n * n)   # kvadrat broja
    if button_b.was_pressed():
        m = random.randint(0,9)
        display.show(2*m + 1) # linearna funkcija 2n+1
    sleep(100)

Ovaj primer nadograđuje MakeCode matematičke operacije koristeći MicroPython aritmetiku.

Praktični zadaci — Random brojevi i algoritmi


U ovim zadacima vežbaćeš rad sa slučajnim brojevima, promenljivama i kontrolnim naredbama u MicroPython-u, uz poređenje sa MakeCode verzijom.


Zadatak 1 — Brojač nasumičnih klikova

Napravi brojač pritisaka dugmeta A, ali svaki pritisak dodaje nasumičan broj od 1 do 3 umesto 1.


from microbit import *
import random

brojac = 0

while True:
    if button_a.was_pressed():
        brojac += random.randint(1,3)
        display.show(brojac)
    sleep(100)

Razlika sa MakeCode: U MakeCode-u bi koristio promenljivu i blokove "change variable by random integer 1 to 3", a MicroPython koristi funkciju random.randint() i standardnu aritmetiku.


Zadatak 2 — Nasumična animacija

Kreiraj animaciju koja prikazuje nasumično izabranu ikonu (HEART, HAPPY, SAD) na LED matrici svake sekunde.


from microbit import *
import random

ikonice = [Image.HEART, Image.HAPPY, Image.SAD]

while True:
    izbor = random.choice(ikonice)
    display.show(izbor)
    sleep(1000)

Razlika sa MakeCode: U MakeCode Python simuliraš "pick random" blok koji bira iz liste ikona, dok MicroPython koristi random.choice().


Zadatak 3 — Igra pogodaka

Prikaži nasumičan broj od 1 do 5. Ako korisnik pritisne dugme A, proveri da li je pogodio broj 3 i prikaži OK ili X.


from microbit import *
import random

while True:
    broj = random.randint(1,5)
    display.show(broj)
    sleep(500)
    if button_a.was_pressed():
        if broj == 3:
            display.show("OK")
        else:
            display.show("X")
    sleep(500)

Razlika sa MakeCode: MakeCode koristi blokove "if then else" i promenljivu za nasumični broj, MicroPython koristi standardni if/else i random.randint().


Zadatak 4 — Sabiranje nasumičnih brojeva

Svaki pritisak dugmeta B generiše novi nasumični broj 0-9. Pritisak dugmeta A prikazuje zbir svih do sada generisanih brojeva.


from microbit import *
import random

suma = 0

while True:
    if button_b.was_pressed():
        n = random.randint(0,9)
        suma += n
        display.show(n)
    if button_a.was_pressed():
        display.scroll(suma)
    sleep(100)

Razlika sa MakeCode: U MakeCode-u koristiš promenljivu "suma" i blokove "change variable by random integer" i "show number"; u MicroPython-u koristiš promenljivu i += operator.


Zadatak 5 — Mini brojačka igra sa granicom

Generiši 10 nasumičnih brojeva 1-6 i prikaži koliko ih je veće od 3. Pritisak dugmeta A prikazuje rezultat.


from microbit import *
import random

lista = [random.randint(1,6) for _ in range(10)]

while True:
    if button_a.was_pressed():
        count = 0
        for n in lista:
            if n > 3:
                count += 1
        display.scroll(count)
    sleep(100)

Razlika sa MakeCode: MakeCode koristi "for each item in list" blok, "if then" i promenljive; MicroPython koristi standardnu for petlju i if uslov.