鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[已解决]Python:每日一题 332

[复制链接]
发表于 2020-2-19 22:16:17 | 显示全部楼层
def engnum(num):
    english=['','One','Two','Three',\
             'Four','Five','Six','Seven','Eight',\
             'Nine','Ten','Eleven','Twelve','Thirteen',\
             'Fourteen','Fifteen','Sixteen','Seventeen',\
             'Eighteen','Nineteen','Twenty','Thirty','Forty','Fifty',\
               'Sixty','Seventy','Eighty','Ninety','Hundred',\
             'Thousand','Million','Billion']
    english1=[' ',' ','Twenty','Thirty','Forty','Fifty',\
               'Sixty','Seventy','Eighty','Ninety']

    if num < 21 :
        return english[num]
    else:
        if num<100:
            return english1[num // 10]+'  '+english[num % 10]
        else:
            if num<1000:
                return  english[num // 100]+'  '+'Hundred'+'  '+engnum(num % 100)
            else:
                if num<1000000:
                    return engnum(num//1000)+'  '+'Thousand'+'  '+engnum(num % 1000)
                else:
                    if num<1000000000:
                        return engnum(num//1000000)+'  '+'Million'+'  '+engnum(num % 1000000)
                        
                    else:
                        return engnum(num//1000000000)+'  '+'Billion'+'  '+engnum(num % 1000000000)
                        
   

num = int(input('请输入一个数字:'))
print('%d的英文写法是:' %num ,engnum(num))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-30 13:25:08 | 显示全部楼层
最后的魁拔 发表于 2020-2-14 18:39
有个好办法,爬取有道翻译

抓紧爬起来,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-13 10:43:45 | 显示全部楼层
本帖最后由 776667 于 2021-5-13 10:45 编辑
def fun332(x):
    if not x:
        return 'Zero'
    x = str(x)
    within_twenty = ['Zero','One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten',
                     'Eleven','Twelve','Thirteen','Fourteen','Fifteen','Sixteen','Seventeen','Eighteen','Nineteen']
    tens = ['Twenty','Thirty','Forty','Fifty','Sixty','Seventy','Eighty','Ninety']

    def prefix(n,unit='',space=' '):
        n = str(int(n))
        if n == '0':
            return ''
        if len(n) == 1:
            return '%s%s%s'%(space,within_twenty[int(n)],unit)
        if len(n) == 2:
            if int(n) < 20:
                return '%s%s%s'%(space,within_twenty[int(n)],unit)
            elif int(n) >= 20 and not int(n)%10:
                return '%s%s%s'%(space,tens[int(n[0])-2],unit)
            else:
                return '%s%s %s%s'%(space,tens[int(n[0])-2],within_twenty[int(n[1])],unit)
        if len(n) == 3:
            if not int(n)%100:
                return '%s%s Hundred%s'%(space,within_twenty[int(n[0])],unit)
            elif int(n[1:2]) >= 20 and not int(n[1:2])%10:
                return '%s%s Hundred %s%s'%(space,within_twenty[int(str(n)[0])],tens[int(n[1])-2],unit)
            else:
                return '%s%s Hundred %s %s%s'%(space,within_twenty[int(str(n)[0])],tens[int(n[1])-2],within_twenty[int(n[2])],unit)

    if len(x) <= 3:
        return prefix(x)
    elif len(x) <= 6:
        return '%s%s'%(prefix(x[:-3],' Thousand',space=''),prefix(x[-3:]))
    elif len(x) <= 9:
        return '%s%s%s'%(prefix(x[:-6],' Million',space=''),prefix(x[-6:-3],' Thousand'),prefix(x[-3:]))
    else:
        return '%s%s%s%s'%(prefix(x[:-9],' Billion',space=''),prefix(x[-9:-6],' Million'),prefix(x[-6:-3],' Thousand'),prefix(x[-3:]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 21:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表