def __init__、__enter__、__exit__、__del__在with下的表现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现在程序结束时数据不丢失,可以将数据保存到文件中,程序启动时从文件中读取数据并加载到程序中。可以按照以下步骤进行修改: 1. 定义一个函数用于保存数据到文件中,例如`save_data()`,在程序退出前调用该函数。 2. 定义一个函数用于从文件中读取数据,例如`load_data()`,在程序启动时调用该函数。 3. 将所有需要保存的数据存储在一个字典或类中,例如`booking_data`。 4. 在程序执行过程中,对`booking_data`进行操作。 5. 在`save_data()`函数中,将`booking_data`保存到文件中。 6. 在`load_data()`函数中,从文件中读取数据并加载到`booking_data`中。 以下是修改后的代码示例: ```python import json class BookingSystem: def __init__(self): self.booking_data = {} # 存储所有订票信息的字典 self.load_data() # 从文件中加载数据 def book_ticket(self, flight_number, seat_number, name): if flight_number not in self.booking_data: self.booking_data[flight_number] = {} # 如果该航班没有订票信息,则新建一个字典 if seat_number in self.booking_data[flight_number]: return False # 如果该座位已经被预订,则返回False self.booking_data[flight_number][seat_number] = name # 记录订票信息 return True def cancel_ticket(self, flight_number, seat_number): if flight_number not in self.booking_data or seat_number not in self.booking_data[flight_number]: return False # 如果该航班或该座位没有被预订,则返回False del self.booking_data[flight_number][seat_number] # 取消订票信息 return True def display_seats(self, flight_number): print(f"Flight {flight_number} seating arrangement:") for i in range(1, 11): if str(i) in self.booking_data.get(flight_number, {}): print("X", end=" ") else: print(i, end=" ") print() def save_data(self): with open("booking_data.json", "w") as f: json.dump(self.booking_data, f) def load_data(self): try: with open("booking_data.json", "r") as f: self.booking_data = json.load(f) except FileNotFoundError: pass # 如果文件不存在,则不做任何操作 if __name__ == "__main__": booking_system = BookingSystem() while True: print("1. Book ticket") print("2. Cancel ticket") print("3. Display seats") print("4. Exit") choice = input("Enter your choice: ") if choice == "1": flight_number = input("Enter flight number: ") seat_number = input("Enter seat number: ") name = input("Enter name: ") if booking_system.book_ticket(flight_number, seat_number, name): print("Ticket booked successfully") else: print("Seat already booked") elif choice == "2": flight_number = input("Enter flight number: ") seat_number = input("Enter seat number: ") if booking_system.cancel_ticket(flight_number, seat_number): print("Ticket cancelled successfully") else: print("Seat not booked") elif choice == "3": flight_number = input("Enter flight number: ") booking_system.display_seats(flight_number) elif choice == "4": booking_system.save_data() # 保存数据到文件中 print("Goodbye!") break else: print("Invalid choice") ``` 在上面的代码中,`save_data()`函数使用`json`模块将`booking_data`字典保存到文件中,`load_data()`函数从文件中读取数据并加载到`booking_data`中。程序启动时,会先调用`load_data()`函数从文件中加载数据,当用户选择退出时,会调用`save_data()`函数将数据保存到文件中。这样,在程序结束时,数据不会丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值