2016-09-15 1 views
2

저는 파이썬으로 코딩 할 때 초보자이며 연습 문제로 CodeWars 연습을 해왔습니다.if 문이 빈 목록에 대해 'None'을 계속 반환합니다.

:

기본적으로이 번호는 게시물 등이 여기에

에이 좋아하는이 방법을 보여줍니다 즉, 페이스 북,에 "좋아"의 표시 기능을 다시하고 싶어이 연습 거기는 내 코드입니다

def likes(names): 
    for name in names: 
     if len(names) == 0: 
      return 'no one likes this' 
     elif len(names) == 1: 
      return '%s likes this' % (name) 
     elif len(names) == 2: 
      return '%s and %s like this' % (names[0], names[1]) 
     elif len(names) == 3: 
      return '%s, %s and %s like this' % (names[0], names[1], names[2]) 
     elif len(names) >= 4: 
      return '%s, %s and %s others like this' % (names[0], names[1], len(names) - 2) 

print likes([]) 
print likes(['Peter']) 
print likes(['Alex', 'Jacob', 'Mark', 'Max']) 

이 출력합니다 :

None 
Peter likes this 
Alex, Jacob and 2 others like this 

내 주요 문제가 여기에 나의 첫 번째 문은 문자열 '아무도이를 좋아한다'를 생산하지 않는 '경우'때 인수 : [] 비었다. 이 문제를 해결할 방법이 있습니까?

+0

아무 것도 반환하지 않는 모든 함수가 명시 적으로 '없음'을 반환하므로 '없음'이 반환됩니다. – Tobias

+2

'for'로 줄을 지우면됩니다. – Dunno

+0

정말 고마워요! –

답변

7

names이 빈 목록이면 for 루프가 전혀 실행되지 않으므로 함수가 None을 반환합니다. 함수의 구조를 변경해야합니다 (힌트 : 적어도 명시 적 루프가 아니라 루프가 필요하지 않을 수도 있음). 루프가있는 데는 아무런 포인트가 없으며 매우 첫 번째 반복에서는 return입니다.

+0

정말 고마워요! –

+0

"for 루프가 전혀 실행되지 않을 것"이라고 말하는 것이 정확합니까? 예를 들어,이 루프에 'else' 절을 넣으면 절 뒤에 오는 명령문이 실행됩니다. –

4

수행 한 for 루프는 목록의 각 요소에 대해 한 번 발생하지만 목록에 요소가 없으므로 루프가 작동하지 않고 반환 값은 "None"이됩니다

def likes(names): 
    #for name in names: #LOOK HERE: you definetly not need this loop 
    if len(names) == 0: 
     return 'no one likes this' 
    elif len(names) == 1: 
     return '%s likes this' % (names[0]) 
    elif len(names) == 2: 
     return '%s and %s like this' % (names[0], names[1]) 
    elif len(names) == 3: 
     return '%s, %s and %s like this' % (names[0], names[1], names[2]) 
    elif len(names) >= 4: 
     return '%s, %s and %s others like this' % (names[0], names[1], len(names) - 2) 
+0

On Line 6 :'return '% s은'% (names [0]) '을 좋아합니다. 그렇지 않으면 오류가 반환됩니다. 수정 사항이 너무 작아서 사용자가 확인할 수 없습니다. – Ross

+0

Ross에게 수정 해 주셔서 감사합니다. –

관련 문제