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

如何操作两个列表生成回家路线新列表?程序实现疑问

问题解决:从上学路线生成回家路线

首先修正输入逻辑

你的输入代码不符合题目要求——题目要求重复输入方向→街道,直到街道为SCHOOL时停止,而非一次性输入所有方向和街道。正确的输入逻辑应该是每次循环获取一个方向和一个街道,分别存入列表,直到街道是"SCHOOL"(忽略大小写)时终止循环。

方向转换规则(核心)

回家的方向不是简单互换R/L,而是遵循两步规则:

  1. 将上学时的方向列表完全反转
  2. 把反转后的每个方向互换(R→L,L→R)

拿示例验证:

  • 上学方向列表:['R', 'L', 'L']
  • 反转后:['L', 'L', 'R']
  • 互换方向后:['R', 'R', 'L'] → 完全匹配示例的回家方向

街道转换规则:

  1. 去掉上学街道列表的最后一个元素(SCHOOL)
  2. 将剩下的街道反转顺序
  3. 最后添加"HOME"作为终点

示例验证:

  • 上学街道列表:['JOHN', 'KING', 'SCHOOL']
  • 去掉SCHOOL:['JOHN', 'KING']
  • 反转:['KING', 'JOHN']
  • 添加HOME:['KING', 'JOHN', 'HOME'] → 匹配示例的回家街道

完整代码实现

# 收集上学路线
school_directions = []
school_streets = []

while True:
    # 获取方向输入并校验有效性
    dir_input = input("请输入方向(L/R):").strip().upper()
    while dir_input not in ['L', 'R']:
        print("无效方向,请输入L或R")
        dir_input = input("请输入方向(L/R):").strip().upper()
    
    # 获取街道输入
    street_input = input("请输入街道名称:").strip().upper()
    
    # 存入列表
    school_directions.append(dir_input)
    school_streets.append(street_input)
    
    # 终止循环条件
    if street_input == 'SCHOOL':
        break

# 生成回家路线
# 处理街道:去掉SCHOOL → 反转 → 添加HOME
home_streets = school_streets[:-1][::-1]
home_streets.append('HOME')

# 处理方向:反转上学方向列表 → 互换每个方向
home_directions = []
for d in reversed(school_directions):
    home_directions.append('R' if d == 'L' else 'L')

# 按要求格式输出回家路线
print("\n回家路线:")
for dir, street in zip(home_directions, home_streets):
    print(f"{dir}、{street}")

测试示例运行

输入顺序:

R
JOHN
L
KING
L
SCHOOL

输出结果:

回家路线:
R、KING
R、JOHN
L、HOME

完全符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:41:44