2016-09-28 2 views
1

임에 새로운이 때문에 임이 여기 변수를 파이썬 문자열과 어떻게 비교합니까?

코드입니다 ... 질문을하는 가장 좋은 방법이 아닌 경우 죄송합니다 - 지금 내가 cmd를 내가 돈에서 실행할 때

import sys 

print("What is ur name?") 
name = sys.stdin.readline() 

answer = "jack" 

if name is answer : 
    print("ur awesome") 
exit(); 

입력 - 잭이라도 아무 것도 출력되지 않습니까? 미리 감사드립니다.

+2

'is' 대신'=='를 사용하십시오. – StardustGogeta

+0

'sys.stdin.readline()'에주의하십시오. 개행을 보존합니다. 따라서'jack'을 입력하면 실제로'jack \ n'이됩니다. 그래서,'answer == "jack"'은 정말로 사실 일 때 거짓이 될 것입니다. 대신에'input()'을 사용하는 것이 더 낫다. – idjaw

+0

'sys.stdin.readline()'을 사용하면'answer == name.strip()'을 사용하고 그렇지 않으면'input()'을 사용하십시오 – dawg

답변

5

먼저 is==으로 대체하십시오. is은 두 기본 문자열이 동일한 엔터티 (메모리에 있음)인지 확인하지만 ==은 동일한 값을 갖고 있는지 확인하기를 원합니다.

"잭"의 출처가 두 개의 출처 (사용자 중 하나, 다른 사람이 하드 코딩 한 것)에서 나 왔기 때문에 두 개의 개별 소스입니다.

@dawg는 sys.stdin.readline()을 입력 할 때 개행을 제거하기 위해 .strip()을 사용해야합니다. 입력을 읽는 가장 좋은 방법은 python3에서 input() 메서드를 사용하거나 python2에서 raw_input() 메서드를 사용하는 것입니다.

name = input('What is your name?\n')

+1

'sys.stdin.readline()'에'\ n'이 포함되어 있으므로'.strip()'이 필요합니다 – dawg

+1

설명이 마음에 들지만 해결책을 제시하면 답이 훨씬 더 좋을 것입니다 : – Li357

4

문자열 비교에 사용 ==. 또한 readline()은 문자열의 끝에 개행 문자를 포함합니다. 예 : 그와 함께 시작하는 줄 바꿈을 포함하지 않으므로

name = name.strip() 

다른 방법으로는, 대신에 readline()의 (파이썬 3 input()) raw_input()를 사용할 수 있습니다.

name = raw_input("What is your name?\n") 

문자열을 인쇄하여 여분의 공백이 있는지 확인하는 것이 도움이됩니다.

print("name: [%s]\n" % name) 
+1

훌륭하지만 추가하십시오 'input()'에 대한 참조 – dawg

관련 문제