Znalazłem gdzieś zadanie wygenerowania tekstu piosenki o 99 piwach. To odmiana harcerskiej piosenki, której nauczył mnie Gospodarczyk o Winnteou. Piosenka ta odratowała moje chore gardło i szkolna wycieczka się udała.
Kod jest krótki ale czuję, że może być jeszcze krótszy gdyby się przyłożył do przypadków specjalnych. Przypomina mi to obecnie aktualny temat formantów, cząstek występujących w słowotwórstwie. Temat aktualny bo przed nami egzamin ósmoklasisty.
def tens(t):
tt = ("","twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety")
return tt[int(t)-1]
def ones(o):
oo = ("","one","two","three","four","five","six","seven","eight","nine")
return oo[int(o)]
def spell(x):
if len(str(x))==2:
if str(x) == '20':
return "twenty" , "nineteen"
if str(x) == '15':
return "fifteen" , "fourteen"
elif str(x) == '13':
return "thirteen", "twelve"
elif str(x) == '12':
return "twelve", "eleven"
elif str(x) == '11':
return "eleven", "ten"
elif str(x) == '10':
return "ten", "nine"
else:
if str(x)[0] == '1':
z = str(ones(str(x)[1])+'teen').replace(" ","")
y = str(ones(str(x-1)[1])+'teen').replace(" ","")
return z, y
else:
z = tens(str(x)[0]) + "-" + ones(str(x)[1])
y = tens(str(x-1)[0]) + "-" + ones(str(x-1)[1])
return z, y
else:
z = ones(x)
y = ones(x-1)
return z, y
for i in range(99,0,-1):
print spell(i)[0].title(),'bottles of beer on the wall,',spell(i)[0].title(),' bottles of beer. Take one down and pass it around -',spell(i)[1].title(),' bottles of
beer on the wall.'