MEMOO
MEMOO
Published on 2025-04-19 / 2 Visits
0
0

Python异常处理try...except...else语句

摘要:在本教程中,你将学习如何使用 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…elsefinally 示例

如果 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 子句之前执行。


Comment