Returning choices
A function can make a decision and return the answer — which drum, how many hits, is this a fill? Then the main loop just asks.
Challenge A:def drum_for(b): return snare if b % 2 == 0 else kick. Loop 1-8 calling drum_for(b)(b).