verse = {

  1: 'a partridge in a pear tree',

  2: 'two turtle doves',

  3: 'three french hens',

  4: 'four calling birds',

  5: 'five golden rings',

  6: 'six geese a laying',

  7: 'seven swans a swimming',

  8: 'eight maids a milking',

  9: 'nine ladies dancing',

  10: 'ten lords a leaping',

  11: 'eleven pipers piping',

  12: 'twelve drummers drumming'

}


def toOrdinal(day):

  if day == 1:

    return 'first'

  elif day == 2:

    return 'second'

  elif day == 3:

    return 'third'

  elif day == 4:

    return 'fourth'

  elif day == 5:

    return 'fifth'

  elif day == 6:

    return 'sixth'

  elif day == 7:

    return 'seventh'

  elif day == 8:

    return 'eighth'

  elif day == 9:

    return 'ninth'

  elif day == 10:

    return 'tenth'

  elif day == 11:

    return 'eleventh'

  elif day == 12:

    return 'twelfth'

  else:

    return 'error'


def song(day):

  stanza = 'On the ' + toOrdinal(day) + ' day of Christmas,\nmy true love gave to me\n'

  for i in range(day,0,-1):

    if i == 1:

      stanza = stanza + verse[i]

    elif i == 2:

      stanza += verse[i] + ',\nand '

    else:

      stanza += verse[i] + ',\n'

  return stanza


def main():

  for i in range(1,13):

    print(song(i))

    print()


main()

Last modified: Monday, 3 October 2022, 9:58 AM