Page 60 - MATINF Nr. 9-10
P. 60
60 R.D. Albu
# funct , ie ce poate fi apelat˘a (repetat) oricˆand se dores , te def urmeazaZid():
urmarea unei linii. pasare.setMotors(20,30) # Arc pˆan˘a se ˆıntˆalnes , te zid
def lineTrack(): while (pasare.getDistance() > 30):
prag = 91 pass
if (pasare.getLine(’R’)<prag) and pasare.setMotors(0,0)
(pasare.getLine(’L’)>prag): #dreptul pe negru, stˆangul pasare.setMove(’B’,10,50) # ˆınapoi us , or
pe alb pasare.setTurn(’R’,90,50) # ˆıntoarcere dreapta
pasare.setMotors(30,0) # ˆıntoarce dreapta
elif (pasare.getLine(’R’)>prag) and while not(pasare.getButton(’A’)):
(pasare.getLine(’L’)<prag): # dreptul peste alb s , i followWall()
stˆangul peste negru
pasare.setMotors(0,30) # ˆıntoarcere stˆanga
else: # altfel merge ˆınainte
pasare.setMotors(30,30)
ı
# urmeaz˘a linia pˆan˘a cˆand se ˆntˆalnes , te un obstacol
while (pasare.getDistance() > 20):
lineTrack()
pasare.stop()
Se pot crea funct , ii care iau parametri. Este nevoie de un parametru numit dimensiune care
este numit ˆın interiorul parantezelor care urmeaz˘a numele funct , iei, care creeaz˘a o variabil˘a ˆın
interiorul funct , iei. Cˆand apelat , i funct , ia, furnizat , i o valoare pentru parametru, iar funct , ia este
executat˘ cu variabila parametrului egal˘ cu acea valoare.
a
a
def trasarePatrat2(marime): def lic˘arireTot(ros , u, verde, albastru):
for i in range(4): pasare.setBeak(ros , u, verde, albastru)
pasare.setMove(’F’,size,50) pasare.setTail(”all”, ros , u, verde, albastru)
pasare.setTurn(’R’,90,50) sleep(0.1)
pasare.stopAll()
trasarePatrat2(10) # apel funct , ie sleep(0.1)
for i in range(5): for i in range(20): # Testare
trasarePatrat2(random.randint(5,20)) lic˘arireTot(100,0,100)
a
Funct , iile pot returna s , i valori. De exemplu, o funct , ie ce returneaz˘ media valorilor senzorilor
a
de lumin˘a Finch. Codul care apeleaz˘ aceast˘a funct , ie poate utiliza apoi valoarea returnat˘a.
def lightMean(): # funct , ie ce returneaz˘a True cˆand Finch este intr-o anumit˘ a
return 0.5*(pasare.getLight(’L’)+pasare.getLight(’R’)) pozit , ie s , i False altfel
def estePozit , ie():
print(lightMean()) return pasare.getOrientation() == ”Pozit , ie”
while estePozit , ie ():
lic˘arireTot(0,100,0)
Dac˘ se dores , te redarea unei melodii cu Finch, este mai us , or s˘ se utilizeze o list˘a, care, ˆın
a
a
Python, este un grup de valori. Se poate defini o list˘a plasˆand elementele sale ˆın paranteze
p˘atrate, separate prin virgule. O bucl˘a for stabiles , te variabila i egal cu fiecare element dintr-o
list˘a. Listele pot fi create cu funct , ia range(), dar se poate utiliza orice list˘a cu o bucl˘a for.
Pentru cˆantecele, a se vede siteul [8],
Se pot accesa elemente individuale dintr-o list˘ utilizˆand paranteze p˘atrate. Elementele listei
a
sunt indexate de la 0 la lungimea listei minus 1. Funct , ia len() returneaz˘ lungimea unei liste. Se
a
a
poate utiliza o bucl˘ for cu funct , ia range() pentru a accesa elementele individuale ale unei liste.
note = [60,65,69,72,60] print(”Prima not˘a: ”, for i in range(len(note)): #Pen- b˘at˘ai = [1,0.5,1,2,0.5]
#List˘a note note[0]) tru fiecare not˘a din list˘a for i in range(len(note)):
for i in note: #Pentru fiecare print(”Ultima not˘a: pasare.playNote(note[i], 0.5) #Pentru fiecare not˘a din list˘a
not˘a din list˘a ”, note[len(note) - 1]) # red˘a nota pasare.playNote(note[i],
a
pasare.playNote(i, 0.5) sleep(0.5) b˘at˘ai[i]) #Red˘ nota
#red˘a nota sleep(b˘at˘ai[i])
sleep(0.5)
Se pot utiliza liste pentru a stoca datele colectate de la utilizator.