我正在尝试为学校做这个练习,但代码不起作用,准确地说它在计算 BMI 后不执行 if 语句。此外,如果输入不正确,现在会检查 except 语句。请告知要在代码中更正的内容。谢谢!
user_input_1 = input('What is your weight')
user_input_2 = input('What is your height')
b = 'BMI'
b = int(user_input_1)/(float(user_input_2)**2)
while True:
try:
user_input_1 == int and user_input_1 > 0
user_input_2 == float and user_input_2 > 0
print(b)
if b in range(1, 19):
print('You are skinny as a rail')
break
if b in range(19, 26):
print('You are fit as a butcher\'s dog')
break
if b >= 25:
print('You are as plum as a partridge')
break
break
except ZeroDivisionError:
input('Enter your height in meters as a float')
except user_input_1 != int:
input('Please enter your weight in kg')
原文由 Nat 发布,翻译遵循 CC BY-SA 4.0 许可协议
从哪儿开始?
try
块之前,所以你的except ZeroDivisionError
永远不会被触发。except user_input_1 != int
评估为except True
这是无意义的,永远不会被触发while
循环中击中break
的唯一方法是,如果你抛出一个被捕获的异常(如果它没有被捕获,它会逃脱你的while
循环并退出程序)。由于获取用户输入的代码在while
循环 _之外_,因此(如果可以捕获异常)没有区别,您会看到错误消息永远重复。您对 python 的理解似乎存在一些根本性的差距。我建议先填充那些;尝试只实现一个所需的功能(例如,获取用户输入并在无效时显示适当的错误消息)并从那里构建。