某班需要从磁盘文件1.txt中读入若干同学的《面向对象程序设计》成绩求平均值,并把平均值输出到屏幕上。现在要求设计一个File类完成此项工作。
时间: 2024-03-22 10:41:18 浏览: 55
好的,根据您的要求,可以设计如下的File类:
```python
class File:
def __init__(self, filename):
self.filename = filename
def read_scores(self):
try:
with open(self.filename, 'r') as f:
scores = [float(line.strip()) for line in f.readlines()]
return scores
except IOError:
print("Error: Cannot open file {}".format(self.filename))
return []
def calculate_average(self):
scores = self.read_scores()
if scores:
avg = sum(scores) / len(scores)
return avg
else:
return 0
```
其中,构造函数`__init__()`接受一个文件名参数,并将其保存在实例变量`filename`中。read_scores()方法用于从文件中读入成绩,处理过程中可能会出现IOError异常,因此在函数中进行了异常处理。calculate_average()方法利用read_scores()方法获取成绩,计算平均值并返回。
使用示例:
```python
f = File('1.txt')
avg = f.calculate_average()
print("The average score is: {:.2f}".format(avg))
```
其中,"1.txt"是存储成绩的文件名,可以根据实际情况修改。最后输出的平均值保留两位小数,可以根据需要进行修改。
阅读全文