readlines readline

조회수 392회

code라는 변수에 저장해 파일 오픈

''' def searching(name):

code.seek(0, 0)
lines = code.readlines()
for line in lines:
    item = line.split()
    if name in item:
        return line

print searching('4번')

print searching('5번')

code.close() '''

Q. 오픈한 파일 안에는 ~~~~~ 4번 ~~~~~

~~~~~ 4번 ~~~~~

~~~~~ 4번 ~~~~~

~~~~~ 4번 ~~~~~

~~~~~ 5번 ~~~~~

~~~~~ 5번 ~~~~~

~~~~~ 5번 ~~~~~

~~~~~ 5번 ~~~~~

~~~~~ 6번 ~~~~~

~~~~~ 6번 ~~~~~

~~~~~ 6번 ~~~~~

~~~~~ 6번 ~~~~~

이런 식의 형태로 이루어져 있습니다. 저는 4번이 들어가 있는 모든 행들을 결과로 얻고 싶은데 실행해보면 4번 이 들어있는 맨 첫째줄, 5번이 들어 있는 맨 첫째줄만 반환이 됩니다..ㅠㅠ

어디가 잘못되었는지 알려주시면 감사드리겠습니다. ㅠㅠㅠ

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    질문자님의 코드는 각 행을 순차적으로 살펴보다가 해당 행에 '4번'이 포함되어 있으면 바로 그 행만을 반환(return)하라는 내용의 코드입니다.

    때문에 '4번'이 포함된 모든 행이 출력되지 않고 첫째 행만 출력되는 것입니다.

    이를 해결하기 위해서는 '4번'이 포함된 행을 리스트에 저장해 뒀다가 마지막에 한꺼번에 반환하도록 수정해야 합니다.

    다음 코드를 참고하시면 이해가 쉬울 겁니다.

    def searching(name):
        code.seek(0, 0)
        lines = code.readlines()
    
        result = []  # '4번'이 포함되어 있는 행들이 담길 리스트
        for line in lines:
            item = line.split()
            if name in item:
                result.append(line)  # 바로 반환하지 않고 리스트에 보관
    
        return result  # 한꺼번에 반환
    
    print searching('4번')
    code.close()
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 감사합니다~!!!!! 오은영 2020.2.20 19:11

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

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

(ಠ_ಠ)
(ಠ‿ಠ)