我们今天不学习新的知识点,只处理前面几天学习面向对象留下的作业,大家若是对作业解答有不同见解,都可以留言交流。
作业:
数据库连接管理器,题目要求:
请编写一个名为 DatabaseConnection的类,实现单例模式。要求如下:
① 该类只能创建一个实例。
② 如果尝试创建第二个实例,应返回第一个实例,而不是新建一个。
③ 该类有一个 get_connection_info()方法,用于返回一个简单的字符串,例如:"这是数据库连接信息..."。
④ 编写代码验证两个变量指向的是同一个对象。
classDatabaseConnection: # 类属性,用于存储唯一的实例 __instance = None # 重写 __new__ 方法来控制实例的创建 def __new__(cls, *args, **kwargs): # 判断类属性 __instance 是否为 None ifnot cls.__instance: # 如果为 None,则调用父类的 __new__ 方法创建一个新实例,并赋值给 __instance cls.__instance = super().__new__(cls, *args, **kwargs) print("创建了唯一的数据库连接实例。") else: print("实例已存在,返回已创建的实例。") # 返回存储在 __instance 中的唯一实例 return cls.__instance def get_connection_info(self): return"这是数据库连接信息..."# 验证代码if __name__ == '__main__': # 尝试创建第一个对象 db_conn1 = DatabaseConnection() # 尝试创建第二个对象 db_conn2 = DatabaseConnection() # 打印两个对象的连接信息 print(db_conn1.get_connection_info()) print(db_conn2.get_connection_info()) # 验证两个变量是否指向同一个对象(内存地址相同) print(f"db_conn1 和 db_conn2 是同一个对象吗?{db_conn1 is db_conn2}") # 验证它们的内存地址(id)是否相同 print(f"db_conn1 的 id: {id(db_conn1)}") print(f"db_conn2 的 id: {id(db_conn2)}")
作业:
设置一个程序,程序会提示用户输入一个数字,然后尝试将这个输入转换成整数。如果用户输入的内容无法转换为整数(例如输入了字母"abc"),程序会捕获这个错误,并打印一条友好的提示信息"输入错误,请输入一个有效的数字"。
user_input = input("请输入一个数字:")try: number = int(user_input) # 尝试将输入转换为整数 print(f"您输入的数字是:{number}")except ValueError: # 捕获转换失败引发的 ValueError 异常 print("输入错误,请输入一个有效的数字。"
输入整数的结果:
输入非整数的结果:
作业:
简易文件读取与数据转换,题目要求:
请编写一个程序,尝试完成以下操作:
(1)提示用户输入一个文件名。
(2)尝试打开该文件,并读取文件中的第一行内容。
(3)尝试将读取到的内容转换为一个整数。
(4)打印转换成功后的整数。
程序需要处理以下两种可能的错误情况:
① 用户输入的文件不存在。(引发 FileNotFoundError)
② 文件中的内容无法转换为整数。(引发 ValueError)
try: # 1. 提示用户输入文件名 filename = input("请输入要打开的文件名:") # 2. 尝试打开文件并读取第一行(可能引发 FileNotFoundError) with open(filename, 'r', encoding='utf-8') as f: content = f.readline().strip() # 读取一行并去除首尾空白字符 print(f"从文件中读取到的内容是:'{content}'") # 3. 尝试将内容转换为整数(可能引发 ValueError) number = int(content) # 4. 如果以上步骤都成功,打印转换后的整数 print(f"成功转换为整数:{number}")except FileNotFoundError: # 处理文件不存在的异常 print(f"错误:找不到文件 '{filename}',请检查文件名是否正确。")except ValueError: # 处理内容转换失败的异常 print(f"错误:无法将内容 '{content}' 转换为整数。")finally: # 无论是否发生异常,都会执行的代码块 print("程序执行完毕。")
输入存在的文件名:python.txt
输入不存在的文件名:adad
今日学习完毕,课后作业:
有空的小伙伴,可以参考代码运行,还是建议不看着代码自己手打,学习效率更好。明天继续学习新的python知识点。