你没有正确使用if
声明。
if var1:
只有在var1
已经是bool,但是它是一个字符串(“英制”或“公制”)时才起作用。
尝试以下操作:
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
更好一点。
第二个问题是,您在开始时将var1
定义为“帝国”,但在重新指派给其他人之前,您不使用var1
。这是多余的,它会运行没有var1 = "imperial"
线。
第三个是var1
变量本身也是多余的。如果你正在做var1 = ans
那么为什么不使用ans
本身?
第四是如果答案不是“英制”或“公制”,它总是默认为公制。您可以检查并让用户知道,如果它的输入不是有效值,那么他的输入无效。
因此,一个更好的版本是:
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 var1:'你检查var1是否存在,而不是它的当前值。 – dannyxn