web-dev-qa-db-ja.com

Pythonの文字列のif文?

私はまったくの初心者で、 http://en.wikibooks.org/wiki/Python_Programming/Conditional_Statements を見てきましたが、ここで問題を理解できません。ユーザーがyを入力すると、IF answer == "y"で構文エラーが発生しますが、これは計算を実行して印刷する必要があります。

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()
15
user829084

大文字と小文字を区別しないifとコード内の不適切なインデントを修正したとしても、おそらく期待どおりに機能しません。文字列のセットに対して文字列をチェックするには、inを使用します。方法は次のとおりです(ifはすべて小文字であり、ifブロック内のコードは1レベルインデントされていることに注意してください)。

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")
42
Daniel DiPaolo

Ififでなければなりません。プログラムは次のようになります。

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()

また、インデントはPythonでブロックをマークするため重要です。

10
Björn Pollex

あなたが欲しい:

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」ではなく「if」です。 Pythonは大文字と小文字を区別します。
  2. インデントは重要です。
  3. pythonコマンドの最後にコロンやセミコロンはありません。
  4. 欲しいのは raw_input not input ; inputは入力を評価します。
  5. 「or」は、trueと評価された場合は最初の結果を返し、それ以外の場合は2番目の結果を返します。したがって、"a" or "b""a"と評価されますが、0 or "b""b"と評価されます。 およびand and orの独特の性質 を参照してください。
6
MGwynne

Pythonは大文字と小文字を区別する言語です。すべてのPythonキーワードは小文字です。ifではなくIfを使用してください。

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

また、_proceed = "y" or "Y"_はあなたが望むことをしません。 _proceed = "y"_およびif answer.lower() == proceed:、または同様のものを使用します。

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


学習中にこのような問題が発生した場合は、Pythonドキュメンテーションのチュートリアルを読むことをお勧めします。 http://docs.python.org /tutorial/index.html

6
JAB
proceed = "y", "Y"
if answer in proceed:

また、あなたはしたくない

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

あなたが欲しい

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

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

編集:それはPython 2のみに当てはまります。Python 3では、inputは問題ありませんが、str()ラッピングは依然として冗長です。

2
agf