23.3练习。 题目: 设计一个程序要求用户输入一个文件名,然后读取该文件中的整数,计算这些整数的平均值,并输出结果。如果文件不存在或无法打开,则抛出一个自定义的异常对象,并在异常处理程序中输出错误信息。 要求: 使用自定义的异常类来表示文件打开异常,命名为"FileOpenException"。 使用异常处理机制来捕获并处理可能出现的文件打开异常在异常处理程序中输出错误信息:“无法打开文件!”。。提示: 可以定义一个函数来读取文件中的整数,并在该函数中抛出异常。在主函数中调用该函数,并使用try-catch语句来捕获和处理异常。
时间: 2024-02-23 11:02:36 浏览: 56
好的,我理解了你的要求。下面是实现这个程序的代码:
```python
class FileOpenException(Exception):
pass
def read_integers_from_file(filename):
try:
with open(filename, 'r') as file:
integers = [int(line.strip()) for line in file.readlines()]
return integers
except FileNotFoundError:
raise FileOpenException('无法打开文件!')
try:
filename = input('请输入文件名:')
integers = read_integers_from_file(filename)
average = sum(integers) / len(integers)
print(f'整数的平均值为:{average}')
except FileOpenException as e:
print(e)
```
首先定义了一个名为`FileOpenException`的自定义异常类,用于表示文件打开异常。然后定义了一个名为`read_integers_from_file`的函数,用于读取文件中的整数。该函数使用了`with`语句打开文件,并使用列表推导式读取文件中的每一行整数。如果文件不存在或无法打开,则会抛出自定义的`FileOpenException`异常。
在主函数中,先输入文件名,然后调用`read_integers_from_file`函数读取整数,并计算平均值。如果出现了`FileOpenException`异常,则会在异常处理程序中输出错误信息:“无法打开文件!”。如果一切正常,则会输出整数的平均值。
希望这个程序能够满足你的需求!
阅读全文