: はここに私のコードです。
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".'
あなたは 'if'が何をするのか理解していますか? –
'var1 = ans'を削除し、' if ans == var1: 'をif文として使用してください。 –
ここで誤解されているのは、' if var1: 'の文で、現在の値ではなくvar1が存在するかどうかを調べます。 – dannyxn