2. EXT: Combined iteration using zip
2.1. zip 2 lists
zip(list1, list2), is like a list of tuples.list(zip(list1, list2)), the list of tuples below is: [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]for num, letter in tuple_list:from microbit import *
list1 = [1, 2, 3, 4]
list2 = ['a', 'b', 'c', 'd']
for num, letter in zip(list1, list2):
display.scroll(num, delay=80)
display.scroll(letter, delay=80)
freqs = range(1760, 880, -128) produces a list like object containing 7 frequencies.break so that the sounds can be easily stopped.from microbit import *
import music
freqs = range(1760, 880, -128)
animal_images = [
Image.RABBIT,
Image.COW,
Image.DUCK,
Image.TORTOISE,
Image.BUTTERFLY,
Image.GIRAFFE,
Image.SNAKE,
]
while True:
for freq, img in zip(freqs, animal_images):
music.pitch(freq, duration=250)
display.show(img, delay=250)
if button_a.is_pressed():
display.clear()
break
from microbit import *
import music
# freqs = range(1760, 880, -128)
notes = ["A6", "G#6", "F#6", "E6", "D#6", "C#6", "B5"]
music.set_tempo(ticks=4, bpm=120)
animal_images = [
Image.RABBIT,
Image.COW,
Image.DUCK,
Image.TORTOISE,
Image.BUTTERFLY,
Image.GIRAFFE,
Image.SNAKE,
]
while True:
for note, img in zip(notes, animal_images):
music.play(note)
display.show(img, delay=250)
if button_a.is_pressed():
display.clear()
break
for freq, img in zip(Am_freqs, animal_images) iterates over the zipped object, placing each frequency and each Image into the freq and img variables for use.break so that the sounds can be easily stopped.from microbit import *
import music
animal_images = [
Image.HAPPY,
Image.SMILE,
Image.SAD,
Image.CONFUSED,
Image.ANGRY,
Image.ASLEEP,
Image.SURPRISED,
Image.SILLY,
]
Am_freqs = [440, 494, 523, 587, 659, 698, 784, 880]
timing = 400
while True:
for freq, img in zip(Am_freqs, animal_images):
display.show(img, delay=timing)
music.pitch(freq, duration=timing)
if button_a.is_pressed():
display.clear()
break
Exercises
Make a list of 8 arrows and a list of 8 frequencies to play. Write code to show each image as each frequency is played.
Make a list of 12 clock hands and a list of 12 frequencies to play. Write code to show each image as each frequency is played.
Make a list of 8 arrows and a list of 8 frequencies to play. Write code to show each image as each frequency is played.
from microbit import *
Make a list of 12 clock hands and a list of 12 frequencies to play. Write code to show each image as each frequency is played.
from microbit import *
2.2. zip 3 lists
for freq, img, pin_x in zip(freqs, animal_images, pins) iterates over the zipped object, placing each frequency, each Image, and each pin into the freq, img and pins variables for use.break so that the actions can be easily stopped.from microbit import *
import music
freqs = [440, 494, 523, 587, 659, 698, 784]
animal_images = [
Image.RABBIT,
Image.COW,
Image.DUCK,
Image.TORTOISE,
Image.BUTTERFLY,
Image.GIRAFFE,
Image.SNAKE,
]
pins = [pin0, pin1, pin2, pin1, pin0, pin1, pin2]
timing = 400
while True:
for freq, img, pin_x in zip(freqs, animal_images, pins):
music.pitch(freq, duration=timing)
display.show(img, delay=timing)
pin_x.write_digital(1)
sleep(timing)
pin_x.write_digital(0)
if button_a.is_pressed():
display.clear()
break
Exercises
Make a list of images, a list of pitches, and a list of LEDS and iterate over them by using the zip function.
Make a list of 8 arrows and a list of 8 frequencies to play. Write code to show each image as each frequency is played.
from microbit import *
Make a list of 12 clock hands and a list of 12 frequencies to play. Write code to show each image as each frequency is played.
from microbit import *