You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python罚款计算器中添加受害者附加费计算功能?

解决方案

核心思路是拆分逻辑:先计算基础超速罚款,再根据基础罚款金额计算受害者附加费,最后合并得到总罚款。具体步骤如下:

  1. 新增附加费计算函数:单独封装受害者附加费的规则,让逻辑更清晰,也方便后续维护。
  2. 修改基础罚款计算逻辑:让原函数先算出基础罚款金额,而非直接打印结果。
  3. 合并总金额并输出:调用附加费函数得到金额后,与基础罚款相加,最终输出明细和总额。

完整修改后的代码

def ask_limit():
    limit = float(input("What was the speed limit? "))
    return limit

def ask_speed():
    speed = float(input("What was your clocked speed? "))
    return speed

def calculate_victim_surcharge(base_fine):
    """根据基础罚款金额计算受害者附加费"""
    if 0 <= base_fine <= 99:
        return 40
    elif 100 <= base_fine <= 200:
        return 50
    elif 201 <= base_fine <= 350:
        return 60
    elif 351 <= base_fine <= 500:
        return 80
    elif base_fine > 500:
        return base_fine * 0.4
    return 0

def findfine(speed, limit):
    if speed > 35 + limit :
        base_fine = ((speed - limit) * 8 + 170)
    elif speed > 30 + limit :
        base_fine = ((speed - limit) * 4 + 100)
    elif speed > limit :
        base_fine = ((speed - limit) * 2 + 100)
    elif speed <= limit:
        print("No fine, vehicle did not exceed allowed speed limit.")
        return
    
    surcharge = calculate_victim_surcharge(base_fine)
    total_fine = base_fine + surcharge
    # 格式化输出,保留两位小数更符合金额展示习惯
    print(f"基础罚款金额: ${base_fine:.2f}")
    print(f"受害者附加费: ${surcharge:.2f}")
    print(f"总罚款金额: ${total_fine:.2f}")

def main():
    limit = ask_limit()
    speed = ask_speed()
    findfine(speed, limit)

main()

关键说明

  • 函数职责拆分:calculate_victim_surcharge只负责处理附加费规则,findfine专注于基础罚款计算,代码逻辑更易读和维护。
  • 金额格式化:用.2f格式化输出,保证金额显示为两位小数,符合实际场景需求。
  • 边界处理:覆盖了所有罚款区间,包括无罚款的情况,避免出现异常。

内容的提问来源于stack exchange,提问作者KauaiGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:55:15