问题是如何用python编写一个程序来测量一个字符在字符串中出现的次数。
我写的代码:
def countLetters(str, ch):
count=0
index=0
for ch in str:
if ch==str[index]:
count=count+1
index=index+1
print count当我使用这个函数时,它测量字符串的长度,而不是字符在字符串中出现的次数。我做错什么了?写这段代码的正确方式是什么?
发布于 2011-01-17 05:58:00
你正在覆盖你的'ch‘变量:
def countLetters(str, ch):
# ^ the character you are looking for
count=0
index=0
for ch in str:
# ^ the string character you are trying to check
if ch==str[index]: # ???
count=count+1
index=index+1
print count(而且,返回值通常比仅仅打印它更有用)。
内置方法是str.count:
"aaabb".count("a") -> 3如何重写代码:
def countLetters(search_in, search_for):
count = 0
for s in search_in: # iterate by string char, not by index
if s==search_for:
count += 1
return count和一个快速的巨蟒替换:
def countLetters(search_in, search_for):
return sum(1 for s in search_in if s==search_for)发布于 2011-01-17 06:07:24
从逻辑上考虑运行代码时会发生什么:由于循环中的测试在第一次迭代中成功,因此每次都会成功!您只需检查Python中的迭代是否有效。
正确的表述是
def count(s, input):
count = 0
for c in s:
if c == input:
count += 1或者,等同地,
def count(input):
return sum(c == input for c in s)但是你也可以这样做:
s.count(c)发布于 2011-01-17 05:48:27
你的循环是错误的。
这应该是可行的:
for s in str:
if ch == s:
...这样就不会使用index变量,您可以删除它。如果要使用index,请将for更改为:
for index in range(len(str)):
... (rest is OK but ...)
... (do not increase index in loop body)您还可以通过+=运算符递增变量,如下所示:
cnt += 1因此,完成的代码将如下所示:
def countLetters(str, ch):
count = 0
for s in str:
if ch == s:
count += 1
print counthttps://stackoverflow.com/questions/4708273
复制相似问题