[英]Write a program that prints the number of times the string contains a substring
s = "bobobobobobsdfsdfbob"
count = 0
for x in s :
if x == "bob" :
count += 1
print count
我想計算字符串s中的鮑勃數,如果結果是17,我的代碼是新手python,這是怎么回事。
當您循環顯示字符串時,throwaway變量將保留字符,因此在循環中x
永遠不會等於bob
。
如果要計算非重疊字符串,則可以簡單地使用str.count
:
In [52]: s.count('bob')
Out[52]: 4
對於重疊的子字符串,可以在正則表達式中使用環顧四周:
In [57]: import re
In [59]: len(re.findall(r'(?=bob)', s))
Out[59]: 6
您可以使用string.count
例如:
s = "bobobobobobsdfsdfbob"
count = s.count("bob")
print(count)
我沒有提供最佳解決方案,只是嘗試更正您的代碼。
了解for each (aka range for)
在您的情況下的作用
for c in "Hello":
print c
輸出:
H
e
l
l
o
在每次迭代中,您都將字符與字符串進行比較,這會導致錯誤的答案。
嘗試類似
(無重疊,即無跨度)
s = "bobobobobobsdfsdfbob"
w = "bob"
count = 0
i = 0
while i <= len(s) - len(w):
if s[i:i+len(w)] == w:
count += 1
i += len(w)
else:
i += 1
print (count)
輸出:
Count = 4
重疊
s = "bobobobobobsdfsdfbob"
w = "bob"
count = 0
for i in range(len(s) - len(w) + 1):
if s[i:i+len(w)] == w:
count += 1
print (count)
輸出:
Count = 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.