Loops e Listas

Loops

Agora, suponha que, em vez de acender todos os LEDs de uma só vez, gostaríamos de acendê-los um a um, com uma breve pausa entre cada um. A princípio, você pode pensar que isso exigiria 20 linhas de código Python: 1 cp.pixel mais 1 time.sleep para cada um dos 10 LEDs. Lembre-se do Makecode: podemos simplificar isso usando loops - veja como um loop for pode ser implementado em Python:

from adafruit_circuitplayground import cp
import time

# Cores
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)

cp.pixels.brightness = 0.3
cp.pixels.fill(BLACK)

while True:
    for i in range(len(cp.pixels)):
        cp.pixels[i] = RED
        time.sleep(.05)
    time.sleep(1)

    for i in range(len(cp.pixels)):
        cp.pixels[i] = GREEN
        time.sleep(.05)
    time.sleep(1)

Listas

E se quisermos alternar entre mais cores além de vermelho e verde? Poderíamos adicionar 4 linhas extras para cada cor… ou, melhor ainda, podemos criar uma lista de cores e usar um loop para iterar entre as cores na lista:

from adafruit_circuitplayground import cp
import time

# Cores
BLACK = (0, 0, 0)
RED = (255, 0, 0)
PINK = (255, 100, 120)
ORANGE = (255, 100, 0)
YELLOW = (255, 255, 0)
GREEN = (0, 255, 0)
CYAN = (0, 255, 255)
PURPLE = (255, 0, 255)
BLUE = (0, 0, 255)
LIGHT_BLUE = (80, 200, 175)
WHITE = (255, 255, 255)

colors = [
    PINK,
    RED,
    ORANGE,
    YELLOW,
    GREEN,
    CYAN,
    PURPLE,
    BLUE,
    LIGHT_BLUE,
    WHITE
]

cp.pixels.brightness = 0.3
cp.pixels.fill(BLACK)

while True:
    for color in colors:
        for i in range(len(cp.pixels)):
            cp.pixels[i] = color
            time.sleep(.05)
        time.sleep(1)

Observe como há um loop dentro de um loop — às vezes chamado de nested loop — e é uma construção de programação extremamente poderosa. Se reescrevêssemos este programa sem loops, seriam necessárias 10x(10x2+1)=210 linhas de código Python!

Funções Integradas

Observe o uso de len e range nos programas acima — essas são funções integradas. Funções integradas são ferramentas úteis incorporadas à linguagem Python (e outras linguagens) que ajudam os programadores a realizar tarefas comuns.

len(s)

Retorna o comprimento (o número de itens) de um objeto. O argumento pode ser uma sequência (como uma string, bytes, tupla, lista ou intervalo) ou uma coleção (como um dicionário, conjunto ou conjunto congelado).

range(stop)

Em vez de ser uma função, range (intervalo) é na verdade um tipo de sequência imutável, conforme documentado em Intervalos e tipos de sequência — lista, tupla, intervalo.

Desafio

Modifique o programa acima para tornar o Botão A um botão de “limpar”: quando o usuário pressionar A, apague todos os pixels. Deixe o programa continuar rodando, ligando-os novamente um por um.

Referências

Thanks! We hope you found what you are looking for. Please feel free to contribute via Github.