2012-04-08 10 views
-1

ユーザがYes以外のものを入力したときに何かを言うスクリプトを設定しました。しかし、ユーザーがYesと言うときにこれはまだ言います。私は間違って何をしていますか?Pythonでユーザ入力のケースを管理する

私は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

ただ、試合が真のIFFのユーザーが下部ケース

+0

@Lattyware:投稿された時間の違いがわかりますか? – Abhijit

+0

SOは私が筆記しているときに回答が投稿されたときに通常私に警告します。だからあなたはその警告を見たと思います。 –

+0

@Lattyware:最初の投稿は最初の3行でした。 – 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」; 「いいえ」または「いいえ」または「いいえ」はすべて「いいえ」の受け入れられたケースです。

関連する問題