2017-08-01 11 views
-1

私はBMI計算プログラムを作成しています。メトリックとインペリアルの両方のオプションがあります。私の問題は、私がメトリックのために試してみると、私は狂った答えを得ているので、プログラムは皇室の式を使って数字を実行しているに違いありません。あなたは正しくif文を使用していない計算と組み合わせた場合

var1 = "imperial" 

print "Do you use imperial or metric?" 
ans = raw_input() 
var1 = ans 
if var1: 
    print "What is your weight?" 
    weighti = float(raw_input()) 
    print "What is your height?" 
    heighti = float(raw_input()) 
    print "Your body mass index, BMI, is", weighti * 703/heighti**2 
else: 
    print "What is your weight?" 
    weightm = float(raw_input()) 
    print "What is your height?" 
    heightm = float(raw_input()) 
    print "your body mass index, BMI, is", weightm/heightm**2 
+3

あなたは 'if'が何をするのか理解していますか? –

+1

'var1 = ans'を削除し、' if ans == var1: 'をif文として使用してください。 –

+0

ここで誤解されているのは、' if var1: 'の文で、現在の値ではなくvar1が存在するかどうかを調べます。 – dannyxn

答えて

2

: はここに私のコードです。

if var1:は、すでにvar1がブールですが、文字列( "imperial"または "metric")の場合にのみ機能します。

は、以下のことを試してみてください。

var1 = "imperial" 

print "Do you use imperial or metric?" 
ans = raw_input() 
var1 = ans 
if var1 == 'imperial': 
    print "What is your weight?" 
    weighti = float(raw_input()) 
    print "What is your height?" 
    heighti = float(raw_input()) 
    print "Your body mass index, BMI, is", weighti * 703/heighti**2 
else: 
    print "What is your weight?" 
    weightm = float(raw_input()) 
    print "What is your height?" 
    heightm = float(raw_input()) 
    print "your body mass index, BMI, is", weightm/heightm**2 

はまた、あなたのコードの改善を必要とするいくつかのものがあります。

最初に、よりわかりやすい変数名を使用する必要があります。 var1は、変数の内容については何も教えてくれません。 ansは少し良いです。

もう1つは、最初にvar1を「帝国」と定義していますが、別のものに再割り当てする前にvar1を使用しないことです。これは冗長で、var1 = "imperial"行がなければ動作します。

第3のものは、var1変数自体も冗長であることです。 var1 = ansを実行している場合は、ans自体を使用してみませんか?

答えが「imperial」または「metric」でない場合は、常にメトリックがデフォルトになります。それをチェックして、有効な値ではない場合、そのエントリが無効であることをユーザに知らせることができます。

だから、より良いバージョンは次のようになります。

print "Do you use imperial or metric?" 
ans = raw_input() 
if ans == 'imperial': 
    print "What is your weight?" 
    weighti = float(raw_input()) 
    print "What is your height?" 
    heighti = float(raw_input()) 
    print "Your body mass index, BMI, is", weighti * 703/heighti**2 
elif ans == 'metric': 
    print "What is your weight?" 
    weightm = float(raw_input()) 
    print "What is your height?" 
    heightm = float(raw_input()) 
    print "your body mass index, BMI, is", weightm/heightm**2. 
else: 
    print 'Sorry, but that input is not valid. Please enter either "imperial" or "metric".' 
+1

簡単な質問ですが、あなたのコードですべての事故が考慮されるわけではありません。私は 'else ::'の代わりに 'elif var ==" metric ":'と書くでしょう。これらの詳細は初心者のために重要ですが、それは私自身の意見です。 – dannyxn

+0

@dannyxn rightは、より良いバージョンでは、より良いやり方でできることを指摘しています。まだ効率的ではありませんが、コードを完全に変更することなく初心者にいくつかのヒントを与えるべきです。 –

関連する問題