如何计算字符串中的字符? (蟒蛇)

时间:2014-03-28 23:07:23

标签: python count

# -*- coding:UTF-8 -*-

str= "Green tree"
scr= "e"

cstr= len(str)
n=0
a=0

while n < cstr:
    if str[n] == scr:
        print(len(scr))
    n=n+1

我必须计算&#34; e&#34; in -str- string,但是当我运行这个脚本时,我得到了

1
1
1
1

而不是4。

问题是什么?

3 个答案:

答案 0 :(得分:3)

使用count method

>>> st="Green tree"
>>> st.count('e')
4

如果你的Python中有count方法;-),你可以使用for循环:

st="Green tree"
tgt='e'
i=0
for c in st:
    if c==tgt: i+=1

print i 
# 4 

如果你真的想要一个while循环:

idx=0
i=0
while idx<len(st):
    if st[idx]==tgt: i+=1
    idx+=1

print i    

但是,这是Python,更多的Pythonic&#39;如果你的计数方法被破坏的方法是在生成器表达式上使用sum

>>> sum(1 for c in st if c=='e')
4

答案 1 :(得分:2)

首先,不要使用str作为变量名称,它会掩盖内置名称。

至于计算字符串中的字符数,只需使用str.count()方法:

>>> s = "Green tree"
>>> s.count("e")
4

如果您只是想了解当前代码无法正常工作的原因,那么您打印1四次,因为您会发现四次&#39; e&#39;以及发现您正在打印len(scr),其始终为1

不是在if块中打印len(scr),而是应该递增一个计数器来跟踪找到的总发生次数,看起来你设置了一个变量a,你不是&# 39; t使用,因此对代码进行最小的更改以使其工作如下(但如上所述,str.count()是更好的方法):

str= "Green tree"
scr= "e"

cstr= len(str)
n=0
a=0

while n < cstr:
    if str[n] == scr:
        a+=1
    n=n+1
print(a)

答案 2 :(得分:0)

scr= "e"
##
print(len(scr))

对于为什么它正在执行此操作,它正在执行您所要求的操作,并打印变量scr的长度,该变量始终是一个。

您最好像其他人一样使用str.count()方法,或亲自手动增加计数器。