Advertisement

出租车起步价14元,包含3公里;晚上11点至次日清晨6点,起步价调整为18元,同样包含3公里。之后每公里2.5元。

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
此地出租车实行分时段计费,白天起步价14元含首3公里,夜间(23:00-次日6:00)则升至18元,并同为前3公里内费用;超出后一律每公里加收2.5元。 设计一个出租车计费系统类(TaxiFareCalculator),该类应该能够根据给定的距离、时间以及是否在外环区域来计算费用,并且支持灵活的扩展性以适应未来可能的需求变化。 ### 1. 设计要求 - **灵活性**:代码应能轻松调整费率和规则。 - **可扩展性**:便于添加新的功能或修改现有逻辑,例如增加高峰时段定价等。 ### 2. 类设计 ```python class TaxiFareCalculator: def __init__(self, base_fare_day=14, base_fare_night=18, rate_after_3km_day=(2.5, 3.5), rate_after_3km_night=(3., 4.7), waiting_fee_per_minute=.1): self.base_fare_day = base_fare_day self.base_fare_night = base_fare_night self.rate_after_3km_day = rate_after_3km_day[0] self.rate_after_10km_day = rate_after_3km_day[1] self.rate_after_3km_night = rate_after_3km_night[0] self.rate_after_10km_night = rate_after_3km_night[1] self.waiting_fee_per_minute = waiting_fee_per_minute def calculate_fare(self, distance_km, is_outer_ring=False, start_time=None): base_fare = self.base_fare_day if (start_time.hour >= 23 or start_time.hour < 6): # 判断是否为夜间 base_fare = self.base_fee_night fare_after_10km_rate = self.rate_after_10km_night \ if is_outer_ring else self.rate_after_10km_day total_cost = base_fare + (distance_km - 3) * ( self.rate_after_3km_night if distance_km > 10 and is_outer_ring else fare_after_10km_rate) return round(total_cost, 2) def calculate_waiting_fee(self, waiting_minutes): 计算等候费 fee = max(0, (waiting_minutes // 10) * self.waiting_fee_per_minute) return round(fee, 2) # 测试代码 if __name__ == __main__: calculator = TaxiFareCalculator() # 示例测试:白天3公里内乘车,无等候时间 print(calculator.calculate_fare(3)) # 晚上10公里外的行车费用,在外环区域,并且有25分钟等待时间 waiting_time_minutes = 25 fare_overnight_outer_ring = calculator.calculate_fare( distance_km=18, is_outer_ring=True, start_time=datetime.time(3)) total_cost_with_waiting_fee = \ fare_overnight_outer_ring + calculator.calculate_waiting_fee(waiting_time_minutes) print(total_cost_with_waiting_fee) ``` 以上代码通过`TaxiFareCalculator`类实现了出租车费用计算的功能,同时支持灵活的费率调整和等候费计算。此外,测试部分展示了如何使用这个类来模拟不同的场景以验证其正确性。 ### 3. 设计模式 - **策略设计模式**:可以通过参数化的方式定义不同时间段或区域内的价格规则。 - **工厂方法(Factory Method)设计模式**:如果在未来需要支持多种类型的出租车计算模型,可以考虑使用此模式创建相应的对象实例。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 1431161832.5
    优质
    此地出租车实行分时段计费,白天起步价14元含首3公里,夜间(23:00-次日6:00)则升至18元,并同为前3公里内费用;超出后一律每公里加收2.5元。 设计一个出租车计费系统类(TaxiFareCalculator),该类应该能够根据给定的距离、时间以及是否在外环区域来计算费用,并且支持灵活的扩展性以适应未来可能的需求变化。 ### 1. 设计要求 - **灵活性**:代码应能轻松调整费率和规则。 - **可扩展性**:便于添加新的功能或修改现有逻辑,例如增加高峰时段定价等。 ### 2. 类设计 ```python class TaxiFareCalculator: def __init__(self, base_fare_day=14, base_fare_night=18, rate_after_3km_day=(2.5, 3.5), rate_after_3km_night=(3., 4.7), waiting_fee_per_minute=.1): self.base_fare_day = base_fare_day self.base_fare_night = base_fare_night self.rate_after_3km_day = rate_after_3km_day[0] self.rate_after_10km_day = rate_after_3km_day[1] self.rate_after_3km_night = rate_after_3km_night[0] self.rate_after_10km_night = rate_after_3km_night[1] self.waiting_fee_per_minute = waiting_fee_per_minute def calculate_fare(self, distance_km, is_outer_ring=False, start_time=None): base_fare = self.base_fare_day if (start_time.hour >= 23 or start_time.hour < 6): # 判断是否为夜间 base_fare = self.base_fee_night fare_after_10km_rate = self.rate_after_10km_night \ if is_outer_ring else self.rate_after_10km_day total_cost = base_fare + (distance_km - 3) * ( self.rate_after_3km_night if distance_km > 10 and is_outer_ring else fare_after_10km_rate) return round(total_cost, 2) def calculate_waiting_fee(self, waiting_minutes): 计算等候费 fee = max(0, (waiting_minutes // 10) * self.waiting_fee_per_minute) return round(fee, 2) # 测试代码 if __name__ == __main__: calculator = TaxiFareCalculator() # 示例测试:白天3公里内乘车,无等候时间 print(calculator.calculate_fare(3)) # 晚上10公里外的行车费用,在外环区域,并且有25分钟等待时间 waiting_time_minutes = 25 fare_overnight_outer_ring = calculator.calculate_fare( distance_km=18, is_outer_ring=True, start_time=datetime.time(3)) total_cost_with_waiting_fee = \ fare_overnight_outer_ring + calculator.calculate_waiting_fee(waiting_time_minutes) print(total_cost_with_waiting_fee) ``` 以上代码通过`TaxiFareCalculator`类实现了出租车费用计算的功能,同时支持灵活的费率调整和等候费计算。此外,测试部分展示了如何使用这个类来模拟不同的场景以验证其正确性。 ### 3. 设计模式 - **策略设计模式**:可以通过参数化的方式定义不同时间段或区域内的价格规则。 - **工厂方法(Factory Method)设计模式**:如果在未来需要支持多种类型的出租车计算模型,可以考虑使用此模式创建相应的对象实例。
  • 3的最小二乘拟合
    优质
    每次3元的最小二乘拟合主要探讨了一种基于最小二乘法的数据拟合方法,特别适用于数据量庞大且需逐次处理的场景。此技术以每次3元(三参数)为单位更新模型,有效减少计算资源消耗,并确保高效准确地逼近数据趋势。 使用Fortran进行最小二乘拟合时,参数包括X1、X2和X3,Y表示对应的行值。
  • 园绿地资料(名称、区域及面积数据(单位:平方))
    优质
    本资料集汇总了上海市主要公园绿地信息,涵盖各绿地名称、所在区位及其占地面积(以平方公里为单位),便于市民查询与规划游览路线。 根据上海市绿化和市容管理局及上海市林业局提供的信息整理而来,数据全部来源于该网站。有些数据为0是因为网页上没有提供相关信息。共有351条记录,可能存在重复情况。
  • 数字电路课程设计——程计
    优质
    本项目为《数字电路》课程的一部分,旨在设计一款模拟出租车运营的里程计价器。通过硬件和软件结合的方式,实现自动计算行驶距离并据此合理收费的功能,增强学生对数字逻辑与电子系统应用的理解。 数字电路课程设计——出租车里程计价器 1. 能够统计汽车行驶的里程数以及停车等待时间。 2. 可以自动显示出应收取的车费和停车等候费用。 3. 每公里行车收费(如0.45元)及每十分钟停车等候收费(如0.25元),均可通过拨码开关预先设置。
  • gpuz237.zip 司的本文件,适用于相关用途
    优质
    gpuz237.zip是由风起公司提供的一个包含多种样本文件的压缩包,旨在为用户提供便利的数据参考和应用开发支持。 gpuz237.zip 包含了风起公司的一个样本段落件,可以用于相关用途。
  • 优质
    异次元站点是一部融合科幻与冒险元素的小说作品,带领读者探索平行世界的奥秘,体验不同维度间的奇妙碰撞。 异次元网站提供优秀的PHP网站源代码,仅供非商业用途使用。
  • 方程(盛金式).RAR
    优质
    本资源包含关于一元三次方程求解的经典“盛金公式”,内容涵盖了各类判别法和具体解题步骤,适用于数学爱好者与教育工作者参考学习。 本资源提供运用盛金公式求解一元三次方程的方法。在网上找了半天后发现几乎没有一个代码能够完全解决或者满足精度要求。经过验证,此资源可以准确地求解,并且能满足严格的精度需求。该资源包括两个Word文件,用于解释公式内容,还有一个.cpp文件实现了具体的求解过程。
  • 值数千的微信H5超级马奥游戏源码
    优质
    这段简介可以这样撰写:“价值数千元”的微信H5“超级马里奥”游戏源码现提供下载。此源码适用于开发者学习和研究,帮助提高H5游戏开发技能,包含完整的游戏逻辑与设计元素。 价值几千块的微信H5超级马里奥游戏源码。
  • 纯电动电耗计算
    优质
    本文章介绍如何计算纯电动汽车的百公里电耗,并探讨影响电耗的因素和降低能耗的方法。 纯电动汽车的百公里电耗计算方法是评估车辆能效的重要指标。这一数值通常通过测量汽车行驶一百公里所消耗的电量来确定,能够帮助消费者了解不同车型之间的能耗差异,并据此做出更为明智的选择。此外,制造商也会利用这个数据优化电池管理和驱动系统的设计以提升能源使用效率。