Python' str' object不可调用Python 2.7.3

时间:2012-12-22 03:17:32

标签: python string callable

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

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

我正在使用Linux,Python版本2.7.3,以及Geany开发环境。 提前谢谢。

3 个答案:

答案 0 :(得分:10)

这一行:

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

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

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

您尝试将参数'Enter amount: '传递给字符串 input,因此:TypeError: 'str' object is not callable。既然看起来你正在使用Python 2,那么无论如何你应该使用raw_input,但这是不重新绑定内置名称的另一个原因。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

你应该做

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

而不是

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

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