我正在写一个BMI计算器程序,有公制和英制两种选择。我的问题是,当我尝试公制的时候,程序一定是通过帝国方程式运行数字,因为我得到了一个疯狂的答案。 这是我的密码:
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
您没有正确使用
if
语句。你知道吗if var1:
只有在var1
已经是bool,但它是字符串(可以是“imperial”或“metric”)时才起作用。你知道吗请尝试以下操作:
此外,代码中还有一些地方需要改进。你知道吗
第一个是应该使用更具描述性的变量名。
var1
没有告诉我变量的内容。ans
好一点。你知道吗第二个问题是,您在开始时将
var1
定义为“imperial”,但在将它重新分配给其他对象之前,您不会使用var1
。它是多余的,没有var1 = "imperial"
行就可以工作。你知道吗第三个是
var1
变量本身也是冗余的。如果你在做var1 = ans
,那么为什么不使用ans
本身呢?你知道吗第四,如果答案不是“imperial”或“metric”,它将始终默认为metric。您可以检查它,并让用户知道,如果它不是任何一个有效值,他的条目是无效的。你知道吗
所以更好的版本是:
相关问题 更多 >
编程相关推荐