Python: TypeError: 'str'对象在if语句中不可调用
我看过50多个类似标题的帖子,但还是没有找到我想要的答案。
如果这个问题是重复的,请给我链接到那个[已解决]的帖子。我使用的是Python 2.7.7
count = 0
playerChoice = str(raw_input("What do you do this turn? "))
if playerChoice() == 'r':
count = count + 1
print "Added one bullet. ", count
它给出的错误是:
if playerChoice() == 'r':
TypeError: 'str' object is not callable
根据我的理解,我的代码是这样工作的:
如果玩家输入字符串'r',那么计数会加一,打印语句应该显示:“增加了一颗子弹。”但是,当你在raw_input中输入'r'时,它却报错了。为什么会这样呢?我试着在raw_input中加上%s(我在另一个帖子上看到的),但那并没有解决问题。
希望能得到帮助,谢谢。
4 个回答
因为 playerChoice
是一个变量,而不是一个函数的调用,所以使用 playerChoice
时不需要加括号。如果你写成 playerChoice()
,解释器会试图去调用一个方法,但会失败,因为 playerChoice
并不是指向一个函数。
这里需要理解的是,str(raw_input("What do you do this turn? "))
返回的是一个字符串,而不是一个函数。因此,你不需要使用括号。
playerChoice
是一个变量,不是一个函数。你应该这样使用:
if playerChoice == 'r':
而不是 playerChoice()
。
在这段代码中,if playerChoice() == 'r':
应该改成 if playerChoice == 'r':
,也就是去掉括号 ()
。
因为你不能把一个字符串当成函数来调用。
另外,raw_input("What do you do this turn? ")
本身已经是一个字符串了,所以不需要再转换。
如果你想要一个 int
(整数):
你需要这样写 int(raw_input("What do you do this turn? "))
,但对于字符串来说就不需要转换了。
playerChoice
是一个字符串。当你后面加上 ()
调用它,比如 playerChoice()
,就会出错,因为字符串不能像函数那样被调用。
应该直接使用 playerChoice
来获取这个字符串的值:
playerChoice = raw_input("What do you do this turn? ")
if playerChoice == 'r':
count += 1
print "Added one bullet. ", count