2014-03-28 39 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()方法作爲別人提到的,或手動增加一個計數器。