如何结合列表推导与if-else实现司机记录删除的状态提示?
问题分析与解决方案
原代码的核心错误在于判断条件if driver_name in driver_details:driver_details是嵌套列表,每个元素都是包含司机信息的子列表,直接判断字符串是否在顶层列表里永远不会成立,所以才会一直提示"Record Not found"。
要实现正确功能,需要先确认是否存在目标司机记录,再执行删除并给出对应提示,结合列表推导的实现方式如下:
修正后的完整代码
driver_details = [["Ken Block","55","Hoonigan","Mustang"], ["Ken Miles","48","Ford","Ford GT"]] def delete_driver(): """This function is used to delete driver details by entering the driver name""" global driver_details driver_name = input("Enter driver name: ") # 先检查目标司机是否存在 driver_exists = any(driver[0] == driver_name for driver in driver_details) if driver_exists: # 用列表推导过滤掉目标司机的记录 driver_details = [driver for driver in driver_details if driver[0] != driver_name] print("Record Deleted") else: print("Record Not found") print(driver_details) options() # 假设options()是你定义的其他功能菜单函数
关键说明
- 使用
any(driver[0] == driver_name for driver in driver_details)遍历嵌套列表,检查是否存在姓名匹配的司机记录,这是判断的核心逻辑。 - 列表推导
[driver for driver in driver_details if driver[0] != driver_name]会生成一个新列表,排除掉姓名匹配的记录,实现删除效果。 - 先判断再执行删除,能准确对应操作结果给出提示,解决了之前要么判断错误要么提示错误的问题。
内容的提问来源于stack exchange,提问作者Jr.Macking
相关产品推荐
相关产品推荐

