python_test

更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
面向对象与契约多态综合实战:电商全自动多层级会员结算防御系统(20分) 谷泰格在第八章中指出,面向对象最大的威力在于通过继承来复用代码,并通过多态来让高层业务逻辑保持极致的稳定与优雅。任务要求:请你为一家电商网站编写一套结算系统。系统内包含三种不同层级的会员类,它们共同遵守一个核心结算契约方法:calculate_price(self, raw_price)。 • 组件1:设计基础父类 Customer (普通顾客)(5分) • 内部初始化方法 __init__(self, name) :设置一个受保护的姓名属性 self._name 。 • 核心契约方法 calculate_price(self, raw_price) :普通顾客没有任何折扣,传入多少原始总价 raw_price ,就直接返回多少原价。 • 组件2:设计派生子类 VIPCustomer (贵宾会员)(5分) • 继承自 Customer 。 • 重写 calculate_price 方法:贵宾会员享受9折优惠,返回结算后的价格。 • 组件3:设计派生子类 SuperVIPCustomer (满减超级会员)(5分) • 继承自 VIPCustomer 。 • 重写 calculate_price 方法:超级会员不仅享受9折优惠,在打完折的基础上,如果折后总价满100元,还能再享受立减20元的叠加福利。 • 组件4:高层统一驱动函数与异常防御(5分) • 编写一个高层的独立清算结算函数 checkout_process(customer_obj, price) 。 • 前置条件输入防御:首先检查传入的 price 是否大于0。如果 price <= 0 ,立刻使用 raise 主动抛出内置异常 ValueError ,提示 "清算总价必须大于0!" 。 • 多态联动运行:该函数不需要知道当前来结账的具体是哪种会员,只需要无脑调用传入对象的 customer_obj.calculate_price(price) ,并将其与顾客的姓名优雅打印出来。
工业级鲁棒数据清洗:多策略多防线日志清算清洗驱动器(20分) 谷泰格在第七章向我们展示了如何将异常处理逻辑和代码防御契约完美结合,从而让程序在遭遇各类损坏数据时能够像“不倒翁”一样屹立不倒。任务要求:现在后台有一组来自第三方不靠谱接口的温度传感器日志列表,有些数据格式损毁(如字符串无法转浮点数),有些数据缺失: sensor_logs = ["23.5", "abc", "18.9", None, "999.0", "12.0"] 请你编写一个名为clean_temperature_data(logs)的高级清洗函数。 业务处理契约: 1. 遍历logs列表。针对每一条温度记录,首先使用try...except结构尝试将其转换为浮点数`float`。 2. 多重异常拦截线: • 如果发生ValueError(如"abc"转换失败),在控制台打印:"跳过损坏条目:无法解析的文本"。 • 如果发生TypeError(如None无法转换),在控制台打印:"跳过损坏条目:数据缺失"。 3. 后置状态断言防线(调试期严苛哨兵): • 如果数据顺利转换为浮点数,在将其计入有效列表之前,必须通过一条assert断言强制确保温度在一个极端的、物理上合理的闭区间内:-50.0 ≤ temp ≤ 100.0。 • 如果温度超出这个宇宙范围(如出现了恶意的超级噪声"999.0"),断言会瞬间熔断,抛出AssertionError。 • 在外层用except AssertionError:拦截该熔断,并打印:"跳过异常条目:温度数据严重越界"。 4. 正常汇聚结果:将通过了“类型强制转换关卡”和“断言范围关卡”的所有合法温度数值,存入一个干净的列表valid_temperatures中。 5. 全局清算收尾(finally契约):无论这个列表在清洗期间遭遇了多少次失败和拦截,在函数彻底结束前,必须执行finally块,在控制台打印一行"数据流清洗清算完毕"。 6. 返回值:最终返回合法温度列表valid_temperatures。