파이썬 관련 질문입니다. (문자열 압축하기)
조회수 705회
책 보면서 공부하고 있는데 이리저리 코드를 뜯어서 고쳐봐도 왜 실행이 안되는지 모르겠습니다 ㅠㅜ 고수님들 좀 도와주세요.
문자열을 입력받아서 같은 문자가 연속적으로 반복되는 경우에 그 반복 횟수를 표시합니다.
입력예시: aaabbcccccca
출력예시: a3b2c6a1
테스트를 편하게 하려고 직접 입력 대신에 코드 안에 박아뒀습니다. 문자가 반복된 횟수 만큼 표시하고자 하는데 재귀함수를 이용해보려고 합니다.
lttr = []
lttr = "aaabbcccccca"
cnt = 0
def listing():
if cnt < len(lttr):
if lttr[cnt] == lttr[cnt + 1]:
cnt = +1
if lttr[cnt] != lttr[cnt + 1]:
print(lttr[cnt] % (d + 1) % cnt)
listing(cnt)
else:
print(lttr[cnt] + "1")
cnt = +1
listing(cnt)
기존 코드에서 return 값이 필요없도록 조금 수정했습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
일단, 재귀함수를 잘못 만들었습니다.
def listing(cnt): if cnt < len(lttr): if lttr[cnt] == lttr[cnt + 1]: cnt = +1 return cnt if lttr[cnt] != lttr[cnt + 1]: print(lttr[cnt] % (d + 1) % cnt) listing(cnt)
질문 코드 중에 일부입니다. 여기서
return cnt
이후listing(cnt)
까지는 절대 수행될 수 없습니다.return cnt
에서 함수는 값을 반환하고 나가기 때문입니다.- 말씀하신대로 return 값이 필요 없도록 코드를 수정한다면 다음 문제는 뭐가 될까요 ㅠ 알 수 없는 사용자 2019.9.18 20:35
- @윤 return 값이 필요없다고 하지 않았습니다. 사실 코드가 너무 엉망이라 어떻게 고쳐야할지... 뭔가 의도가 있어서 (짐작이 안갑니다.) 고쳐봤다고 생각합니다. 자기 생각을 좀 더 잘 정리해서, (한국어로 가짜코드(수도코드)를 써본 다음에, 실제 파이썬으로 바꾸어 보시기 바랍니다.) nowp 2019.9.18 20:48
- 말씀 감사합니다. 다시 정리해봐야겠네요~ 알 수 없는 사용자 2019.9.18 20:59
댓글 입력