2016-03-27 4 views
-2

私はPythonでBMI計算機を作成しようとしていましたが、プログラムを実行すると「IndentationError:インデントブロックが必要です」と表示されます。エラーは7行目ですが、何が間違っていたのですか?私は、Python 3.5.1にPythonでインデントされたブロックエラーを修正するにはどうすればよいですか?

print ('Give your weight in kg: ') 
weight_kg = float(raw_input()) 
print ('Give your length in meters: ') 
length_meters = float(raw_input()) 
bmi = weight_kg/(length_meters * length_meters) 
if bmi <= 18.5: 
print ('Your BMI is'), bmi, ('what means that you have got underweight') 
elif bmi > 18.5 and bmi <= 25: 
print ('Your BMI is'), bmi, ('what means that you have got a normal weight') 
elif bmi > 25 and bmi < 30: 
print ('Your BMI is'), bmi, 'what means that you have got overweight') 
elif bmi >= 30: 
print ('Your BMI is'), bmi, ('what means that you have got obese') 
+1

任意のブロックを開いた後に、そのブロックをインデントするために4つのスペースを与えてください。 – bhansa

+3

インデントされたブロックのエラーを修正するには、インデントされたブロックを修正します。 Pythonはインデントに依存してどのコードがどのブロックにあるかを記述します。インデントのない 'if'の中に' if'があり、 'elif'と書かれている場合、Pythonは' elif'がどんな 'if'を知っていたでしょうか? 2番目の 'if'が最初の' if'の内側かどうかをPythonがどのように知っていますか?インデントは、あなたが何を意味するかを明確にします。 – zondo

+3

基本的なチュートリアルでは、痛みを和らげます。 [公式チュートリアル](https://docs.python.org/3.5/tutorial/introduction.html#first-steps-towards-programming)では、字下げについて言及しています。「字下げは、Pythonの文のグループ化方法です。 ..]基本ブロック内の各行は、同じ量だけインデントされなければならないことに注意してください。 – syntonym

答えて

1

を使用しています、下位の文は、中括弧や他の言語で使用開始/終了のキーワードとは対照的に、自分のインデントレベルによって識別されます。そのため、Pythonの適切な字下げは単なる文法的な慣習ではありませんが、実際には正しい機能のために必要です。あなたの場合、従属ステートメントをインデントする必要があります。以下を試してください:

print ('Give your weight in kg: ') 
weight_kg = float(input()) 
print ('Give your length in meters: ') 
length_meters = float(input()) 
bmi = weight_kg/(length_meters * length_meters) 
if bmi <= 18.5: 
    print ('Your BMI is', bmi, 'what means that you have got underweight') 
elif bmi > 18.5 and bmi <= 25: 
    print ('Your BMI is', bmi, 'what means that you have got a normal weight') 
elif bmi > 25 and bmi < 30: 
    print ('Your BMI is', bmi, 'what means that you have got overweight') 
elif bmi >= 30: 
    print ('Your BMI is', bmi, 'what means that you have got obese') 
+0

あなたの文字列を編集すると構文エラーが発生しました。 – zondo

+0

私の質問にお答えいただき、ありがとうございます。しかし、もう一つの問題があります。プログラムは実行できますが、float(raw_input())が何を意味するのかはわかりません。浮動小数点数をintに変更しましたが、これはどちらも機能しません。 –

+0

@ zondoありがとう、私は実際にそれをロードしようとしていませんでした。元の文字列には "... you've ..."が含まれていたため、構文エラーが発生しました。私はポストが ''あなたが持っている... ''を使うように変更されたことを知ったので、私は答えを編集しました。 –

関連する問題