这是我的脚本,http ://pastebin.com/zgRrBX0U
作为参考,这是 Zed Shaw 的“Learning python the hard way”的 ex36 脚本。我试图创建一个基于塞尔达传说第一级设计的基于文本的冒险。
但是当我开始进入程序时,我遇到了一个问题。它可以让您从主房间开始。但无论往哪个方向走,都会有错误的说法。“‘int’对象是不可调用的。” 我无法通过搜索弄清楚这意味着什么。或者查看 pydocs。任何帮助将不胜感激。
这是我的脚本,http ://pastebin.com/zgRrBX0U
作为参考,这是 Zed Shaw 的“Learning python the hard way”的 ex36 脚本。我试图创建一个基于塞尔达传说第一级设计的基于文本的冒险。
但是当我开始进入程序时,我遇到了一个问题。它可以让您从主房间开始。但无论往哪个方向走,都会有错误的说法。“‘int’对象是不可调用的。” 我无法通过搜索弄清楚这意味着什么。或者查看 pydocs。任何帮助将不胜感激。
您将roomBA
and定义roomDA
为函数,然后……您将它们绑定到整数。当然,它不会起作用。
正如 Ignacio 所说,删除第 129 和 130 行,它将起作用。
在 Python 中,“可调用”通常是一个函数。该消息意味着您将一个数字(一个“int”)视为一个函数(一个“可调用”),所以 Python 不知道该做什么,所以它停止了。
第 47 行:
def roomBA(key, life, door_open, roomBA, roomDA):
您在这里定义了一个名为 roomBA 的函数。
第 129 行:
roomBA = 0
在这里,您现在已将 roomBA 更改为数字 0。
因此,您定义的原始函数丢失了。你不再有一个名字可以用来称呼它了。
在第 132 行:
roomCA(key, life, door_open, roomBA, roomDA)
在这里,您调用的是函数 roomCA。除其他外,此函数向玩家询问方向,然后尝试调用相应的房间函数。
我输入了 west,所以我们尝试调用变量 roomBA 引用的函数(第 17 行)。但是,哦不,它不再是一个函数。它是 0。因此,你是错误的。
发生的事情是函数名称和变量名称之间有很多冲突。当然,roomXX 是代表游戏中每个房间的函数。然后,你有状态变量(现在也被命名为 roomXX)。这些变量似乎旨在跟踪您之前是否进入过房间。由于您的函数和状态变量都被命名为相同的东西,所以您正在做各种意想不到的事情。
正如上面提到的,您可以删除第 129 行和第 130 行以使代码运行;但是,您可能需要更好地了解基础知识。这是一个开始的地方:
一个错误的说法。“‘int’对象是不可调用的。” 我无法通过搜索弄清楚这意味着什么。
您应该通过了解语言和英语的基础知识来弄清楚这意味着什么。
该错误表示'int'
对象不可调用。调用是你对函数(和类似的东西)所做的,所以你有一个 int ,你认为你有一个函数(或类似的东西)。这是因为您已将函数名称重新绑定到 int。
在 Python 中,您现在应该知道:
一切都是对象,甚至函数。
直到运行时才检查类型。
值有类型,而不是变量(实际上是名称)。
所以没有什么能阻止你写:
function a(): pass
a = 1
第一行创建一个函数对象,并将其绑定到 name a
。第二行将整数绑定1
到 name a
。这取代了旧的绑定,因此不再是函数的a
名称。