class IllegalArgLenException(Exception): def __init__(self, message): self.message = message class NotNumberException(Exception): def __init__(self, message): self.message = message class NotTriangleException(Exception): def __init__(self, message): self.message = message def is_triangle(a, b, c): if a + b > c and a + c > b and b + c > a: return True else: return False try: nums = input("请输入三个数字,以逗号分隔:").split(",") if len(nums) != 3: raise IllegalArgLenException("参数个数不正确") a, b, c = float(nums[0]), float(nums[1]), float(nums[2]) if not (isinstance(a, (int, float)) and isinstance(b, (int, float)) and isinstance(c, (int, float))): raise NotNumberException("输入不是数字类型") if not is_triangle(a, b, c): raise NotTriangleException("a, b, c不能构成三角形") print("三角形三边长分别为:{:.2f}, {:.2f}, {:.2f}".format(a, b, c)) print("三角形周长为:{:.2f}".format(a + b + c)) except IllegalArgLenException as e: print(e.message) except NotNumberException as e: print(e.message) except NotTriangleException as e: print(e.message) except Exception as e: print("发生未知异常:", e) finally: print("程序运行结束")解释一下这段代码
时间: 2023-12-06 17:43:25 浏览: 96
python使用 __init__初始化操作简单示例
5星 · 资源好评率100%
这段代码实现了一个判断三个数字能否构成三角形的程序,主要涉及到以下几个类和函数:
1. `IllegalArgLenException`:当输入参数个数不正确时,抛出该异常。
2. `NotNumberException`:当输入值不是数字类型时,抛出该异常。
3. `NotTriangleException`:当三个数字不能构成三角形时,抛出该异常。
4. `is_triangle(a, b, c)`:判断三个数字能否构成三角形。
在 `try` 块中,首先通过 `input` 函数获取用户输入的三个数字,并使用 `split` 函数将其以逗号分隔成一个列表。接着,使用 `len` 函数判断列表的长度是否为 3,如果不为 3,则抛出 `IllegalArgLenException` 异常。然后,使用 `float` 函数将列表中的每个元素转换为浮点数类型,并判断是否为数字类型,如果不是数字类型,则抛出 `NotNumberException` 异常。最后,调用 `is_triangle(a, b, c)` 函数判断三个数字能否构成三角形,如果不能构成三角形,则抛出 `NotTriangleException` 异常。如果以上步骤都没有出现异常,则输出三角形三边长和周长。
在 `except` 块中,分别捕获不同类型的异常,并输出对应异常的提示信息。在 `finally` 块中,输出程序运行结束的提示信息。
阅读全文