Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 将一组数字转换成一个单词_Python 2.7 - Fatal编程技术网

Python 2.7 将一组数字转换成一个单词

Python 2.7 将一组数字转换成一个单词,python-2.7,Python 2.7,我需要将给定的数字字符串转换为这些数字对应的单词。例如: >>>number_to_word ('222 2 333 33') 'CAFE' 这些数字就像手机上的数字一样,你按一次第二个按钮就会得到一个“a”,再按两次就会得到一个“B”,等等。假设我想要字母“E”,我就必须按第三个按钮两次。 我想有一些帮助,试图了解最简单的方法来做这个功能。我曾想过创建一本字典,其键为字母,值为数字,如下所示: dic={'A':'2', 'B':'22', 'C':'222', 'D':'

我需要将给定的数字字符串转换为这些数字对应的单词。例如:

>>>number_to_word ('222 2 333 33')
'CAFE'
这些数字就像手机上的数字一样,你按一次第二个按钮就会得到一个“a”,再按两次就会得到一个“B”,等等。假设我想要字母“E”,我就必须按第三个按钮两次。 我想有一些帮助,试图了解最简单的方法来做这个功能。我曾想过创建一本字典,其键为字母,值为数字,如下所示:

dic={'A':'2', 'B':'22', 'C':'222', 'D':'3', 'E':'33',etc...}

然后使用“for”循环读取字符串中的所有数字,但我不知道如何开始。

您需要反转字典:

def number_to_word(number):
    dic = {'2': 'A', '22': 'B', '222': 'C', '3': 'D', '33': 'E', '333': 'F'}
    return ''.join(dic[n] for n in number.split())

>>> number_to_word('222 2 333 33')
'CAFE'
让我们从头开始
number.split()
将文本与数字拆分为空白字符:

>>> number = '222 2 333 33'
>>> number.split()
['222', '2', '333', '33']
我们使用生成器表达式(
(dic[n]表示数字中的n.split())
)来查找每个数字的字母。下面是一个列表理解,其作用几乎相同,但也将结果显示为一个列表:

>>> [dic[n] for n in number.split()]
['C', 'A', 'F', 'E']
这允许
n
使用数字遍历列表中的所有元素,并使用
n
作为字典
dic
中的键来获取相应的字母

最后,我们使用带有空字符串作为旁观者的方法
join()
,将列表转换为字符串:

>>> ''.join([dic[n] for n in number.split()])
'CAFE'

你不知道哪一部分:如何制作字典(你似乎知道这一点)或将字符串分解成单词(你不可能太难找到如何做到这一点),或其他什么?如果你想从数字到单词,为什么不让键是像
'222'
这样的东西和字母的值呢?我知道如何制作字典,我不知道的是如何使“for”循环在dic中运行,并将字母添加到空字符串:“”(这将是最后一个单词)谢谢您的帮助!但是你能在回程线上加上更多的代码吗?我对python有点陌生,所以我不能在一行中完全理解您的代码。我现在明白了,但是如果我需要让程序能够读取相同的字母,如果输入是“2”(字母是“A”)或者输入是“2222”(字母仍然是“A”),该怎么办?就像当这个数字可以包含的字母数量结束时,它会重新启动。例如,如果输入为“2”、“2222”、“2222222”等,则可以打印字母“A”。这对我来说似乎是一个新问题。只需问另一个问题,并详细解释您迄今为止所做的工作和您想要的,即创建一个。我不能再问其他问题,因为我已经问了这个问题,我必须等待一天左右,我会尝试自己,并在可能时开始另一个问题,谢谢:)