Python 用听写器从单词到数字的转换,如在电话的按键中
你好,在问这个问题之前,我已经做了一次彻底的搜索,我一直都是这样。我正在尝试使用python中的字典,从一个书面单词到电话键盘上每个字母对应的字母。这在没有字典的情况下是很容易做到的,但是使用字典虽然编码速度更快,但对我来说是相当混乱的。我们将不胜感激。到目前为止,我的代码是Python 用听写器从单词到数字的转换,如在电话的按键中,python,dictionary,Python,Dictionary,你好,在问这个问题之前,我已经做了一次彻底的搜索,我一直都是这样。我正在尝试使用python中的字典,从一个书面单词到电话键盘上每个字母对应的字母。这在没有字典的情况下是很容易做到的,但是使用字典虽然编码速度更快,但对我来说是相当混乱的。我们将不胜感激。到目前为止,我的代码是 def phone (word): d = {'A''B''C':2,'D''E''F':3,'G''H''I':4,'J''K''L':5} for i in range (len(word)):
def phone (word):
d = {'A''B''C':2,'D''E''F':3,'G''H''I':4,'J''K''L':5}
for i in range (len(word)):
word.split ()
return d[word]
我试着用“ADGJ”这个词来做测试
我得到的错误:
File "<pyshell#13>", line 1, in <module>
phone('ADGJ')
File "C:\Users\Christopher\Desktop\pratice.py", line 195, in phone
return d[word]
KeyError: 'ADGJ'
但我有一个新的错误:
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
phone ('ABABBAA')
File "C:\Users\Christopher\Desktop\pratice.py", line 194, in phone
return d[word]
TypeError: unhashable type: 'list'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
电话('ababaa')
文件“C:\Users\Christopher\Desktop\pratice.py”,第194行,电话中
返回d[word]
TypeError:不可损坏的类型:“列表”
我用的这个词就是“abbeaba”的意思,因为这是我在字典里定义的全部,因为这是对理解的测试
我想我仍然需要一些东西来连接dictionary函数,但仍在试图找出它是什么…这不是有效的Python
d = {'A''B''C':2,'D''E''F':3,'G''H''I':4,'J''K''L':5}
您需要定义每个键、值对
d = {
'A':2, 'B':2, 'C':2,
'D':3, 'E':3, ... etc
}
然后可以将单词转换为相应的数字
def getNums(word):
return ''.join(str(d[i]) for i in word)
>>> getNums('ADGJ')
'2345'
这是无效的Python
d = {'A''B''C':2,'D''E''F':3,'G''H''I':4,'J''K''L':5}
您需要定义每个键、值对
d = {
'A':2, 'B':2, 'C':2,
'D':3, 'E':3, ... etc
}
然后可以将单词转换为相应的数字
def getNums(word):
return ''.join(str(d[i]) for i in word)
>>> getNums('ADGJ')
'2345'
这是无效的Python
d = {'A''B''C':2,'D''E''F':3,'G''H''I':4,'J''K''L':5}
您需要定义每个键、值对
d = {
'A':2, 'B':2, 'C':2,
'D':3, 'E':3, ... etc
}
然后可以将单词转换为相应的数字
def getNums(word):
return ''.join(str(d[i]) for i in word)
>>> getNums('ADGJ')
'2345'
这是无效的Python
d = {'A''B''C':2,'D''E''F':3,'G''H''I':4,'J''K''L':5}
您需要定义每个键、值对
d = {
'A':2, 'B':2, 'C':2,
'D':3, 'E':3, ... etc
}
然后可以将单词转换为相应的数字
def getNums(word):
return ''.join(str(d[i]) for i in word)
>>> getNums('ADGJ')
'2345'
你的语法有点错误;你不能让字典中的赋值像switch语句一样失败 试试这个:
d = {'A':2,'B':2,'C':2,'D':3,'E':3,'F':3,'G':4,'H':4,'I':4,'J':5,'K':5,'L':5}
你的语法有点错误;你不能让字典中的赋值像switch语句一样失败 试试这个:
d = {'A':2,'B':2,'C':2,'D':3,'E':3,'F':3,'G':4,'H':4,'I':4,'J':5,'K':5,'L':5}
你的语法有点错误;你不能让字典中的赋值像switch语句一样失败 试试这个:
d = {'A':2,'B':2,'C':2,'D':3,'E':3,'F':3,'G':4,'H':4,'I':4,'J':5,'K':5,'L':5}
你的语法有点错误;你不能让字典中的赋值像switch语句一样失败 试试这个:
d = {'A':2,'B':2,'C':2,'D':3,'E':3,'F':3,'G':4,'H':4,'I':4,'J':5,'K':5,'L':5}
好的,让我来帮你 这是您当前的代码:
def phone (word):
d = {'A':2, 'B':3}
word = word.split()
return d[word]
第一行定义了函数签名,这意味着您有一个名为phone
的函数,它接受一个名为word
的参数。我的第一条评论是:为函数和变量选择合适的名称phone
不是“函数”,因为函数是一种指令或类似命令的东西,但没关系(letters\u to\u phonenumber
我认为更好)
第二行定义了一个字典,它将'a'
映射到2
,'B'
映射到'3'。现在没关系
第三行用split()
函数的返回值覆盖word
变量,该函数是string
类的一个方法。让我们查阅以下文档:
str.split([sep[,maxslit]])
:
使用sep作为分隔符字符串,返回字符串中的单词列表
由于您显然没有定义一个sep
(arator),我们必须弄清楚该函数将做什么。阅读进一步说明:
如果未指定sep或sep为None,则使用不同的拆分算法
应用:连续空格的运行被视为单个空格
分隔符,并且结果在开始处不包含空字符串
如果字符串有前导或尾随空格,则为end。因此,,
拆分空字符串或仅包含空格的字符串
使用None分隔符返回[]
因此,它将在字符串中查找空格。你不知道什么是空白?让我们谷歌:
在计算机科学中,空白是任何字符或字符序列
表示中的水平或垂直空格的空白字符
印刷术。渲染时,空白字符不对应
到可见标记,但通常会占用页面上的某个区域
好的,现在我们知道了,空白就像空格
或选项卡
等。像“abababaa”
这样的字符串不包含任何空白,因此split()
显然只返回一个列表,其中只有一项:输入字符串本身
让我们启动python解释器来检查这一点(这是一种常见的调试方式):
代码中的下一行是返回d[word]
。因此函数在这里终止并返回一个输出值,即d[word]
。但是d[word]
的价值是什么?嗯,d
是一个字典(带有键'a'和'B'),您尝试查找键的值['abababaa']
。但是您的字典d
中没有这样的键,更不用说无法为字典创建键,因为键必须是可散列对象。什么是可散列对象?让我们谷歌:
hashable:如果一个对象的hash值是
在其生命周期内进行更改(它需要一个散列()方法),并且可以
与其他对象相比(它需要eq()或cmp()方法)。
比较相等的可散列对象必须具有相同的散列值
Hashability使对象可用作字典键和集合
成员,因为这些数据结构在内部使用哈希值
Python的所有不可变内置对象都是可散列的,而
可变容器(如列表或字典)是可用的。对象
默认情况下,用户定义类的实例是可散列的;他们
所有比较都不相等(除了它们自己),并且它们的哈希值为
他们的id()
好的,所以'A'
是可散列的;-)和任何种类的字符串等,但不是列表
,在