如何操作两个列表生成回家路线新列表?程序实现疑问
问题解决:从上学路线生成回家路线
首先修正输入逻辑
你的输入代码不符合题目要求——题目要求重复输入方向→街道,直到街道为SCHOOL时停止,而非一次性输入所有方向和街道。正确的输入逻辑应该是每次循环获取一个方向和一个街道,分别存入列表,直到街道是"SCHOOL"(忽略大小写)时终止循环。
方向转换规则(核心)
回家的方向不是简单互换R/L,而是遵循两步规则:
- 将上学时的方向列表完全反转
- 把反转后的每个方向互换(R→L,L→R)
拿示例验证:
- 上学方向列表:
['R', 'L', 'L'] - 反转后:
['L', 'L', 'R'] - 互换方向后:
['R', 'R', 'L']→ 完全匹配示例的回家方向
街道转换规则:
- 去掉上学街道列表的最后一个元素(SCHOOL)
- 将剩下的街道反转顺序
- 最后添加"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
相关产品推荐
相关产品推荐

