2017-01-11 20 views
-1

내가 edX.org에서 MIT 6.00.1x을 데려 갈거야 나는 문제가 1 문제 나 문제변수에서 단어를 추출하려면 어떻게해야합니까?

s = 'azcbobobegghakl' 

가이 코드

s = 'azcbobobegghakl' 
bobTimes = 0 

for bobWord in s: 
    if 'b' and 'o' and 'b' in bobWord: 
    bobTimes += 1 

print(bobTimes) 
에게이이 변수에서 밥을 얻는 데 2. 설정에있어

s = 'azcbobobegghaklbobddbtto' 

그것은 bobTimes 변수 하나를 추가 :이처럼, O 및 다른 B에 추가 할 때

코드는이 변수 작동하지만. 나는이 변수에서 '밥'이라는 단어를 어떻게 추출 할 수 있는지 보지 못합니다.

+1

코드가 작동하지 않습니다 : 코드는'b'가's'에있는 횟수 만 카운트합니다 : 'b'와 'o':'가 항상 성공할 경우. –

+0

나는 그 변수에 대해 작동한다는 것을 의미했다. 분명하지 않다면 미안하다. –

+0

's.find ('bob')'와 일치하는 내장 문자열을 사용하지 않는 이유는 무엇입니까? – zhqiat

답변

0

파이썬의 목록 조각을 사용하여 문자열의 다음 3 문자를 가져옵니다.

s = 'azcbobobegghakl' #prints 2 
s = 'azcbobobegghaklbobddbtto' #prints 3 
bobTimes = 0 

for i in range(len(s)): 
    if s[i:i+3] == 'bob': 
    bobTimes += 1 

print(bobTimes) 
0

추출 요구 사항을 명확히 할 수 있습니까? 구체적으로 :

bobob 두 개의 bob입니까, 아니면 하나입니까? 은 bobobob 세입니까? 또는 모두가 분리되어 있어야합니다. 즉, 겹쳐서 표시되지 않는 문자가 포함 된 "밥"의 수를 계산합니다. 즉, 모두 bobasdfbobwwwwbob

s.count("bob")으로 계산해야합니다. 1 즉 bob, bobbob는 B 중간 만 ob를 떠나, 처음으로 계산하기 때문에 bobob는 단 하나, 둘,하지만 bobobob 2는 더 나은 bob o bob

한 번에 문자 하나를 통해 반복 할 수 있기 때문에 읽기 해당 문자와 ​​다음 3

for k,v in enumerate(s): 
    if s[k:k+3]=="bob": bobcount+=1 

이 방법은 두 가지로 bobob, 3 등 bobobob 카운트를 "밥"에 동일한 경우, 체크. 당신은 정규 표현식을 사용하는 것에 의지 할 수 있지만, 내 강점은 아니며, 다른 사람들에게 그 정보를 조금 나중에 설명/업데이트하겠습니다.