Python:TypeError:' str' if语句不能调用object

时间:2014-07-29 02:55:22

标签: python python-2.7

我已阅读了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

根据我的理解,我的代码执行此操作:

如果玩家输入str(' r')。 Count将添加一个并打印print语句:"添加一个项目符号。"但是,当你输入' r'在raw_input中。它给出了一个错误。这是为什么?我尝试将%s添加到raw_input(我在另一篇文章中阅读),但是这没有做任何事情。

帮助将不胜感激,谢谢。

4 个答案:

答案 0 :(得分:2)

playerChoice将评估为字符串。所以稍后用playerChoice()调用它,(在最后添加()调用变量),抛出一个错误,因为字符串不能像函数那样被调用。

使用playerChoice来评估字符串:

playerChoice = raw_input("What do you do this turn? ")

if playerChoice == 'r':
    count += 1
    print "Added one bullet. ", count

答案 1 :(得分:1)

if playerChoice() == 'r':应为if playerChoice == 'r':减去()

你不会调用字符串,它不是函数。

同样raw_input("What do you do this turn? ")已经是一个不需要强制转换的字符串

如果您想要int

你必须投射int(raw_input("What do you do this turn? "))但不能投射字符串。

答案 2 :(得分:0)

playerChoice是一个变量,而不是一个函数。使用:

if playerChoice == 'r':

而不是playerChoice()

答案 3 :(得分:0)

由于playerChoice是变量而不是对函数调用的引用,因此您不需要使用括号来使用playerChoice。如果使用playerChoice(),解释器将尝试调用方法,并且因为playerChoice不引用函数调用而失败。

这里要理解的是str(raw_input("What do you do this turn? "))返回一个字符串,而不是一个函数。因此,您不需要使用括号。