如何用Python实现校验指定车型是否在字典中,存在则求和否则返回缺失提示
原有代码问题分析
你写的现有代码逻辑完全没有完成校验要求:
- 遍历CARS所有键的循环无意义,函数进入循环的第一时间就会直接返回三个车型的价格和,根本不会执行校验逻辑
- 没有针对传入的3个车型参数做逐个存在性校验,自然无法识别不存在的车型
实现代码
直观易读版本
# 全局汽车价格字典 CARS = { "Honda Accord": 2500, "Ford Mustang": 30000, "Mercedez Benz C63": 54000, "Audi A4": 35000, "Toyota Camry": 2300 } def func(car1, car2, car3): # 逐个校验传入的3个车型是否存在 for car in [car1, car2, car3]: if car not in CARS: return f"{car} not found" # 所有车型都存在时返回价格总和 return CARS[car1] + CARS[car2] + CARS[car3]
更简洁的写法
利用生成器表达式快速匹配不存在的车型,结合sum函数直接求和,代码更精简:
def func(car1, car2, car3): miss_car = next((car for car in (car1, car2, car3) if car not in CARS), None) return f"{miss_car} not found" if miss_car else sum(CARS[car] for car in (car1, car2, car3))
效果测试
- 所有车型存在时:调用
func("Ford Mustang", "Audi A4", "Toyota Camry"),返回结果为67300 - 存在不存在的车型时:调用
func("Honda Accord", "BMW 3系", "Mercedez Benz C63"),返回结果为BMW 3系 not found
内容的提问来源于stack exchange,提问作者Aanwar
相关产品推荐
相关产品推荐

