if语句,如果string.count()=整数?

时间:2014-03-04 03:33:55

标签: python if-statement

我希望我的代码的这一部分能够计算字符串中的空格数,到目前为止,我已经覆盖了它,但现在,如果字符串中没有空格,我希望代码返回1。

代码:

    string = string.count(" ")

    if string == 0:
        string = string.count(" ") + 1

    return string

我收到以下错误:

    AttributeError: 'int' object has no attribute 'count'

我该如何解决这个问题?任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:1)

您正在重读变量string,请尝试使用新变量:

spaces = string.count(" ")

if spaces == 0:
    spaces = string.count(" ") + 1

return string

答案 1 :(得分:1)

由于0在布尔上下文中被认为是False,我会在这里使用or

>>> string = "a b c"
>>> space_count = string.count(" ") or 1
>>> space_count
2
>>> string = "abc"
>>> space_count = string.count(" ") or 1
>>> space_count
1
>>>

答案 2 :(得分:0)

请勿使用string作为变量名称,因为如果您这样做,则会将string的类型更改为int。您可以使用其他变量:

n = string.count(" ")

if n == 0:
    n = string.count(" ") + 1
...

请记住,count()会返回int,因此如果您将整数结果分配给string,它将不再是字符串。因此,您无法在其上调用方法count()

答案 3 :(得分:0)

由于变量已经声明为string = string.count(" "),此时“字符串”的类型已经是一个显然没有'count'属性的整数。

要修复代码,只需返回string = string + 1而不是string = string.count(" ") + 1

另外,正如克里斯蒂安提到的那样,不要使用某些名称可能会使读者混淆为变量名称,这是一个好习惯。