Python代码,在以单词形式输入后返回以数字形式表示的电话号码



昨天,我正在做一个问题,我必须完成一个函数,该函数可以在输入单词后将电话号码转换为数字,我使用s.replace()来做到这一点,还有修饰符。由于这个问题存在于hackerrank问题中,我无法提供完整的代码,因为测试现在已经结束,页面不再可用。如何使用这些修饰语,比如"二三四两三三三";会打印23422333吗?

def getPhoneNumber(s):
s.replace("Zero" "0")
s.replace("one" "1")
...

modifier = {
"double": 2,
"triple" : 3,
}
d = {'zero':'0','one':'1','two':'2','three':'3','four':'4','five':'5','six':'6','seven':'7','eight':'8','nine':'9'}
mod = {'double':2,'triple':3}
num_word = input('Enter Number In Words').split(' ')
number = ''
m = 1
for a in num_word:
try:
m = mod[a.lower()]
continue
except KeyError:
pass
try:
number+=d[a.lower()]*m
m = 1
except KeyError:
number+=a.lower()*m
m = 1
print(number)

输出
IN: double two
OUT: 22
IN: two three four double two triple 3
OUT: 23422333

试试这个,

def getPhoneNumber(number):
to_replace = {"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}
words = list(map(str.lower, number.split()))
output = ""
skip = None
for index, word in enumerate(words):
if index == skip:
continue
if word in modifiers:
skip = index + 1
try:
output += modifiers[word] * to_replace[words[skip]]
except:
pass
else:
output += to_replace[word]
return output
getPhoneNumber("Double One Triple Two Five")

输出——

112225
numbers = {'zero':'0','one':'1','two':'2','three':'3','four':'4','five':'5','six':'6','seven':'7','eight':'8','nine':'9'}
multipliers = {'double':2,'triple':3}
def solve(sentence):
results = []
sentence = sentence.lower().split()
repeat = 1
for word in sentence:
if word in multipliers:
repeat = multipliers[word]
else:
if word in numbers:
word = numbers[word]
results.append(word * repeat)
repeat = 1
return ''.join(results)

我将把这个作为其他主题的变体:

d = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4',
'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}
mod = {'double': 2, 'triple': 3}
num_word = input('Enter Number In Words: ')
number = []
m = None
for word in map(str.lower, num_word.split()):
if m:
number.extend(d.get(word, '') * m)
m = None
else:
if not (m := mod.get(word)):
number.append(d.get(word))
print(''.join(filter(bool, number)))

最新更新