1

我目前正在编写一个交易游戏,用户连接到服务器,然后互相交易并赚钱等等。但是当我尝试

if(input.lower() == 'sell'):
        sMaterial = raw_input('Material: ')
        if(sMaterial.lower() == 'gold'):
            sAmount = int(input('Enter amount: '))
            if(gold >= sAmount):
                mon = mon + (100 * sAmount)
            else:
                print 'You do not have enough', sMaterial

它抛出错误

> sell
Material: gold
Traceback (most recent call last):
  File "Test.py", line 119, in <module>
    sAmount = int(input('Enter amount: '))
TypeError: 'str' object is not callable

我正在使用带有 Geany 开发环境的 Linux,Python 版本 2.7.3。提前致谢。

4

3 回答 3

10

这一行:

if(input.lower() == 'sell'):

告诉我您必须input在某个时候将名称绑定到字符串。所以当你打电话

sAmount = int(input('Enter amount: '))

您正在尝试将参数传递'Enter amount: 'string input,因此:TypeError: 'str' object is not callable。由于看起来您使用的是 Python 2,因此您可能raw_input无论如何都应该使用,但这是不重新绑定内置名称的另一个原因。

于 2012-12-22T03:20:43.840 回答
3

input您已经用一个包含一些数据的变量覆盖了该函数。你做过的某个地方input = ...。(您可以在代码的第一行看到您正在执行input.lower()的操作。)解决方案是更改执行此操作的代码部分。不要给变量取与内置函数或类型相同的名称。

于 2012-12-22T03:21:12.807 回答
1

你应该做

sAmount = int(raw_input('Enter amount: '))

代替

sAmount = int(input('Enter amount: '))

你可能也想在那里的某个地方做一些异常处理:)

于 2012-12-22T03:20:47.033 回答