如果结合计算

2024-10-01 04:46:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个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

Tags: 程序inputyourrawisfloatwhatprint
1条回答
网友
1楼 · 发布于 2024-10-01 04:46:16

您没有正确使用if语句。你知道吗

if var1:只有在var1已经是bool,但它是字符串(可以是“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好一点。你知道吗

第二个问题是,您在开始时将var1定义为“imperial”,但在将它重新分配给其他对象之前,您不会使用var1。它是多余的,没有var1 = "imperial"行就可以工作。你知道吗

第三个是var1变量本身也是冗余的。如果你在做var1 = ans,那么为什么不使用ans本身呢?你知道吗

第四,如果答案不是“imperial”或“metric”,它将始终默认为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".'

相关问题 更多 >