2012-04-08 1 views
-1

사용자가 Yes이 아닌 다른 것을 입력 할 때 무엇인가를 말하도록 스크립트를 설정했습니다. 그러나 사용자가 Yes라고 말하면 여전히 이것을 말합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?사용자 입력의 대소 문자를 파이썬으로 관리

저는 Python 2.7.2를 사용하고 있습니다.

print 'Hi! Welcome!' 
begin = raw_input ('Will you answer some questions for me? ') 
if begin == 'yes': 
    print 'Ok! Let\'s get started then!' 
else: 
    print 'Well then why did you open a script clearly entiled\'QUIZ\'?!' 
+0

따옴표를 이스케이프 할 필요가 없도록 큰 따옴표를 사용해야합니다. 'print "Ok! 시작하자!" – jamylak

+2

힌트 : 인터프리터 프롬프트에서''yes '=='Yes ''를 시도하십시오. –

답변

5

여기에 문제가 대소 문자 구분입니다 :
다음은 내 코드입니다.

>>> "yes" == "Yes" 
False 

하는 경우를 무시하도록 비교하기 전에 사용자 입력에 str.lower()를 사용해보십시오. 예컨대 : 단일 아포스트로피가 다음 이중 따옴표로 묶어야합니다 인쇄 STR 내부에 사용되는 #IF

print 'Hi! Welcome!' 
begin = raw_input ('Will you answer some questions for me? ') 
if begin.lower() == 'yes': 
    print 'Ok! Let\'s get started then!' 
else: 
    print "Well then why did you open a script clearly entiled\'QUIZ\'?!" 

.

6

는 그냥 경기가 경우에만 true 사용자가 소문자

+0

@Lattyware : 게시 된 시간의 차이가 표시됩니까? – Abhijit

+0

SO가 내 글을 쓰고있을 때 답이 게시 될 때 SO가 정상적으로 경고하므로 내가 그 경고를 본 것으로 추정했습니다. –

+0

@Lattyware : 첫 번째 게시물은 처음 세 줄이었습니다. 당신이 지금 동의하지 않는다면 증명하기가 어렵습니다 :-) – Abhijit

0

Abhijit의 방법에 응답을 입력 할 경우에만

if begin == 'yes': 

if begin.lower() == 'yes': 

문자열은 대소 문자를 구분 비교하기 때문에

에 줄을 변경 또한 사용자의 문자열 버전을 두 개 이상 허용하려는 경우에도 사용할 수 있습니다. 예를 들어 사용자가 종료할지 여부를 확인하기 위해 다음을 사용합니다.

confirm = input('Are you sure you would like to exit? N to re-run program') 
    if confirm.lower() in ('n','no'): #.lower just forces the users input to be changed to lower case 
    print("I'll take that as a no.") 
    return confirm #this then just goes back to main() 
    else: 
    exit() 

이렇게하면 'n'또는 'N'이됩니다. '아니오'또는 '아니오'또는 'nO'는 모두 '아니오'로 받아 들여집니다.