I would like to give some feedback about output from Checkio assertions.
It says:
Your result: 'one hundred'
Right result: 'one hundred'
I have no idea what's wrong.
My code:
FIRST_TEN = ["one", "two", "three", "four", "five", "six", "seven",
"eight", "nine"]
SECOND_TEN = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen"]
OTHER_TENS = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy",
"eighty", "ninety"]
HUNDRED = "hundred"
def checkio(number):
repr = {"0": "", "00": "", "000": ""}
for i in range(1, 10):
repr[str(i)] = FIRST_TEN[i-1]
for i in range(10, 20):
repr[str(i)] = SECOND_TEN[i-10]
for i in range(20, 91, 10):
repr[str(i)] = OTHER_TENS[i // 10 - 2]
num = str(number)[::-1]
string = ""
skip = 0
for i, x in enumerate(num):
if skip > 0:
skip -= 1
continue
if len(num) > i+2:
string += repr[num[i+2]] + " " + HUNDRED + " " + checkio(num[i+1] + x)
skip = 2
elif len(num) > i+1:
if num[i+1] == "1":
string += repr[num[i+1] + x]
else:
m = repr[num[i+1] + "0"] + " " + repr[x]
if len(m) > 0 and m[0] == " ":
m = m[1:]
if len(m) > 0 and m[-1] == " ":
m = m[:-1]
string += m
skip = 1
else:
string += repr[x]
return string
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio(4) == 'four', "1st example"
assert checkio(133) == 'one hundred thirty three', "2nd example"
assert checkio(12) == 'twelve', "3rd example"
assert checkio(101) == 'one hundred one', "4th example"
assert checkio(212) == 'two hundred twelve', "5th example"
assert checkio(40) == 'forty', "6th example"
assert not checkio(212).endswith(' '), "Don't forget strip whitespaces at the end of string"
From: http://www.checkio.org/mission/speechmodule/solve/
HTTP_USER_AGENT:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
Created at: 2015/06/06 11:01; Updated at: 2015/06/07 19:16