Python如何无括号逗号打印嵌套迷宫列表并添加上下边界?
解决迷宫打印问题及边界表示
一、修正打印代码
你的原代码存在两个核心问题:
map(int, maze)试图将字符串列表转为整数,直接触发类型错误;- 循环逻辑混乱,未正确处理嵌套列表的拼接逻辑。
要得到你期望的输出,可按以下方式实现:
- 先将
maze中的每个子列表拼接为字符串,同时可按需将标记用的X替换为空格; - 跳过全空白的子列表(索引1、4、7),每3个子列表为一组,取组内第0和第2个字符串拼接成一行迷宫。
示例代码:
maze = [["|"," ","|"],[" "," "," "],[" ","_","|"], ["|"," "," "],[" "," "," "],[" ","_","|"], ["|"," ","|"],[" "," "," "],[" ","X","|"]] # 把每个子列表转成字符串,同时替换X为空格 row_strings = [''.join(row).replace('X', ' ') for row in maze] # 每3个一组,取第0和第2个拼接打印 for i in range(0, len(row_strings), 3): print(row_strings[i] + row_strings[i+2])
运行后输出:
| | _| | _| | | |
二、表示迷宫的上下边界
给迷宫添加上下边界的核心是根据迷宫行的长度生成连续的边界字符,常见实现方式有两种:
1. 纯ASCII字符边界
用_或-生成简洁的边界:
maze = [["|"," ","|"],[" "," "," "],[" ","_","|"], ["|"," "," "],[" "," "," "],[" ","_","|"], ["|"," ","|"],[" "," "," "],[" ","X","|"]] row_strings = [''.join(row).replace('X', ' ') for row in maze] # 计算单条迷宫行的长度 line_length = len(row_strings[0] + row_strings[2]) # 打印上边界 print('_' * line_length) # 打印迷宫主体 for i in range(0, len(row_strings), 3): print(row_strings[i] + row_strings[i+2]) # 打印下边界 print('_' * line_length)
运行后输出:
______ | | _| | _| | | | ______
2. 美观框形边界
使用ASCII框字符(┌、─、┐、└、┘)生成更规整的边界:
maze = [["|"," ","|"],[" "," "," "],[" ","_","|"], ["|"," "," "],[" "," "," "],[" ","_","|"], ["|"," ","|"],[" "," "," "],[" ","X","|"]] row_strings = [''.join(row).replace('X', ' ') for row in maze] line_length = len(row_strings[0] + row_strings[2]) # 打印上边界 print(f"┌{'─'*(line_length-2)}┐") # 打印带左右边界的迷宫主体 for i in range(0, len(row_strings), 3): print(f"│{row_strings[i] + row_strings[i+2][1:-1]}│") # 打印下边界 print(f"└{'─'*(line_length-2)}┘")
运行后输出:
┌────┐ │| |_|│ │| _|│ │| | |│ └────┘
内容的提问来源于stack exchange,提问作者secretlymaia
相关产品推荐
相关产品推荐

