Változók és véletlen értékek
Véletlen számok a shell-ben
A véletlen számok használatához szükségünk lesz a random modulra, amit, hasonlóan a tkinter modulhoz, importálnunk kell. Ezután használhatjuk a random.randrange() és random.randint() utasításokat.
import tkinter
import random
canvas = tkinter.Canvas()
canvas.pack()
canvas.create_text(100, 100, text = random.randint(10, 20))
canvas.create_text(150, 100, text = random.randint(5, 8))
Ez a program kiír két véletlen számot. Az egyiket a [100, 100] koordinátákra a <10, 20> intervallumból. A másikat a [150, 100] koordinátákra a <5, 8> intervallumból.
Kérdések
- Milyen számokat fog kiírni a program a [150, 100] koordinátákra, ha a random.randint(5, 8) utasítást a random.randrange(5) utasításra cseréljük?
- Milyen számokat ír ki a program a következő utasításokkal?
a) random.randrange(2)
b) random.randrange(1)
3. Mi a különbség a random.randint(3, 5) és a random.randrange(3, 5) utasítások között?
Ezeket az utasításokat írhatjuk parancs módban is (a shell-be). Az utasítás beírása után Entert nyomva azonnal végrehajtódik az. Ebben a módban gyorsabban le tudjuk tesztelni, milyen számokat fog sorsolni a számítógép. Ha nem futtatunk egy programot amiben importáltuk a random modult, akkor ezt megtehetjük a shell-ben is.

Próbáljátok ki, mit csinál a következő program!
import tkinter
import random
canvas = tkinter.Canvas()
canvas.pack()
canvas.create_line(0, 0, random.randrange(200), 100)
Hogy jobban lássuk, mi is történik a már futó programba is adhatunk újabb utasításokat a shell-en keresztül. Az Enter lenyomása után azonnal fog látszódni az eredmény a vásznon.
>>> canvas.create_line(0, 0, random.randrange(200), 100)
>>> canvas.create_line(0, 0, random.randrange(200), 100)
>>> canvas.create_line(0, 0, random.randrange(200), 100)

Változók és véletlen színek
Az alábbi program egy véletlen téglalapot rajzol ki, amelynek a bal felső pontja az [50, 100] koordinátákon van.
import tkinter
import random
canvas = tkinter.Canvas()
canvas.pack()
canvas.create_rectangle(50, 100, 50+random.randint(30, 100), 100+random.randint(30, 100))
Hogyan biztosítanánk be, hogy az [50, 100] koordinátákra egy véletlen négyzet rajzolódjon ki?
Ahhoz, hogy négyzetet kapjunk, a téglalapunknak egyforma szélességének és magasságának kell lennie. Minden random.randint() utasítás egy újabb véletlen számot generál. Néha előfordulhat, hogy kétszer is ugyanazt a számot fogja kisorsolni, de erre viszonylag kicsi az esély. Ezért csak egyszer kell sorsolnunk, és aztán azt megjegyezni. Majd használhatjuk ezt az értékek, ahol szükségünk van rá.
A programunkban létrehozunk egy nagysag nevű változót, kisorsolunk egy véletlen számot, és ebbe a változóba megjegyezzük. Majd használjuk őt a megfelelő helyeken.
import tkinter
import random
canvas = tkinter.Canvas()
canvas.pack()
nagysag = random.randint(30, 100)
canvas.create_rectangle(50, 100, 50+nagysag, 100+nagysag)
Változókat használhatunk arra is, hogy a koordinátákat tároljunk bennük:
x = 50
y = 100
nagysag = random.randint(30, 100)
canvas.create_rectangle(x, y, x+nagysag, y+nagysag)
Ha az x és y változókba is sorsolni fogjuk az értékeket, akkor véletlen helyen fognak felbukkanni a négyzetek.
x = random.randrange(200)
y = random.randrange(200)
nagysag = random.randint(30, 100)
canvas.create_rectangle(x, y, x+nagysag, y+nagysag)
A változókkal egyszerű műveleteket is végezhetünk.

Programozói módban ha ki akarjuk íratni egy változó értéket nem elég csak a nevét megadni, hanem a print() utasítást kell használnuk. A print(a) utasítás ki fogja írni a shell-be az a változó értékét. A print segítségével számítások eredményét is kiírathatjuk, pl: print(a*3+5) vagy print(6+2*4). Vagy egyszerűen szöveget: print('Hello').
A random.choice() utasítással a választhatunk egy véletlen elemet a megadott halmazból. Ezt használhatjuk, ha véletlen színt szeretnénk használni a felsorolt színek közül. Hogy ne legyenek túl hosszú soraink a kódunkban, ezért a kiválasztott színt egy változóban fogjuk megjegyezni.
import tkinter
import random
canvas = tkinter.Canvas()
canvas.pack()
x = random.randrange(200)
y = random.randrange(200)
nagysag = random.randint(30, 100)
szin = random.choice(('red', 'yellow', 'blue'))
canvas.create_rectangle(x, y, x+nagysag, y+nagysag, fill=szin)
Ábrák rajzolása véletlen helyre
Eddig konkrét helyekre rajzoltunk különböző ábrákat. Véletlen helyre egyszerű alakzatokat rajzoltunk, de rajzolhatunk akár összetettebb ábrákat is. Ha kijelöljük az ábra egy pontját és végiggondoljuk a többi pont relatív helyét ettől a kiválasztott ponttól.
A programunkba írhatunk jegyzeteket is, amiket a Python nem fog figyelembe venni. Az ilyen szöveget kommentárnak hívjuk, amit a Pythonban # jel után írunk. Néha hibakeresésnél szeretnénk, ha néhány utasítást nem hajtana végre a program, ilyenkor az utasítás elé tegyünk #-et. Ha több ilyen sorunk is van, akkor kijelölhetjük őket és válasszuk a menüben a Format/Comment Out Region lehetőséget, ami a sorok elé beszúr ## jeleket.

Ha ezt a robotot különböző helyekre szeretnénk rajzolni, akkor válasszunk egy alap pontot. Például lehet ez a robot testének bal felső pontja, jelöljük [x, y] -nal. Az összes többi pont koordinátája ettől a ponttól fog függni, hogy milyen messze vannak az [x, y] ponttól.
Átírás után így fog kinézni a programunk:
