2014-02-17 2 views
1

목록 x를 입력으로 사용하고 해당 목록에서 문자열 "bebo"의 수를 반환하는 bebo_count라는 함수가 필요합니다. . 를 반환해야합니다 예를 들어, bebo_count ([ "베보", "버즈", "베보"])를 위해 나는이목록에서 입력을 받고 그 목록에서 "bebo"문자열을 반환하는 함수를 만듭니다.

def bebo_count(x): 
    for a in x: 
      count = 0 
      if a == "bebo": 
      count += 1 
    return count 

같은 코드를 만든하지만 항상 나에게 일을 반환있어 작동하지 않습니다 , 아무도이 코드를 잘 작동하도록 수정할 수 있습니까?!

+2

에가 내장되어 있습니다 학습을 연습 할 때 코드'sum (a == "bebo"in a x)를 생각해보십시오. –

+0

고마워요. 모두 작동 중입니다. –

답변

2

외부 이동, :

참고로
def bebo_count(x): 
    count = 0 
    for a in x: 
     if a == "bebo": 
      count += 1 
    return count 

, 여기에이 같은 기능을 쓸 수있는 또 다른 방법은

def bebo_count(x): 
    count = 0 
    for a in x: 
      if a == "bebo": 
      count += 1 
    return count 
+0

감사합니다. –

0

문제는 count = 0이 for 루프 안에 있다는 것입니다.

1

count = 0내부에for 루프가 설정되어 있습니다. 즉, 각 루프 반복에서 count의 값과 관계없이 0으로 다시 설정됩니다. 루프 외부에서 count을 초기화해야합니다. 또한 들여 쓰기를 수정했음을 유의하십시오. 당신은 당신의 루프 카운트 = 0을 재설정 유지

def bebo_count(x): 
    return len([a for a in x if a == "bebo"]) 
+0

고마워요. 이제는 모두 작동합니다. –

+1

일반적으로리스트 comprehensions 대신 generator comprehensions 에이 목록을 다시 사용하지 않을 것입니다. 따라서'len ([for for ...]) '을 사용하는 두 번째 예제 대신,''a =='bebo '인 경우''for a x' '를 사용하는 것이 좋습니다. 멀리 목록. –

0

코드 수정 방법 :

def bebo_count(x): 
    count = 0 # initialize the count before you start counting 
    for a in x: 
     if a == "bebo": 
     count += 1 
    return count 

그러나, 더 파이썬 방법은 사용 할 수 지능형리스트 : 당신이 당신의 루프가 있으면

big_list = ["bebo", "something else", "bebo"] 
def bebo_count(big_list) : 
    return len([x for x in big_list if x=="bebo" ]) 

print(bebo_count(big_list)) 
2

:-) 바퀴를 재발견하지 않습니다는이 방법 count

x = [ "bebo", "bv", "bebo" ] 
x.count("bebo") 
> 2 
x.count("b") 
> 0 
관련 문제