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

为什么交通系统行程计价代码中所有if语句未全部执行?

问题原因

你当前的代码逻辑本身可以正常运行,出现仅第一个if执行、总票价计算为1.5的问题,核心是第二、第三阶段的输入编码没有匹配到对应条目,price2、price3保持初始值0,最终总和只有第一阶段的票价。
常见触发原因有两个:

  • 输入编码存在隐藏误差:比如编码前后带空格、拼写错误(如把M1输成Ml、F1输成FI)、使用全角字符等,导致匹配失败
  • 原有写法存在逻辑缺陷:三个列表的匹配逻辑耦合在同一个按索引循环的代码块中,后续如果某个阶段的编码数量发生变化,range(5)的固定范围会导致索引溢出,且匹配逻辑冗余易出错。

最优实现方案

使用字典存储编码和票价的映射关系是最合理的方案,无需手动循环匹配,直接通过键取值即可,同时新增输入预处理逻辑避免输入误差:

# 用字典存储各阶段编码与对应票价
journey_stage_one = {'C1':1.50, 'C2':3.00, 'C3':4.50, 'C4':6.00, 'C5':8.00}
journey_stage_two = {'M1':5.75, 'M2':12.50, 'M3':22.25, 'M4':34.50, 'M5':45.00}
journey_stage_three = {'F1':1.50, 'F2':3.00, 'F3':4.50, 'F4':6.00, 'F5':8.00}

# 输入时自动去除前后空格、转大写,消除常见输入误差
code1 = input('Enter code for stage 1 of journey: ').strip().upper()
code2 = input('Enter code for stage 2 of journey: ').strip().upper()
code3 = input('Enter code for stage 3 of journey: ').strip().upper()

# 通过编码直接取对应票价,不存在的编码默认返回0,也可以自定义错误提示
price1 = journey_stage_one.get(code1, 0)
price2 = journey_stage_two.get(code2, 0)
price3 = journey_stage_three.get(code3, 0)

total = price1 + price2 + price3
print(total)

原有列表+循环写法的修正方案

如果你需要保持原有列表存储的逻辑,可以拆分三个列表的遍历逻辑,避免耦合:

journeyStageOne = [['C1',1.50],['C2',3.00],['C3',4.50],['C4',6.00],['C5',8.00]]
journeyStageTwo = [['M1',5.75],['M2',12.50],['M3',22.25],['M4',34.50],['M5',45.00]]
journeyStageThree = [['F1',1.50],['F2',3.00],['F3',4.50],['F4',6.00],['F5',8.00]]

code1 = input('Enter code for stage 1 of journey: ').strip().upper()
code2 = input('Enter code for stage 2 of journey: ').strip().upper()
code3 = input('Enter code for stage 3 of journey: ').strip().upper()

price1 = price2 = price3 = 0

# 单独遍历每个阶段的列表,匹配成功后直接终止循环提升效率
for item in journeyStageOne:
    if item[0] == code1:
        price1 = item[1]
        break
for item in journeyStageTwo:
    if item[0] == code2:
        price2 = item[1]
        break
for item in journeyStageThree:
    if item[0] == code3:
        price3 = item[1]
        break

total = price1 + price2 + price3
print(total)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:45:03