有人能帮我解决Python 2.7中不断出现的这个类型错误吗?
我试图制作一个程序,使用字典中存储的值将用户键入的5个字母的字符串转换为浮点值,以转换每个字母。这是我的代码:有人能帮我解决Python 2.7中不断出现的这个类型错误吗?,python,python-2.7,dictionary,typeerror,Python,Python 2.7,Dictionary,Typeerror,我试图制作一个程序,使用字典中存储的值将用户键入的5个字母的字符串转换为浮点值,以转换每个字母。这是我的代码: kvalues = {"a":1.01, "b":1.02, "c":1.03, "d":1.04, "e":1.05, "f":1.06, "g":1.07, "h":1.08, "i":1.09, "j":1.10, "k":1.11, "l":1.12, "m":1.13, "n":1.14, "o":1.15, "p":1.16, "q":1.17, "r":1.18,
kvalues = {"a":1.01, "b":1.02, "c":1.03, "d":1.04, "e":1.05, "f":1.06, "g":1.07, "h":1.08, "i":1.09, "j":1.10, "k":1.11, "l":1.12, "m":1.13, "n":1.14, "o":1.15, "p":1.16, "q":1.17, "r":1.18, "s":1.19, "t":1.20, "u":1.21, "v":1.22, "w":1.23, "x":1.24, "y":1.25, "z":1.26}
def convert_key(key):
#converts the key into a float using the values stored in kvalues
k1 = float(kvalues.get(key[0]))
k2 = float(kvalues.get(key[1]))
k3 = float(kvalues.get(key[2]))
k4 = float(kvalues.get(key[3]))
k5 = float(kvalues.get(key[4]))
print k1 + k2 + k3 + k4 + k5
convert_key(raw_input (Please enter a key:))
当我运行我的程序时,我得到了这个错误:“TypeError:‘内置函数’或‘方法’对象没有属性’getitem”。真正令人困惑的是,当我像这样在空闲shell中运行代码时:
key = "koala"
kvalues = {"a":1.01, "b":1.02, "c":1.03, "d":1.04, "e":1.05, "f":1.06, "g":1.07, "h":1.08, "i":1.09, "j":1.10, "k":1.11, "l":1.12, "m":1.13, "n":1.14, "o":1.15, "p":1.16, "q":1.17, "r":1.18, "s":1.19, "t":1.20, "u":1.21, "v":1.22, "w":1.23, "x":1.24, "y":1.25, "z":1.26}
k1 = float(kvalues.get(key[0]))
print k1
它工作得很好!有人知道这是什么问题吗?我是Python新手,对Python语言的细微差别不太熟悉
以下是完整的回溯:
Traceback (most recent call last):
File "K:\Projects\koala.py", line 73, in <module> menu()
File "K:\Projects\koala.py", line 10, in menu encrypt()
File "K:\Projects\koala.py", line 28, in encrypt e_key = convert_key(e_key)
File "K:\Projects\koala.py", line 67, in convert_key k1 = float(kvalues.get(key[0]))
TypeError: 'builtin_function_or_method' object has no attribute 'getitem'
回溯(最近一次呼叫最后一次):
文件“K:\Projects\koala.py”,第73行,在菜单()中
文件“K:\Projects\koala.py”,第10行,在菜单encrypt()中
文件“K:\Projects\koala.py”,第28行,在encrypt e_key=convert_key(e_key)中
文件“K:\Projects\koala.py”,第67行,在convert_key k1=float(kvalues.get(key[0])中
TypeError:“内置函数”或“方法”对象没有属性“getitem”
将打印添加到函数开头时:
<built-in method lower of str object at 0x0000000002AC7E40>
问题在于您在某处这样做:
e_key = mystring.lower
当您打算这样做时:
e_key = mystring.lower()
.lower
是一个方法,这意味着需要像函数一样调用它,因此需要括号。在第一种方法中,您只需将该方法重新分配给e_key
变量。显示您的实际代码,而不是您认为代码应该是什么样子。这是直接从我的代码中复制的。是否有代码的其他部分没有显示?当它给出TypeError
时,它还提供一个行号,并用一个箭头指向问题所在的代码行。你能利用这些信息帮助缩小实际问题的范围吗?显然,这是一个更大项目的片段,在某个地方你命名了其他函数或对象kvalues
,并隐藏(覆盖)字典kvalues
@user3052634,这就是为什么我把你指给我的上帝。哇!感谢您,先生。我建议您在调试时在代码中添加print
,因为您希望变量包含的内容可能并不总是这样(正如您在这里发现的那样)。print
:print(type(obj)、repr(obj))
或类似内容应该始终是第一步。