return문 질문이요!!

조회수 539회
def find_ins_idx(r, v):

 # 이미 정렬된 리스트 r의 자료를 앞에서부터 차례로 확인하여

    for i in range (0, len (r)):

        # v 값보다 i번 위치에 있는 자료 값이 크면

        # v가 그 값 바로 앞에 놓여야 정렬 순서가 유지됨

        if v < r[i]:
            return i

    # 적절한 위치를 못 찾았을 때는

    # v가 r의 모든 자료보다 크다는 뜻이므로 맨 뒤에 삽입

    return len (r)

r = [5, 1, 3, 2, 7]

v = 4

print(find_ins_idx(r,v))

안녕하세요 위 코드 보시면 리턴문이 2개가 있는데 왜 print(find_ins_idx(r,v)) 하면
결과값이 i값만 나올까요? return len(r)값은 왜 안나오나요??

위와 같이 하면 결과값이 '0' 하나만 나옵니다 return len(r)의값인 5는 안나오네용!
기본 개념인것같은데 제가 잘 몰라서 물어봅니다!! 물론 따로 print(len(r))하면 5라고 잘 반환됩니다

  • 함수라는 건 보통 return이 나오면 바로 그 자리에서 뭔가를 반환하고 더 이상 아무 일도 하지 않습니다. 엽토군 2019.6.3 17:47

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    for문에서 return 하면 for문을 나오는게 아니라 거기서 끝납니다.

    질문자님 의도대로 하려면 return i 대신 break문을 써보는게 어떨까요?

    def find_ins_idx(r, v):
    
     # 이미 정렬된 리스트 r의 자료를 앞에서부터 차례로 확인하여
    
        for i in range (0, len (r)):
    
            # v 값보다 i번 위치에 있는 자료 값이 크면
    
            # v가 그 값 바로 앞에 놓여야 정렬 순서가 유지됨
    
    
            if v < r[i]:
    
                break
    
        # 적절한 위치를 못 찾았을 때는
        print('---------')
        # v가 r의 모든 자료보다 크다는 뜻이므로 맨 뒤에 삽입
    
        return i, len(r)
    
    r = [5, 1, 3, 2, 7]
    
    v = 4
    
    print(find_ins_idx(r,v))
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • v = 10

    으로 하고서 하면 5 나올 것 같습니다.

    본인이 짠 코드라면, 그리 어렵지 않게 이렇게 저렇게 바꾸어 가면서 이해가 갈 것 같은데. 정말 궁금해 하는 부분이 어떤 것인지 질문만으로는 파악하기가 어렵군요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)