파이썬 input()함수의 실제 반환값이 이상하게 들어갑니다.

조회수 679회

txt=['괴라는 나물\n','i\'m groot\n']

line=input() #괴라는 나물\n을 입력했다 가정하겠습니다.

if(line==txt[0]):
    print ("이 문자열은 같은 문장입니다.")

제 생각에는 input()에 괴라는 나물\n을 입력하면 실제 txt리스트에 있는 '괴라는 나물\n'과 같은 문자열일거라고 생각했습니다만 실제로 실행을 시켜보면 print 함수가 작동되지 않고 끝나버립니다. 왜 이렇게 작동하는 걸까요???

구름 Ide를 사용중입니다!

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%8A%A4%EC%BC%80%EC%9D%B4%ED%94%84_%EB%AC%B8%EC%9E%90

    이스케이프 캐릭터에 대한 질문으로 보입니다. 줄바꿈 같은 것은 문자이지만, 실제로 보이지는 않는 문자입니다. 이런 특수기능 문자를 보이는 문자를 이용하여 표현하기 위해서는 특수한 약속이 필요합니다. 따옴표로 감싼 문자열 안에서 \ 를 만나면, \ 라는 문자가 아니고, 뒤에 따르는 기호에 따라 다른 특수문자를 나타내는 문자라는 약속을 한 것입니다. "\n"은 문자 두개로 이루어진 문자열로 보이지만, len('\n') 을 하면 1이 됩니다. 줄바꿈문자 하나이기 때문입니다.

    하지만, input() 으로 나온 프롬프트에 \n을 입력하면, 백슬래시문자와 n 두개의 문자가 됩니다. 그래서, 스트링 비교는 실패하게 되는 것입니다.

    1. 이부분 질문한 것이 맞나요?
    2. 잘 이해 되었나요?
    • 1. 네 정확히 짚어주셨습니다. 2.명쾌하게 잘 해결되었습니다. 감사합니다!!! 알 수 없는 사용자 2019.5.30 20:04

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

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

(ಠ_ಠ)
(ಠ‿ಠ)