python课后练习题(四)

《python核心编程第二版》第六章课后练习题

6–8.
列表.给出一个整数值,返回代表该值的英文,
比如输入 89 返回”eight-nine”。
附加题:
。本练习中的值限定在家 0
能够返回符合英文语法规则的形式,比如输入“89”返回“eighty-nine”
到 1,000.

code:

#!/usr/bin/env python
def get():
    input=raw_input('enter a num>')
    if input.isdigit():
        if int(input)>0 and int(input)<1000:
            if input[0]=='0':
                print 'not start with 0'
                return get()               
            else:
                return input
        else:
            print 'out of range'
            return get()
    else:
        print 'enter error,must be a number'
        return get()

l1={'1':'one','2':'two','3':'three','4':'four','5':'five','6':'six','7':'seven','8':'eight','9':'nine'}
l2={'1':'ten','2':'twenty','3':'thirty','4':'forty','5':'fifty','6':'sixty','7':'seventy','8':'eighty','9':'ninety'}    

def trans():
    length=len(g)
    if length==1:
        return l1[g]
    elif length==2:
        num1=l2[g[0]]
        if g[1]=='0':
            return num1
        else:
            num2=l1[g[1]]
            return num1+'-'+num2
    else:
        num1=l1[g[0]]+'thundred'
        if g[1]!='0':
            num2=l2[g[1]]
        else:
            num2=''
        if g[2]!='0':
            num3=l1[g[2]]
        else:
            num3=''
    if num2=='' and num3=='':
        return num1
    elif num2=='' and num3!='':
        return num1+'-'+num3
    elif num2!='' and num3=='':
        return num1+'-'+num2
    else:
        return num1+'-'+num2+'-'+num3
while True:
    g=get()
    res=trans()
    print res