2011-07-20 18 views
8

私は初心者で、http://en.wikibooks.org/wiki/Python_Programming/Conditional_Statementsを見ていますが、ここではその問題を理解できません。ユーザーは、それは私が答え==「Y」Pythonの文字列の場合は?

answer = str(input("Is the information correct? Enter Y for yes or N for no")) 
proceed="y" or "Y" 
If answer==proceed: 
print("this will do the calculation"): 
else: 
exit() 
+9

以下の回答が役立ちます。しかし、最初から始めてプログラミングチュートリアルに従う必要があるようです。ダイビングに入る前に基本を学ぶのがベスト! – samb8s

答えて

6

Pythonは大文字と小文字を区別する言語であるかに構文エラーを取得しますが、これは計算を行います印刷する必要がありYを入力した場合には、非常に単純です。すべてのPythonキーワードは小文字です。 Ifではなく、ifを使用してください。

また、print()の呼び出し後にコロンを挿入しないでください。また、print()exit()の呼び出しをインデントします。Pythonはコードブロックを表すために括弧ではなくインデントを使用しています。

また、proceed = "y" or "Y"はあなたが望むことをしません。 proceed = "y"if answer.lower() == proceed:などを使用してください。

入力値が1文字 "y"または "Y"でない限り、プログラムが終了するという事実もあります。これは、代替ケースの "N"のプロンプトと矛盾します。 else句の代わりに、を使用してください。info_incorrect = "n"を事前に使用してください。次に、入力値が何か他のものだった場合は、応答か何かを再指示します。


今学習しているようにこのような問題が発生している場合は、Pythonドキュメントのチュートリアルを参照することをおすすめします。 http://docs.python.org/tutorial/index.html
+0

とは? – samb8s

+0

@samb:またはについては? '' y '''ブール値が 'True'であるため、' proceed = "y"または "Y" 'の結果は単に' 'y'' 'を' proceed'に代入します。大文字の場合を考慮してください。 Danielのin演算子の使い方は良いですが。 – JAB

+0

申し訳ありませんが、私はあなたの投稿を編集する前にそれを追加しました:) – samb8s

36

誤って入力したifと不適切な字下げをコード内で修正しても、おそらく予想通りに機能しません。文字列のセットに対して文字列をチェックするには、inを使用します。ここではその方法を説明します(ifはすべて小文字で、ifブロック内のコードは1レベル下にインデントされています)。

一つのアプローチ:

if answer in ['y', 'Y', 'yes', 'Yes', 'YES']: 
    print("this will do the calculation") 

別:

if answer.lower() in ['y', 'yes']: 
    print("this will do the calculation") 
+0

OPに投稿されたコードではインデントが間違っていることにも注意してください。 –

+1

'str(input())'が動作しない、raw_input()が正しいという問題を逃しました。 – agf

+2

@agfそれは彼が使用しているPythonのバージョンに依存しますが、動作するかどうか(つまりPython 3.xを使用する場合)は冗長になります。 –

2
proceed = "y", "Y" 
if answer in proceed: 

また、あなたはあなたが

たい

answer = str(input("Is the information correct? Enter Y for yes or N for no")) 

を望んでいません10

answer = raw_input("Is the information correct? Enter Y for yes or N for no") 

input()は、Python式として入力されたものを評価します。raw_input()は文字列を返します。

編集:それはPython 2でのみ当てはまります。str()のラップはまだ冗長ですが、Python 3ではinputは問題ありません。

+0

"' input() 'はPython式として入力されたものを評価し、' raw_input() 'は文字列を返します。 Python 3では、 'input()'が使われた 'raw_input()'が使われていますが、 'eval(input())'や、入力をPython表現として評価したい場合は、 – JAB

7

Ifは、ifである必要があります。それはPythonでブロックをマークしているため、インデントは、重要であることも

answer = raw_input("Is the information correct? Enter Y for yes or N for no") 
if answer.upper() == 'Y': 
    print("this will do the calculation"): 
else: 
    exit() 

注:あなたのプログラムは次のようになります。

+1

まだ間違っています。 'str(input()) 'ではなく' raw_input() 'です。 – agf

+0

@agf:そうです、あなたは正しいです。 –

-1

Pythonは大文字と小文字が区別され、適切なインデントが必要です。小文字の "if"を使用し、条件を正しくインデントし、コードにバグがある必要があります。 proceedは、あなたがしたい

+1

'proceed'は' true'に評価されません、 '' y''と評価されます。 –

+0

true、true、true :) – viraptor

5

yに評価します:

answer = str(raw_input("Is the information correct? Enter Y for yes or N for no")) 
if answer == "y" or answer == "Y": 
    print("this will do the calculation") 
else: 
    exit() 

それとも

answer = str(raw_input("Is the information correct? Enter Y for yes or N for no")) 
if answer in ["y","Y"]: 
    print("this will do the calculation") 
else: 
    exit() 

注:

  1. それだ "もし" ではなく、 "IF"。 Pythonは大文字小文字を区別します。
  2. インデントが重要です。
  3. Pythonコマンドの最後にコロンまたはセミコロンはありません。
  4. お望みですraw_inputinputではありません。 inputは入力を返します。
  5. "または"と評価した場合は最初の結果を、それ以外の場合は2番目の結果を返します。従って"a" or "b""a"と評価され、0 or "b""b"と評価されます。 The Peculiar Nature of and and orを参照してください。
+2

5番目のポイントが間違っています。 'xまたはy'は、' true'と評価された場合は最初の値を返し、それ以外の場合は2番目の値を返します。 –

+0

ああ!更新しました! – MGwynne

関連する問題