给定一个 phone 数字,将数字转换为数字
Given a phone number in words, convert the number to digits
下面的代码适用于
Input: "two one nine six eight one six four six zero"
Output: "2196816460"
n=s.split()
l=[]
for val in n:
if(val=='zero'):
l.append('0')
elif(val=='one'):
l.append("1")
elif(val=='two'):
l.append("2")
elif(val=='three'):
l.append("3")
elif(val=='four'):
l.append("4")
elif(val=="five"):
l.append("5")
elif(val=="six"):
l.append("6")
elif(val=="seven"):
l.append("7")
elif(val=="eight"):
l.append("8")
elif(val=="nine"):
l.append("9")
new = ''.join(l)
return new
但是如果
输入:“五八双二双二四八五六”
所需输出应为:5822224856
或者,
输入:“五一零六三八九六四”
所需输出应为:5106888964
上面的代码怎么修改?
为数量修饰符创建另一个映射,并将数字字符串乘以前面的修饰符。
digits = {
"zero": "0",
"one": "1",
"two": "2",
"three": "3",
"four": "4",
"five": "5",
"six": "6",
"seven": "7",
"eight": "8",
"nine": "9",
}
modifiers = {
"double": 2,
"triple": 3,
}
number = ""
n = 1
for word in input("? ").split():
if word in modifiers:
n *= modifiers[word]
else:
number += n * digits[word]
n = 1
print(number)
? five eight double two double two four eight five six
5822224856
您可以使用变量来保存下一个数字的重复。
变量以值 1
开头。
当得到一个重复词('triple'
),然后更新相应的变量。
当得到一个数字('three'
)时,添加到列表并将变量更新回1
此外,您可以使用字典来代替 else..if
:
repeat = 1
repeat_dict = {'double':2, 'triple':3}:
n=s.split()
l=[]
for val in n:
if val in repeat_dict: # got a repeat word
repeat = repeat_dict[val]
else:
if(val=='zero'):
l.append('0' * repeat)
elif(val=='one'):
l.append("1" * repeat)
elif(val=='two'):
l.append("2" * repeat)
elif(val=='three'):
l.append("3" * repeat)
elif(val=='four'):
l.append("4" * repeat)
elif(val=="five"):
l.append("5" * repeat)
elif(val=="six"):
l.append("6" * repeat)
elif(val=="seven"):
l.append("7" * repeat)
elif(val=="eight"):
l.append("8" * repeat)
elif(val=="nine"):
l.append("9" * repeat)
repeat = 1
new = ''.join(l)
return new
下面的代码适用于
Input: "two one nine six eight one six four six zero"
Output: "2196816460"
n=s.split()
l=[]
for val in n:
if(val=='zero'):
l.append('0')
elif(val=='one'):
l.append("1")
elif(val=='two'):
l.append("2")
elif(val=='three'):
l.append("3")
elif(val=='four'):
l.append("4")
elif(val=="five"):
l.append("5")
elif(val=="six"):
l.append("6")
elif(val=="seven"):
l.append("7")
elif(val=="eight"):
l.append("8")
elif(val=="nine"):
l.append("9")
new = ''.join(l)
return new
但是如果
输入:“五八双二双二四八五六”
所需输出应为:5822224856
或者,
输入:“五一零六三八九六四”
所需输出应为:5106888964
上面的代码怎么修改?
为数量修饰符创建另一个映射,并将数字字符串乘以前面的修饰符。
digits = {
"zero": "0",
"one": "1",
"two": "2",
"three": "3",
"four": "4",
"five": "5",
"six": "6",
"seven": "7",
"eight": "8",
"nine": "9",
}
modifiers = {
"double": 2,
"triple": 3,
}
number = ""
n = 1
for word in input("? ").split():
if word in modifiers:
n *= modifiers[word]
else:
number += n * digits[word]
n = 1
print(number)
? five eight double two double two four eight five six
5822224856
您可以使用变量来保存下一个数字的重复。
变量以值 1
开头。
当得到一个重复词('triple'
),然后更新相应的变量。
当得到一个数字('three'
)时,添加到列表并将变量更新回1
此外,您可以使用字典来代替 else..if
:
repeat = 1
repeat_dict = {'double':2, 'triple':3}:
n=s.split()
l=[]
for val in n:
if val in repeat_dict: # got a repeat word
repeat = repeat_dict[val]
else:
if(val=='zero'):
l.append('0' * repeat)
elif(val=='one'):
l.append("1" * repeat)
elif(val=='two'):
l.append("2" * repeat)
elif(val=='three'):
l.append("3" * repeat)
elif(val=='four'):
l.append("4" * repeat)
elif(val=="five"):
l.append("5" * repeat)
elif(val=="six"):
l.append("6" * repeat)
elif(val=="seven"):
l.append("7" * repeat)
elif(val=="eight"):
l.append("8" * repeat)
elif(val=="nine"):
l.append("9" * repeat)
repeat = 1
new = ''.join(l)
return new