2013-12-15 3 views
1

사용자로부터 \n 문자를 읽으려고하는데 작동하지 않습니다. 나는 if condition 내부의 코드가 실행되지 않습니다 Enter 키를 누르 그러나파이썬에서 " n"문자 읽기가 실패했습니다

op = raw_input("Hit enter to continue!") 

if op == '\n': 
#run code 

: 여기 내 코드입니다. 그것은 마치 op가 \n이 아닌 것과 같지만 입력을했습니다.

+3

'raw_input'은 줄 바꿈 문자를 반환하지 않습니다. – Tim

답변

1

raw_input에서 docstring : "표준 입력에서 문자열을 읽습니다. 후행 줄 바꿈이 제거되었습니다."

if op == '': 
#run code 
4

raw_input 입력 끝에서 \n 제거에

그래서 단지 변경. 문자열의 빈칸을 확인하려면 다음과 같이하십시오 : 사용자가 입력을 사용했습니다 ... 그냥 if not op을 사용하십시오.

또한 예를 들어, 아주 쉽게이 직접 디버깅 할 수 있습니다 :

op = raw_input('enter something: ') # hit only enter 
print repr(op) # it's a blank string 
+0

+1 디버깅하는 방법을 보여줍니다. 물고기를 가르쳐주는 남자 ... – SethMMorton

1

아니, raw_input (파이썬 2.x에서) 또는 input (파이썬 3.x의) 마지막 개행 문자를 반환하지 않습니다 (\n) 문자 그게 당신이 이 완료되었음을 알게 된 이후로 입력을 입력 한 것입니다.

당신이 (단순 입력) 빈 사용자 입력을 확인하려는 경우, 당신은

if not op: 
    # code 

또는

if op == "": 
    # code 

if not op: 버전 not에서 부울 평가 이후 범용 진술 할 수 이 모든 항목에 대해 True을 반환합니다. -

  1. 빈 "반복 가능 객체"- '', [], {}, ()
  2. 부울 "거짓"- False, 0, 빈 입력을 확인하는 0.0
1

가장 좋은 방법은 다음 truthiness 테스트 첫번째 스트립입니다 :

공백은 여전히 ​​ True 때문에
if not op.strip(): 
    #code 

당신은 스트립()를 호출해야합니다

,549,
1

당신은 사용자 안타는 그냥 사용할 수있는 입력 할 때까지 파이썬 2.x에서 스크립트를 일시 중지하려면 다음

raw_input("Hit enter to continue!") 

를 다음에 관계없이 스크립트 코드는 다음과 무엇 이건 계속 입력 무엇.때 스크립트에서 다음

def prompt(): 
    raw_input("Hit enter to continue!") 

: 나는 그렇게하는 기능 I 프롬프트 또는 동작을 편집하려면 난 그냥 기능을 편집 할 수 있도록 (예 : "프롬프트"라는 하나)를 만드는 경향이 사용자가 아무 것도 입력 할 때까지 일시 중지하고 싶습니다.

prompt() 
관련 문제