摘要:在本教程中,你将学习如何使用 Python 的 try...except...else
语句。
Python try…except…else
语句介绍
try
语句有一个可选的 else
子句,其语法如下:
try:
# code that may cause errors
except:
# code that handle exceptions
else:
# code that executes when no exception occurs
try...except...else
语句的工作原理如下:
如果
try
子句中发生异常,Python 会跳过try
子句中的其余语句,并执行except
语句。如果
try
子句中没有发生异常,则执行else
子句。当包含
finally
子句时else
子句会在try
子句之后finally
子句之前执行。
Python try…except…else
语句示例
以下是一些使用 try...except...else
语句的示例。
1) 使用 try…except…else
语句进行流程控制
以下示例说明了如何使用 try...except...else
子句开发一个计算身体质量指数(BMI)的程序。
首先,定义一个根据身高和体重计算 BMI 的函数:
def calculate_bmi(height, weight):
""" calculate body mass index (BMI) """
return weight / height**2
第二,定义另一个用于评估 BMI 的函数:
def evaluate_bmi(bmi):
""" evaluate the bmi """
if 18.5 <= bmi <= 24.9:
return 'healthy'
if bmi >= 25:
return 'overweight'
return 'underweight'
第三,定义一个新的 main()
函数,该函数提示用户输入身高和体重,并打印出 BMI 结果:
def main():
try:
height = float(input('Enter your height (meters):'))
weight = float(input('Enter your weight (kilograms):'))
except ValueError as error:
print('Error! please enter a valid number.')
else:
bmi = round(calculate_bmi(height, weight), 1)
evaluation = evaluate_bmi(bmi)
print(f'Your body mass index is {bmi}')
print(f'This is considered {evaluation}!')
main()
函数使用 try...except...else
语句来控制其流程。如果你输入的身高和体重无法转换为数字,将会引发 ValueError
异常。
如果没有发生异常else
子句将会执行。它会计算 BMI 指数并显示评估结果。
将所有代码整合在一起:
def calculate_bmi(height, weight):
""" calculate body mass index (BMI) """
return weight / height**2
def evaluate_bmi(bmi):
""" evaluate the bmi """
if 18.5 <= bmi <= 24.9:
return 'healthy'
if bmi >= 25:
return 'overweight'
return 'underweight'
def main():
try:
height = float(input('Enter your height (meters):'))
weight = float(input('Enter your weight (kilograms):'))
except ValueError as error:
print(error)
else:
bmi = round(calculate_bmi(height, weight), 1)
evaluation = evaluate_bmi(bmi)
print(f'Your body mass index is {bmi}')
print(f'This is considered {evaluation}!')
main()
2) 使用 Python 的 try…except…else
和 finally
示例
如果 try
子句中没有发生异常else
子句会在 finally
子句之前执行。
以下示例展示了如何使用 try...except...else...finally
子句:
fruits = {
'apple': 10,
'orange': 20,
'banana': 30
}
key = None
while True:
try:
key = input('Enter a key to lookup:')
fruit = fruits[key.lower()]
except KeyError:
print(f'Error! {key} does not exist.')
except KeyboardInterrupt:
break
else:
print(fruit)
finally:
print('Press Ctrl-C to exit.')
工作原理:
首先,定义一个包含三个元素的
fruits
字典。其次,使用
while
循环反复获取用户输入。循环会在用户按下Ctrl+C
时停止。第三,在
while
循环内部使用try...except...else...finally
子句。我们使用用户输入在字典中查找元素。
如果键不存在,会引发 KeyError
异常except
子句将执行。
如果用户按下 Ctrl+C
,会引发 KeyboardInterrupt
异常,执行 break
语句以终止循环。
如果在 fruits
字典中找到了键,程序会打印出找到的元素。
finally
子句总是会执行。它会向用户显示提示,告知他们应按下 Ctrl+C
退出。
总结
使用 Python 的
try...except...else
语句可以在发生异常时为程序提供一种控制流程的方式。如果没有在
try
子句中发生异常else
子句将执行。如果是这样
else
子句会在try
子句之后finally
子句之前执行。