Python:类型错误:“str”对象无法使用 if 语句调用

问题描述 投票:0回答:5

我已经阅读了 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 (我在另一篇文章中读到它),但这没有做任何事情。

如有帮助,我们将不胜感激。

python python-2.7
5个回答
2
投票

playerChoice
将计算为字符串。因此稍后使用
playerChoice()
调用它(在末尾添加
()
调用变量)会引发错误,因为字符串不能像函数那样被调用。

使用

playerChoice
来计算字符串:

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

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

2
投票

if playerChoice() == 'r':
应该是
if playerChoice == 'r':
减去
()

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

而且

raw_input("What do you do this turn? ")
已经是一个字符串,不需要转换

如果您想要

int

你必须投射

int(raw_input("What do you do this turn? "))
,但不是字符串。


0
投票

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

if playerChoice == 'r':

而不是

playerChoice()


0
投票

由于

playerChoice
是一个变量而不是对函数调用的引用,因此您不需要括号即可使用playerChoice。如果您使用
playerChoice()
,解释器将尝试调用方法,但会失败,因为playerChoice 不是指函数调用。

这里需要理解的是

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


0
投票

如果您在 Jupyter Notebook 中编码并且您对代码很确定,那么不要浪费时间,这是一个小故障。只需刷新内核,它就会给出所需的输出。我浪费了一个小时,然后在新页面中运行相同的代码,它运行正确。

© www.soinside.com 2019 - 2024. All rights reserved.