2012-04-10 71 views
-3

这里是我的脚本,http://pastebin.com/zgRrBX0U“‘廉政’对象不是可调用的”错误

对于参考这是肖捷思锐的“学习Python中艰难地”的EX36的脚本。 我试图创建一个基于文本的冒险,设计从塞尔达传说的第一级。

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

+7

请将相关的代码放入您的问题的正文中。 – 2012-04-10 22:49:34

+0

您可能还想花一些时间检修您的设计。对每个房间,移动设备和敌人的每个“彩色描述”进行硬编码都不能实现良好的代码重用,会让你的代码变得活灵活现,难以阅读。 – hexparrot 2012-04-10 22:52:28

+0

Python不是您使用的第一种编程语言,是吗? – 2012-04-10 23:02:21

回答

0

line 47:

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

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

行129:

roomBA = 0 

在这里,你已经改变的Roomba是数字0了。

因此,您定义的原始功能会丢失。你不再有一个名字可以用来打电话了。

上线132:

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

在这里,您呼叫的功能roomCA。除此之外,此功能会要求玩家指示方向,然后尝试呼叫相应的房间功能。

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

这是怎么回事,你有很多函数名称和变量名称之间的冲突。当然,roomXX是代表游戏中每个房间的函数。然后,你有状态变量(现在,它也被命名为roomXX)。看起来这些变量是用来跟踪你之前是否进入了一个房间。既然你的函数和状态变量被命名为相同的东西,你正在做各种意想不到的事情。

如上帖子中提到,你可以删除行129和130获得的代码运行;但是,您可能需要更好地理解基础知识。下面是一个开始的地方:

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

2

您定义roomBAroomDA作为函数,然后......你将它们绑定到整数。它是行不通的。

+0

我多么愚蠢,我会redit – 2012-04-10 22:55:03

1

删除线129和130,它会工作,为伊格纳西奥说。

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

+0

我现在已经解决了这个问题,对我来说很愚蠢。它工作正常,我可以继续这个小项目,谢谢。 – 2012-04-10 23:01:56

0

一个错误说。 “'int'对象不可调用。'我无法弄清楚这是什么意思搜索。

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

错误提示'int'对象不可调用。调用是你对函数(和类似的东西)所做的事情,所以你有一个int,你认为你有一个函数(或类似的东西)。这是因为你已经将一个函数名重新设置为一个int。

在Python,你应该知道现在:

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

  2. 在运行时间之前不会检查类型。

  3. 值有类型,而不是变量(名称,真的)。

所以没有受到什么阻碍你的写作:

function a(): pass 
a = 1 

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

相关问题