提问人:E L M 提问时间:4/28/2022 更新时间:4/28/2022 访问量:39
编码布尔逻辑时出现未知语法错误
Unknown syntax error when coding boolean logic
问:
我正在尝试制作一个 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)
答:
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 中并且只采用语句的一个分支这一事实来进一步简化它,以获得:float
if..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")
评论