2017-11-02 28 views
-2

人のBMIを宿題として計算するプログラムを作成しようとしています。 9行目の*** print( "Your BMI is:"、BMI)に "unexpected indent"エラーが表示されています。 インデントを前後に移動して修正しましたが、まだ機能していません。私は初心者なので、助けてください。前もって感謝します。Python 3で予期しないインデントエラーが発生しました

user_input = float(input("Let's calculate your BMI! Please select if you 'K' for kilograms and L for pounds for your weight: ")).upper 


if user_input == "K": 
    user_input_weight_kgs = float(input("Weight in kgs.:")) 
    user_input_height = float(input("Height by inches: ")) 
    user_input_age = (input("Age:")) 
    BMI_for_kgs = float(user_input_weight/(user_input_height **2)) 
     print ("Your BMI is: ",BMI) 
    if BMI < 18.5 : 
     print ("Under Weight") 
    elif BMI < 26: 
     print ("Normal Weight") 
    else: 
     print ("Over Weight") 

elif user_input == "L": 
    user_input_weight_lbs = float(input("Weight in lbs.: ")) 
    user_input_height = float(input("Height by inches: ")) 
    user_input_age = (input("Age:")) 
    BMI_for_lbs = float((user_input_weight * 703)/(user_input_height **2)) 
     print ("Your BMI is: ",BMI) 
    if BMI < 18.5 : 
     print ("Under Weight") 
    elif BMI < 26: 
     print ("Normal Weight") 
    else: 
     print ("Over Weight")  

elif guess.isnumeric(): 
    print ("Please select an alphabet only! Letter 'K' or 'L'") 
elif len(guess) > 1: 
    print ("Please choose a single alphabet only! Letter 'K' or 'L'") 
elif len(guess) == 0: 
    print ("You need to enter a letter! Letter 'K' or 'L'") 
else: 
    break 
+4

この行は正しくインデントされていないため、これを1つのタブバックにしてください。 – alfasin

+2

あなたのコードでは、最初の 'if user_input ==" K "'をチェックすることさえありません。入力を 'float'に変換し、その上で' .upper() 'メソッドを呼び出しているからです。 – kstullich

+1

これらの 'print("あなたのBMIは "、BMI)'行はあまりにもインデントされています。彼らはそれらの上の線と一直線に並ぶべきです。 –

答えて

2

問題は、ここでは、9行目(印刷行)が適切にインデントされていないということです修正です:

if user_input == "K": 
    user_input_weight_kgs = float(input("Weight in kgs.:")) 
    user_input_height = float(input("Height by inches: ")) 
    user_input_age = (input("Age:")) 
    BMI_for_kgs = float(user_input_weight/(user_input_height **2)) 
    print ("Your BMI is: ",BMI) 
    if BMI < 18.5 : 
     print ("Under Weight") 
    elif BMI < 26: 
     print ("Normal Weight") 
    else: 
     print ("Over Weight") 

elif user_input == "L": 
    user_input_weight_lbs = float(input("Weight in lbs.: ")) 
    user_input_height = float(input("Height by inches: ")) 
    user_input_age = (input("Age:")) 
    BMI_for_lbs = float((user_input_weight * 703)/(user_input_height **2)) 
    print ("Your BMI is: ",BMI) 
    if BMI < 18.5 : 
     print ("Under Weight") 
    elif BMI < 26: 
     print ("Normal Weight") 
    else: 
     print ("Over Weight")  

elif guess.isnumeric(): 
    print ("Please select an alphabet only! Letter 'K' or 'L'") 
elif len(guess) > 1: 
    print ("Please choose a single alphabet only! Letter 'K' or 'L'") 
elif len(guess) == 0: 
    print ("You need to enter a letter! Letter 'K' or 'L'") 
else: 
    break 

あなたがすべきコードブロック内だけインデントコード。インデントはブロックを開始し、インデント解除はそれを終了します。明示的な中カッコ、ブラケット、またはキーワードがPythonのコードブロックを終了させることはありません。 (コメントで)追加の​​質問に答える

EDIT

あなたの問題は、それが思わ文字列「K」または「L」のどちらかを期待しているが、あなたがしようとしているということですその文字列をfloatに変換します。それは何かが間違っていることを示すはずです。さらに、upper()は別の問題です(文字列の大文字の値を得るためにuser_input()を呼び出す予定がない限り、ここでは必要ないと思います)。解決するには:

user_input = input("Let's calculate your BMI! Please select if you 'K' for kilograms and L for pounds for your weight: ").upper() 
+0

aha !!ありがとう、私は1つのタブを戻して、それは働いた! 1つの問題は今すぐ@kstullichとしてコメントしました.Kを入力すると、文字列を浮動小数点に変換できないというエラーが出ました: 'k'。しかし、それはKを取得した後ではありません、それはkgs単位で自分の体重を入力する必要がありますか? – Jonathan

+1

@kstullichの意味は、浮動小数点数を文字列と比較しているため、 'user_input ==" K "'は常にfalseになります。また、最初の行で文字列を浮動小数点数に変換しています。あなたの文字列が数字(ei: '" 1.5 "'、 "" 22 "'など)を表す場合にのみ動作します。有効なオプションが "K"と "L"の場合、入力をフロートに変換しないでください。大文字であることを確認してください。 – Cyzanfar

+0

okこの追加質問を含めるように回答を更新しますあなたは – Cyzanfar

関連する問題