如何在Python租车系统中根据车牌号从文件获取对应车辆价格
完善租车系统的车牌号匹配与价格查询功能
需求背景
需要实现功能:用户输入车牌号后,从AvailableVehicles.txt文件中匹配对应车辆,并输出其价格。文件第三列为车辆价格,内容格式如下:
RegNumber | Car Name | Price | Transmission Type H4E-11,Toyota,66,Automatic Transmission X11-11,Volkswagen,62,Automatic Transmission JBA-123,Ibiza,65,Automatic Transmission MDZ-A1A,Kodiaq,71,Automatic Transmission
现有代码
已编写部分returnCar函数,用于获取用户输入并检查车牌号是否存在:
def returnCar(): # Ask registration number of car to rent regNumber = str(input("Please enter Registration Number of Car: ")) # Check if Car is in the system regNumbers = [] # List of registration number [H4E-11, X11-11, JBA-123, MDZ-A1A] with open("../AvailableVehicles.txt", "r", encoding="utf-8") as f: for data in f: regRow = str(data.split(",")[0]) regNumbers += [regRow] # append registration number to the list if regNumber in regNumbers: # get price from equivalent row
完善后的代码
优化逻辑,无需先存储所有车牌号再二次查找,直接遍历文件时匹配目标车牌号,找到后立即提取价格并输出,同时处理表头和未找到的情况:
def returnCar(): # 获取用户输入的车牌号,去除首尾空格 regNumber = input("Please enter Registration Number of Car: ").strip() # 读取文件并查找匹配车辆 with open("../AvailableVehicles.txt", "r", encoding="utf-8") as f: # 跳过第一行表头 next(f) for line in f: # 去除行尾换行符并分割数据 parts = line.strip().split(",") # 确保行数据格式符合要求 if len(parts) >= 3: current_reg = parts[0].strip() if current_reg == regNumber: price = parts[2].strip() print(f"The price is: {price} dollars") return # 遍历结束未找到匹配车辆 print("Car not found in the system.") # 调用函数测试 returnCar()
代码说明
- 用
strip()处理输入和文件字符串,避免空格干扰匹配 - 用
next(f)跳过表头行,防止匹配到表头文本 - 匹配成功后立即输出价格并终止函数,提升执行效率
- 增加格式校验和未找到车辆的提示逻辑
测试输出示例
Please enter Registration Number of Car: H4E-11 The price is: 66 dollars
内容的提问来源于stack exchange,提问作者Tittoh
相关产品推荐
相关产品推荐

