最终阶段:汇报 (The Report).
魔像已经完全运作正常。它能读取任务,安全执行,并在需要时充电。
现在,进行最后的测试:全流程模拟。 魔像必须执行列表中的所有任务,并将 汇报 写入文件。
主循环
我们需要一个方法 execute_all(self)。它应该:
- 以 写入模式 (
"w") 打开report.txt。 - 遍历
self.tasks中的每一个任务。 - 尝试运行
work()。 - 将结果写入文件(例如:"Executed: Patrol\n")。
- 如果遇到
ValueError(低电量),写入 "Recharging...\n" 并重置能量。
def execute_all(self):
with open("report.txt", "w") as f:
for task in self.tasks:
try:
self.work()
f.write(f"Done: {task}\n")
except ValueError:
f.write("Recharging...\n")
self.energy = 20
1
定义 execute_all
创建方法 execute_all(self)。
2
打开文件
使用 with open("report.txt", "w") as f: 创建汇报文件。
3
处理任务
在 with 块中遍历 self.tasks。
尝试 work()。如果成功,写入 "Done: [task]" 到文件。
4
处理错误并记录
如果逻辑抛出 ValueError,写入 "Recharging..." 到文件,并充电至 20。
这就是终点!你将读取、写入、循环、异常处理和 OOP 状态管理结合到了一个系统中。这就是架构。
参考答案点击展开点击收起
点击展开点击收起
参考答案:
import random
class Golem:
def __init__(self, name):
self.name = name
self.energy = 20
self.tasks = []
def work(self):
loss = random.randint(5, 15)
if self.energy < loss:
raise ValueError("Low Battery!")
self.energy -= loss
# 我们这里不打印,保持输出整洁,你随意。
def load_tasks(self, filename):
with open(filename, 'r') as f:
for line in f:
self.tasks.append(line.strip())
def execute_all(self):
with open("report.txt", "w") as f:
for task in self.tasks:
try:
self.work()
f.write(f"Done: {task}\n")
print(f"Done: {task}")
except ValueError:
f.write("Recharging...\n")
print("Recharging...")
self.energy = 20
# 充电后重试任务!
self.work()
f.write(f"Done: {task}\n")
print(f"Done: {task}")
bob = Golem("Bob")
bob.load_tasks("tasks.txt")
bob.execute_all()Loading...
终端输出
Terminal
Ready to run...