编码布尔逻辑时出现未知语法错误

Unknown syntax error when coding boolean logic

提问人:E L M 提问时间:4/28/2022 更新时间:4/28/2022 访问量:39

问:

我正在尝试制作一个 BMI 计算器,但每次运行它时都会收到第 6 行的语法错误。5号线类似,运行没有问题。我最近将 BMI 变量设置为浮点数和整数,看看这是否是我的问题,但我似乎无法弄清楚。

h = float(int(input()))
w = int(input)
bmi = float(int(w / ( h ** 2)))
if bmi < 18.5:
    print(Underweight)
elif bmi >= 18.5 and < 25:
    print(Normal)
elif bmi >= 25 and < 30:
    print(Overweight)
if bmi > 30: 
    print(Obesity)
python if-statement 布尔逻辑

评论


答:

0赞 Joey 4/28/2022 #1

您需要添加 ''' BMI<25 ''' 而不是 ''' <25 '''.

h = float(int(input()))
w = int(input)
bmi = float(int(w / ( h ** 2)))
if bmi < 18.5:
    print(Underweight)
elif bmi >= 18.5 and bmi < 25:
    print(Normal)
elif bmi >= 25 and bmi < 30:
    print(Overweight)
if bmi > 30:
    print(Obesity)

评论

0赞 Jerry101 4/28/2022
或。25 <= bmi < 30
1赞 that other guy 4/28/2022 #2

在英语中你可以说“如果bmi大于18.5且小于25”,大家就会知道“小于25”仍然是指bmi。

不过,Python 并不擅长上下文,因此您必须澄清:

elif bmi >= 18.5 and bmi < 25:

然后,您将遇到一系列其他小问题:

  • 确保使用而不是仅仅用于调用函数。input()input
  • 使用引号来说明这是一个字符串,而不是变量名print("Underweight")
  • float(int(..))没有多大意义,因为到那时你已经截断了值,所以只需使用float(..)

总而言之,你最终会得到:

h = float(input())
w = int(input())
bmi = float(w / ( h ** 2))
if bmi < 18.5:
    print("Underweight")
elif bmi >= 18.5 and bmi < 25:
    print("Normal")
elif bmi >= 25 and bmi < 30:
    print("Overweight")
if bmi > 30: 
    print("Obesity")

如果你愿意,你可以利用你的计算已经在 s 中并且只采用语句的一个分支这一事实来进一步简化它,以获得:floatif..elif..else

h = float(input())
w = int(input())
bmi = w / ( h ** 2)
if bmi < 18.5:
    print("Underweight")
elif bmi < 25:
    print("Normal")
elif bmi < 30:
    print("Overweight")
else:
    # BMI is necessarily > 30 here, otherwise one of the
    # other branches would have triggered already
    print("Obesity")