파이썬 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
두개의 문자가 됩니다. 그래서, 스트링 비교는 실패하게 되는 것입니다.- 이부분 질문한 것이 맞나요?
- 잘 이해 되었나요?
댓글 입력