我已经阅读了 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')。计数将加一,打印语句应打印:“添加了一项项目符号。”但是,当您在 raw_input 中输入“r”时。它给出了一个错误。这是为什么?我尝试将 %s 添加到 raw_input (我在另一篇文章中读到它),但这没有做任何事情。
如有帮助,我们将不胜感激。
playerChoice
将计算为字符串。因此稍后使用 playerChoice()
调用它(在末尾添加 ()
调用变量)会引发错误,因为字符串不能像函数那样被调用。
使用
playerChoice
来计算字符串:
playerChoice = raw_input("What do you do this turn? ")
if playerChoice == 'r':
count += 1
print "Added one bullet. ", count
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
是一个变量,而不是一个函数。用途:
if playerChoice == 'r':
而不是
playerChoice()
。
由于
playerChoice
是一个变量而不是对函数调用的引用,因此您不需要括号即可使用playerChoice。如果您使用 playerChoice()
,解释器将尝试调用方法,但会失败,因为playerChoice 不是指函数调用。
这里需要理解的是
str(raw_input("What do you do this turn? "))
返回一个字符串,而不是一个函数。因此您不需要使用括号。
如果您在 Jupyter Notebook 中编码并且您对代码很确定,那么不要浪费时间,这是一个小故障。只需刷新内核,它就会给出所需的输出。我浪费了一个小时,然后在新页面中运行相同的代码,它运行正确。