Változók és véletlen értékek

2019.11.08

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

  1. 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?
  2. 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:

© 2023 Minden jog fenntartva.
Az oldalt a Webnode működteti
Készítsd el weboldaladat ingyen! Ez a weboldal a Webnode segítségével készült. Készítsd el a sajátodat ingyenesen még ma! Kezdd el