我目前正在编写一个交易游戏,用户连接到服务器,然后互相交易并赚钱等。 但是当我尝试
时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开发环境。 提前谢谢。
答案 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: '))
你也可能想在那里的某处做一些异常处理:)