0

Python新手在这里。我正在编写一个程序来计算子字符串是字符串的次数,但一直收到错误消息:TypeError:a 未定义。我看过 /google 过类似的线程,但代码通常很复杂,很难理解。

这是我的代码:

def stringcount(char, word):
for eachChar in word:
    if char==eachChar:
        count=count+1
        return count
    print count

stringcount('a', 'apple')

非常感谢!

4

3 回答 3

4
def stringcount(c, word):
    count = 0
    for eachChar in word:
        if c==eachChar:
            count=count+1

    return count

>>> stringcount('a', 'apple')
1
>>>

但在这种情况下,您可以简单地使用:

>>> 'apple'.count('a')
1
于 2012-07-25T19:44:02.613 回答
2

这段代码很危险。您没有初始化count,因此如果count作为变量存在于命名空间中,您每次都可以获得不同的结果。例如,如果您多次调用该函数,count将不会重置,并且第二次调用该函数将返回2. 以下代码更安全且有效。

def stringcount(char, word):
    count = 0
    for eachChar in word:
        if char==eachChar:
            count += 1
    return count

>>> stringcount('a', 'apple')
1

另请注意,您可以简单地做'apple'.count('a')同样的事情。

一个不错的单线做同样的事情:

def stringcount(char, word):
    return sum(x==char for x in word)
>>> stringcount('p', 'apple')
2
于 2012-07-25T19:46:27.260 回答
0

如果你不是为了编程练习而写的,你可以这样做:

def stringcount(c, word):
    return word.count(c)

print stringcount("a", "apple")

文档:http ://docs.python.org/library/string.html#string.count

于 2012-07-25T19:47:09.143 回答