Python:每日一题 332
本帖最后由 zltzlt 于 2020-2-14 17:51 编辑今天的题目:
给定一个非负整数(小于 2147483648),返回这个非负整数对应的英文表示(每个单词首字母大写)。
示例 1:
输入:123
输出:"One Hundred Twenty Three"
示例 2:
输入:12345
输出:"Twelve Thousand Three Hundred Forty Five"
示例 3:
输入:1234567
输出:"One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
示例 4:
输入:1234567891
输出:"One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"
{:10_298:}欢迎大家一起答题!{:10_298:} 本帖最后由 William4869 于 2020-2-14 19:27 编辑
def f332(x):
dict1={'1':'One','2':'Two','3':'Three','4':'Four','5':'Five',\
'6':'Six','7':'Seven','8':'Eight','9':'Nine','10':'Ten',\
'11':'Eleven','12':'Twelve','13':'Thirteen','14':'Fourteen',\
'15':'Fifteen','16':'Sixteen','17':'Seventeen','18':'Eighteen',\
'19':'Nineteen','20':'Twenty','30':'Thirty','40':'Forty','50':'Fifty',\
'60':'Sixty','70':'Seventy','80':'Eighty','90':'Ninety','100':'Hundred'}
s=""
if x==0:
s+="Zero"
return s
if x>999999999:
s+=dict1
s+=" Billion"
x%=1000000000
if x>999999:
t=x//1000000
if t>99:
if s!="":
s+=" "
s+=dict1
s+=" Hundred"
t%=100
if t!=0:
if t<21 or t%10==0:
if s!="":
s+=" "
s+=dict1
s+=" Million"
else:
if s!="":
s+=" "
s+=dict1
s+=" "
s+=dict1
s+=" Million"
else:
s+=" Million"
x%=1000000
if x>999:
t=x//1000
if t>99:
if s!="":
s+=" "
s+=dict1
s+=" Hundred"
t=t%100
if t!=0:
if t<21 or t%10==0:
if s!="":
s+=" "
s+=dict1
s+=" Thousand"
else:
if s!="":
s+=" "
s+=dict1
s+=" "
s+=dict1
s+=" Thousand"
else:
s+=" Thousand"
x%=1000
t=x
if t>99:
if s!="":
s+=" "
s+=dict1
s+=" Hundred"
t=t%100
if t==0:return s
if t<21 or t%10==0:
if s!="":
s+=" "
s+=dict1
else:
if s!="":
s+=" "
s+=dict1
s+=" "
s+=dict1
return s
print(f332(1400000))
无脑码代码,来看看我有没有遗漏什么 一个账号 发表于 2020-2-14 18:14
很多示例都写错了,例如示例二写错了,是 "Twelve Thousands Three Hundreds Forty Five"
你的也不对 楼主 你这个不对举例
实例1:
输入:123
输出:"One Hundred Twenty-Three"
示例 2:
输入:12345
输出:"Twelve Thousand Three Hundred Forty-Five"
示例 3:
输入:1234567
输出:"One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
示例 4:
输入:1234567891
输出:"One Billion Two Hundred Thirty-Four Million Five Hundred Sixty-Seven Thousand Eight Hundred Ninety-One"
几十几 需要加小横线 呀 一个账号 发表于 2020-2-14 18:14
很多示例都写错了,例如示例二写错了,是 "Twelve Thousands Three Hundreds Forty Five"
数词 只有 加of 时 才能是复数 一般是单数。只有 hundreds of 短语才是复数 TJBEST 发表于 2020-2-14 18:17
你的也不对
哦,我知道了 一个账号 发表于 2020-2-14 18:22
我哪里错了?
数词在表示数字时用单数 TJBEST 发表于 2020-2-14 18:20
楼主 你这个不对举例
实例1:
可以加,可以不加 有个好办法,爬取有道翻译{:10_334:} 最后的魁拔 发表于 2020-2-14 18:39
有个好办法,爬取有道翻译
{:10_277:}不可行……
关注中。。。。 101怎么整One Hundred And One ?要加And的么 咋了,,还要考虑单复数吗。。。 zltzlt 发表于 2020-2-14 18:41
不可行……
为啥这个就可以呢
算了,这道题不想写了,= = 塔利班 发表于 2020-2-14 18:52
算了,这道题不想写了,= =
{:10_266:} William4869 发表于 2020-2-14 18:47
无脑码代码,来看看我有没有遗漏什么
第 33、35 行 "Millon" zltzlt 发表于 2020-2-14 19:15
第 33、35 行 "Millon"
还有吗。 William4869 发表于 2020-2-14 19:24
还有吗。
输入 0 需要返回 "Zero" zltzlt 发表于 2020-2-14 19:25
输入 0 需要返回 "Zero"
继续