“'int'对象不可调用”错误

时间:2012-04-10 22:46:00

标签: python

这是我的脚本http://pastebin.com/zgRrBX0U

作为参考,这是Zed Shaw的“学习python艰难的方式”ex36的脚本。 我试图创建一个基于塞尔达传说的第一级设计的基于文本的冒险。

但是当我开始进入程序时,我遇到了一个问题。它的工作原理是你将从主房间开始。但无论朝哪个方向走,都会有错误说。 “'int'对象不可调用。”我无法弄清楚搜索是什么意思。或者看看pydocs。任何帮助都会受到赞赏。

4 个答案:

答案 0 :(得分:2)

您将roomBAroomDA定义为函数,然后再将它们绑定到整数。当然它不起作用。

答案 1 :(得分:1)

删除第129和130行,它将起作用,正如Ignacio所说。

在Python中,“可调用”通常是一个函数。该消息意味着您正在处理一个数字(“int”),就好像它是一个函数(“可调用”),因此Python不知道该怎么做,所以它就会停止。

答案 2 :(得分:0)

第47行:

def roomBA(key, life, door_open, roomBA, roomDA):

您正在此处定义名为roomBA的函数。

第129行:

roomBA = 0

在这里,您已将roomBA更改为现在的数字0。

因此,您定义的原始功能将丢失。您不再需要使用名称来调用它。

第132行:

roomCA(key, life, door_open, roomBA, roomDA)

在这里,您正在调用功能室CA.除此之外,此功能要求玩家指示方向,然后尝试调用相应的房间功能。

我键入了west,所以我们尝试调用变量roomBA引用的函数(第17行)。但是,哦,不,它不再是一个功能。它是0.因此,你错了。

发生的是你在函数名和变量名之间发生了很多冲突。当然,roomXX是代表游戏中每个房间的功能。然后,您有状态变量(目前,它们也被命名为roomXX)。看来这些变量旨在追踪您之前是否进入过房间。由于你的函数和状态变量都被命名为相同的东西,你正在做各种意想不到的事情。

如上所述,您可以删除第129行和第130行以获取要运行的代码;但是,您可能需要更好地了解基础知识。这是一个开始的地方:

http://en.wikipedia.org/wiki/Scope_%28computer_science%29

答案 3 :(得分:0)

  

错误说。 “'int'对象不可调用。”我无法通过搜索找出这意味着什么。

你的意思是通过了解语言和英语的基础知识来弄清楚这意味着什么。

错误表明'int'对象不可调用。调用是你对函数(和类似的东西)所做的,所以你有一个int,你认为你有一个函数(或类似的东西)。这是因为您将函数名称反弹为int。

在Python中,你现在应该知道:

  1. 一切都是对象,甚至是功能。

  2. 直到运行时才会检查类型。

  3. 值包含类型,而不是变量(名称,确实)。

  4. 所以没有什么能阻止你写作:

    function a(): pass
    a = 1
    

    第一行创建一个函数对象,并将其绑定到名称a。第二行将整数1绑定到名称a。这取代了旧的绑定,因此a 不再是函数的名称