给出一个整型值,返回代表该值得英文

给出一个整型值,返回代表该值得英文,比如输入89会返回“eight-nine”
附加题:能够返回符合英文语法规律的新式,比如输入89会返回“eighty-nine”
single=['','one','two','three','four','five','six','seven','eight','nine']
double1=['ten','eleven','tweleve','thirting','fourting','fifting','sixting','seventing','eighting','nineting']
double2=['','','twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']
numstr=raw_input('Enter a number 0--1000: ')
numlen=len(numstr)
num=int(numstr)
if numlen==1:
if int(numstr[0])>0:
print(single[num])
else:
print('zero')
elif numlen==2:
if numstr[0]=='1':
print(double1[num-10])
else:
print(double2[int(numstr[0])]+'-'+single[int(numstr[1])])
elif numlen==3:
if numstr[1]=='1':
tmp=double1[int(numstr[2])]
else:
tmp=double2[int(numstr[1])]+'-'+single[int(numstr[2])]
print(single[int(numstr[0])]+' hundred '+tmp)
else:
print('one thousand')
请问有什么错误?

长度是3的时候,你确定要输出ten-ten这种东西吗
你就直接判断千位和百位只要不是0就输出文字就行了,没有特殊转化
还有,你必须判断个位非0,才能加-,否则20会输出成twenty-

single=['','one','two','three','four','five','six','seven','eight','nine','ten','eleven','tweleve','thirting','fourting','fifting','sixting','seventing','eighting','nineting']   
double=['','','twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']  
numstr=input('Enter a number 0--1000: ')  
num=int(numstr)
qian=num//1000
bai=num%1000//100
shi=num%100//10
ge=num%10
if qian>0:
    print(f'{single[qian]} thousand ')
if bai>0:
    print(f'{single[bai]} hundred ')
if shi>1:
    print(f'{double[shi]}')
    if ge>1:
        print(f'-{single[ge]}')
elif num>0:
    print(f'{single[ge]}')
else:
    print('zero')



single=['','one','two','three','four','five','six','seven','eight','nine']  
double1=['ten','eleven','tweleve','thirting','fourting','fifting','sixting','seventing','eighting','nineting']  
double2=['','','twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']  
numstr=raw_input('Enter a number 0--1000: ')  
numlen=len(numstr)  
num=int(numstr)  
if numlen==1:  
    if int(numstr[0])>0:  
        print single[num]  
    else:  
        print 'zero'  
elif numlen==2:  
    if numstr[0]=='1':  
        print double1[num-10]  
    else:  
        print double2[int(numstr[0])]+'-'+single[int(numstr[1])]  
elif numlen==3:  
    if numstr[1]=='1':  
        tmp=double1[int(numstr[2])]  
    else:  
        tmp=double2[int(numstr[1])]+'-'+single[int(numstr[2])]  
    print single[int(numstr[0])]+' hundred '+tmp  
else:  
    print 'one thousand'