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
라고 잘 반환됩니다
2 답변
-
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 나올 것 같습니다.
본인이 짠 코드라면, 그리 어렵지 않게 이렇게 저렇게 바꾸어 가면서 이해가 갈 것 같은데. 정말 궁금해 하는 부분이 어떤 것인지 질문만으로는 파악하기가 어렵군요.
댓글 입력