supergravity
파이썬 - 재귀함수 return none 본문
https://stackoverflow.com/questions/17778372/why-does-my-recursive-function-return-none
아래는 내가 작성한 코드이다.
여기서 결과적으로 return 값이 none이다.
이유를 알아보고 수정해보자.
from collections import deque
def find_loction(location, i):
if location == i:
return True
else:
return False
def is_printe(q, count):
print("start~!")
print(q)
if len(q) == 0:
return count
if q[0][0] >= max(q)[0]:
print(max(q))
count += 1
if q[0][1]:
print(q[0][1])
print(count)
return count
q.popleft()
is_printe(q, count)
else:
check = q.popleft()
q.append(check)
is_printe(q, count)
def solution(priorities, location):
pri = [[prio, find_loction(location, idx)] for idx, prio in enumerate(priorities) ]
que = deque(pri)
answer = 0
answer = is_printe(que, 0)
return answer
print(solution([2, 1, 3, 2],1))
함수 안에서 다시 함수를 호출할 때 return 이란 키워드를 붙이지 않으면 none이라는 걸 암시한다고 한다.
그래서 none을 반환하는 것이다.
is_printe(q, count) 앞에 return을 붙여주자.
from collections import deque
def find_loction(location, i):
if location == i:
return True
else:
return False
def is_printe(q, count):
print("start~!")
print(q)
if len(q) == 0:
return count
if q[0][0] >= max(q)[0]:
print(max(q))
count += 1
if q[0][1]:
print(q[0][1])
print(count)
return count
q.popleft()
return is_printe(q, count)
else:
check = q.popleft()
q.append(check)
return is_printe(q, count)
def solution(priorities, location):
pri = [[prio, find_loction(location, idx)] for idx, prio in enumerate(priorities) ]
que = deque(pri)
answer = 0
answer = is_printe(que, 0)
return answer
print(solution([2, 1, 3, 2],1))
그럼 잘된다.
'개발중 기억해야 할만한 것들 > 파이썬' 카테고리의 다른 글
파이썬 - 문자열체크 정규식 (x) (0) | 2021.08.24 |
---|---|
파이썬 - 재귀 초과? 왜? (0) | 2021.08.18 |
파이썬 - 재귀에서 return 이랑 아닌거 차이 (0) | 2021.08.13 |
파이썬 기본 (2) | 2021.03.07 |
Django Admin 페이지 그래프 만들기 graph - 검색 기록 데이터 저장 및 그래프 (0) | 2021.03.01 |
Comments