毕老师用电脑上课。 分析: 先写出正常运行时的代码:电脑开机后上课 分析电脑会出现的问题,如:蓝屏,冒烟 此时需要自定义两个“蓝屏,冒烟“”自定义异常,封装成对象。 蓝屏后,电脑重启,之后继续上课 电脑冒烟后,出现了老师的问题,不能上课了,可以先做练习,毕老师将问题抛给校长。此时抛出的问题不再是电脑冒烟,而应该是老师不能上课了 问题抛给校长后,校长catch后给出解决方案
时间: 2023-08-09 21:06:11 浏览: 95
正常运行时的代码:
```python
class Computer:
def __init__(self):
self.is_on = False
def turn_on(self):
self.is_on = True
def turn_off(self):
self.is_on = False
class Teacher:
def __init__(self):
self.computer = Computer()
def start_class(self):
self.computer.turn_on()
# 上课操作...
def end_class(self):
self.computer.turn_off()
```
蓝屏和冒烟都是电脑出现的问题,我们可以自定义两个异常类来封装这两个问题:
```python
class BlueScreenException(Exception):
def __str__(self):
return "电脑蓝屏了!"
class SmokeException(Exception):
def __str__(self):
return "电脑冒烟了!"
```
在代码中,当遇到这两个问题时,我们可以抛出这两个异常:
```python
class Computer:
def __init__(self):
self.is_on = False
def turn_on(self):
# 模拟开机过程
if random.random() < 0.1:
raise BlueScreenException()
self.is_on = True
def turn_off(self):
self.is_on = False
print("电脑已关机")
def run(self):
# 模拟电脑运行过程
if random.random() < 0.1:
raise SmokeException()
print("电脑运行正常")
class Teacher:
def __init__(self):
self.computer = Computer()
def start_class(self):
try:
self.computer.turn_on()
self.computer.run()
# 上课操作...
except BlueScreenException:
print("出现蓝屏,正在重启...")
self.computer.turn_on()
self.computer.run()
# 上课操作...
except SmokeException:
print("电脑冒烟了!")
raise
def end_class(self):
self.computer.turn_off()
```
当出现蓝屏时,我们进行重启操作后继续上课;当出现冒烟时,我们抛出异常并将问题抛给校长处理。
```python
class Principal:
def solve_problem(self, problem):
print("校长正在处理问题:", problem)
class Teacher:
def __init__(self):
self.computer = Computer()
def start_class(self):
try:
self.computer.turn_on()
self.computer.run()
# 上课操作...
except BlueScreenException:
print("出现蓝屏,正在重启...")
self.computer.turn_on()
self.computer.run()
# 上课操作...
except SmokeException:
print("电脑冒烟了!")
raise TeacherException()
def end_class(self):
self.computer.turn_off()
class TeacherException(Exception):
def __str__(self):
return "老师不能上课了!"
class Principal:
def __init__(self):
self.teacher = Teacher()
def solve_problem(self, problem):
if isinstance(problem, TeacherException):
print("校长正在处理问题:", problem)
# 给出解决方案...
else:
print("校长无法处理此问题!")
principal = Principal()
try:
principal.teacher.start_class()
except TeacherException as e:
principal.solve_problem(e)
```
阅读全文