2014-03-28 38 views
0
# -*- 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 

我都数不过来的-str-字符串“E”,但是当我运行该脚本,我得到的如何计算字符串中的字符? (蟒蛇)

1 
1 
1 
1 

而不是4

什么问题?

+4

请勿使用'str'作为变量名称。它影响内建。 –

回答

1

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

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

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

如果你在理解为什么你当前的代码不工作有兴趣,您打印1四倍,因为你会找到四次“e”,当发现一个事件时,您正在打印len(scr),总是1

而不是在你的if块中打印len(scr),你应该增加一个跟踪发现总数的计数器,它看起来像你设置了一个变量a,你没有使用,所以最小的改变你的代码来得到它的工作将是以下(如上所述然而,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) 
3

使用count method

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

如果计数方法是在你的Python ;-)坏了,你可以使用一个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'的方法是使用sum上生成器表达式:

所有的
>>> sum(1 for c in st if c=='e') 
4 
0
scr= "e" 
## 
print(len(scr)) 

对于为什么它这样做,它做你问什么,打印变量的长度,这永远是一个。

你最好使用str.count()方法作为别人提到的,或手动增加一个计数器。