En molts programes ens trobarem coses repetitives que ens poden allargar el programa innecessàriament. En molts casos, l'ús adequat de llistes combinades amb bucles for ens permetrà escurçar significativament els programes.
Anem a veure-ho amb un exemple. El següent programa encén quatre LED seguint una seqüència:
import digitalio import board import time
ledA0 = digitalio.DigitalInOut(board.A0) ledA1 = digitalio.DigitalInOut(board.A1) ledA2 = digitalio.DigitalInOut(board.A2) ledA3 = digitalio.DigitalInOut(board.A3) ledA0.direction = digitalio.Direction.OUTPUT ledA1.direction = digitalio.Direction.OUTPUT ledA2.direction = digitalio.Direction.OUTPUT ledA3.direction = digitalio.Direction.OUTPUT
ledA0.value = False
ledA1.value = False
ledA2.value = False
ledA3.value = False
while True:
ledA0.value = True
ledA3.value = False
time.sleep(0.5)
ledA1.value = True
ledA0.value = False
time.sleep(0.5)
ledA2.value = True
ledA1.value = False
time.sleep(0.5)
ledA3.value = True
ledA2.value = False
time.sleep(0.5)
Observem que moltes de les instruccions es repeteixen quatre cops, una vegada per a acada LED. Ara presentem un programa que fa el mateix de manera més compacta.
import digitalio import board import time
# Llista amb les quatre sortides que fem servir potes = [board.A0, board.A1, board.A2, board.A3] led = [0] * 4 # Creem una llista de quatre elements [0] # Si no creem aquesta llista "buida" despres no entendra # que escriguem led[k]
# Ara guardarem un objecte sortida a cada posicio de la llista
# I apagarem tots els LED
for k in range (4):
led[k] = digitalio.DigitalInOut(potes[k])
led[k].direction = digitalio.Direction.OUTPUT
led[k].value = False
while True:
for k in range (4):
j = k + 1
if j > 3:
j = 0
led[k].value = False
led[j].value = True
time.sleep(0.5)
Hem guardat les quatre potes que fem servir en una llista i hem creat una llista per a les quatre sortides. La línia en la que creem la llista és molt important ja que si no hi fos no podríem adreçar individualment els elements de la llista. La creació dels objectes i l'assignació de direccions i valors les fem dins un bucle for. Un altre bucle for s'encarrega d'encendre i apagar els LED.

Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.