鱼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 编辑
  1. def fun332(x):
  2.     if not x:
  3.         return 'Zero'
  4.     x = str(x)
  5.     within_twenty = ['Zero','One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten',
  6.                      'Eleven','Twelve','Thirteen','Fourteen','Fifteen','Sixteen','Seventeen','Eighteen','Nineteen']
  7.     tens = ['Twenty','Thirty','Forty','Fifty','Sixty','Seventy','Eighty','Ninety']

  8.     def prefix(n,unit='',space=' '):
  9.         n = str(int(n))
  10.         if n == '0':
  11.             return ''
  12.         if len(n) == 1:
  13.             return '%s%s%s'%(space,within_twenty[int(n)],unit)
  14.         if len(n) == 2:
  15.             if int(n) < 20:
  16.                 return '%s%s%s'%(space,within_twenty[int(n)],unit)
  17.             elif int(n) >= 20 and not int(n)%10:
  18.                 return '%s%s%s'%(space,tens[int(n[0])-2],unit)
  19.             else:
  20.                 return '%s%s %s%s'%(space,tens[int(n[0])-2],within_twenty[int(n[1])],unit)
  21.         if len(n) == 3:
  22.             if not int(n)%100:
  23.                 return '%s%s Hundred%s'%(space,within_twenty[int(n[0])],unit)
  24.             elif int(n[1:2]) >= 20 and not int(n[1:2])%10:
  25.                 return '%s%s Hundred %s%s'%(space,within_twenty[int(str(n)[0])],tens[int(n[1])-2],unit)
  26.             else:
  27.                 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)

  28.     if len(x) <= 3:
  29.         return prefix(x)
  30.     elif len(x) <= 6:
  31.         return '%s%s'%(prefix(x[:-3],' Thousand',space=''),prefix(x[-3:]))
  32.     elif len(x) <= 9:
  33.         return '%s%s%s'%(prefix(x[:-6],' Million',space=''),prefix(x[-6:-3],' Thousand'),prefix(x[-3:]))
  34.     else:
  35.         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, 2024-3-29 13:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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