def checkio(number): toStr = "" hasSpecials = False numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] deci = {1: "ten", 2: "twenty", 3: "thirty", 4: "forty", 5: "fifty", 6: "sixty", 7: "seventy", 8: "eighty", 9: "ninety"} specials = {11: "eleven", 12: "twelve", 13: "thirteen", 14: "fourteen", 15: "fifteen", 16: "sixteen", 17: "seventeen", 18: "eighteen", 19: "nineteen"} isHundred = number / 100 isDeci = (number % 100) / 10 isNum = ((number % 100) % 10) if isHundred >= 1: toStr += numbers[isHundred] + " hundred" if isDeci == 1 and (isNum != 0): if toStr: toStr += " " toStr += specials[isDeci * 10 + isNum] hasSpecials = True elif isDeci > 1: if toStr: toStr += " " toStr += str(deci[int(isDeci)]) if hasSpecials == False and isNum != 0: if toStr: toStr += " " toStr += numbers[isNum] return toStr if __name__ == '__main__': assert checkio(4) == 'four', "First" assert checkio(133) == 'one hundred thirty three', "Second" assert checkio(12) == 'twelve', "Third" assert checkio(101) == 'one hundred one', "Fifth" assert checkio(212) == 'two hundred twelve', "Sixth" assert checkio(40) == 'forty', "Seventh, forty - it is correct" print('All ok')