如何将方向与街道输入分存两个列表并生成返程路线列表?
需求场景
小孩拿到从家到学校的路线纸条,弄丢了返程路线,需要编写程序生成返程路线。
示例输入路线:
R JOHN L KING L SCHOOL
需输出返程路线:
R KING R JOHN L HOME
现有代码
directions = ['HOME'] while True: d = input('DIRECTION (L or R): ').upper() s = input('STREET: ').upper() directions.append(d) if s == 'SCHOOL': break directions.append(s) new_directions = [] for item in reversed(directions): if item == 'L': new_directions.append('R') elif item == 'R': new_directions.append('L') else: new_directions.append(item) for item in new_directions: print(item)
问题
现有代码未使用4个列表,老师要求先将输入分别存入两个列表——方向列表(如['R','L','L'])和街道列表(如['JOHN','KING','SCHOOL']),但不知道如何将分行输入的方向和街道分别存入对应列表,之后还需操作这两个列表生成返程的方向和街道列表,求实现方法。
解决方案
核心思路
- 分离输入存储:循环读取方向和街道,分别存入两个独立列表;
- 生成返程数据:反转原方向列表并互换
L/R,反转原街道列表并替换终点为HOME; - 配对输出:将返程方向与返程街道逐行配对打印。
实现代码
# 初始化两个列表,分别存储输入的方向和街道 direction_list = [] street_list = [] # 循环读取输入,直到街道为SCHOOL时停止 while True: d = input().strip().upper() s = input().strip().upper() direction_list.append(d) street_list.append(s) if s == 'SCHOOL': break # 生成返程方向列表:反转原方向,同时互换L和R reverse_directions = [] for dir in reversed(direction_list): reverse_directions.append('R' if dir == 'L' else 'L') # 生成返程街道列表:反转原街道,去掉原终点SCHOOL,追加HOME reverse_streets = list(reversed(street_list)) reverse_streets.pop(0) # 移除反转后的第一个元素(即原输入的SCHOOL) reverse_streets.append('HOME') # 逐行打印返程路线 for dir, street in zip(reverse_directions, reverse_streets): print(f"{dir} {street}")
测试验证
用示例输入测试时,程序会输出符合要求的返程路线:
R KING R JOHN L HOME
内容的提问来源于stack exchange,提问作者kora
相关产品推荐
相关产品推荐

