2016-09-11 3 views
0
s = "bobobobobobsdfsdfbob" 
count = 0 
for x in s : 
    if x == "bob" : 
     count += 1 
print count 

내가, 그 결과이 나에게 내가 초보자 파이썬 해요 내 코드에 문제가 있는지 17 를 제공하면 얼마나 많은 캐릭터들에 가볍게 침 계산하고자하는 문자열을 포함하는 횟수를 출력하는 프로그램을 작성하라.문자열이

+0

나는'17' 대답을 얻지 못한다. 파이썬 2.x에서'0'을 얻는다. 파이썬 3.x에서 나는 print count 대신 print (count)를 사용하여 오류를 수정할 수있다. 코드가 실행되는지 확인하고 실제 문제를 알려주십시오. –

+1

당신이 준 문자열에 대한 답은 무엇입니까? '보봇 (bobob) '과 같이 짧은 문자열에 대한 대답은 무엇입니까? – merlinpatt

+1

[문자열에서 'bob'이 s 번 반복되는 횟수를 출력하는 프로그램을 작성 하시겠습니까? 여기서 s는 미리 정의되어 있습니다] (http://stackoverflow.com/questions/30972133/write-a-program-that-prints-the-number-of-times-the-string-bob-occurs-in-s- wh) – Abdou

답변

3

문자열을 반복 할 때 변수는 문자를 보유하므로 루프 xbob과 절대로 같지 않습니다. 당신이 비 오버랩하는 문자열을 계산하려면

당신은 단순히 str.count 사용할 수 있습니다

In [52]: s.count('bob') 
Out[52]: 4 

을 당신은 정규식에 lookaround를 사용하여 하위 문자열을 중복의 경우 :

In [57]: import re 

In [59]: len(re.findall(r'(?=bob)', s)) 
Out[59]: 6 
+0

완전히 분리 된 부분 문자열 만 계산합니다. . 이것은 'bobob'이 1 또는 2를 반환해야하는지 여부에 달려 있습니다. – merlinpatt

+0

@merlinpatt 네, 다른 문제입니다. 하나의 솔루션에 대한 업데이트를 확인하십시오. – Kasramvd

+0

WTF는 '일회용 변수'입니까? –

0

당신이 문자열을 사용할 수 있습니다 .count

예 :

s = "bobobobobobsdfsdfbob" 
count = s.count("bob") 
print(count) 
0

코드를 수정하려고 최선의 해결책을 제시하지 않습니다.

for each (a.k.a 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