Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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_Python 2.7_Dictionary_Typeerror - Fatal编程技术网

有人能帮我解决Python 2.7中不断出现的这个类型错误吗?

有人能帮我解决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,

我试图制作一个程序,使用字典中存储的值将用户键入的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, "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))
或类似内容应该始终是第一步。