# -*- 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
什麼問題?
# -*- 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
什麼問題?
首先,不要使用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)
使用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
scr= "e"
##
print(len(scr))
對於爲什麼它這樣做,它做你問什麼,打印變量的長度,這永遠是一個。
你最好使用str.count()
方法作爲別人提到的,或手動增加一個計數器。
請勿使用'str'作爲變量名稱。它影響內建。 –