## Alla fiera dell'est. (Versione sofisticata di 99 bottles of beer on the wall) ritornello = "Alla fiera dell'est, per due soldi, \ un topolino mio padre comprò." strofe = ["E venne {}{}", "{}{}{}{}{}"] nomi = [ ["topo", ["al ", "mercato ", "mio padre ", "comprò."]], ["gatto", "si mangiò"], ["cane", "morse"], ["bastone", "picchiò"], ["fuoco", "bruciò"], ["acqua", "spense"], ["toro", "bevve"], ["macellaio", "uccise"], ["Angelo della morte", "su"], ["Signore", "sul"]] articolo = lambda x: "l'" if x in (5, 8) else "il " congiunzione = lambda x: "" if x in (8, 9) else "che " spazio = lambda x: "" if x == 9 else " " print(ritornello) for i, nome in enumerate(nomi[1::]): print(strofe[0].format(articolo(i + 1), nome[0]), end=" ") for k in range(i + 1, 0, -1): print(strofe[1].format( congiunzione(k), nomi[k][1], spazio(k), articolo(k - 1), nomi[k - 1][0]), end=" ") print(strofe[1].format(congiunzione(0), *nomi[0][1])) print(ritornello)