# -*- 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'作为变量名称。它影响内建。 –