Python 3:如何将带换行的ASCII地图存入变量并正确输出
解决Python ASCII地图换行存储问题
你当前的问题是:用print()能正常显示带换行的ASCII地图,但把print()赋值给变量时,不仅会提前输出内容,调用变量还无法正确显示换行。核心原因是你误将print()的返回值(None)赋值给了变量,且没有正确拼接带换行的字符串。
正确的解决方式
方式1:用格式化字符串拼接换行符
直接将所有地图行和提示文本用\n拼接成一个完整字符串,存入变量后,调用print()即可输出带换行的效果:
north_exit = ' ___| |___' north_no_exit = ' ___________' south_exit = ' ```| |``` ' mid_no_exit = '| |' top_WandE_exit = '\u2143 L' top_W_exit = '\u2143 |' top_E_exit = '| L' mid_WandE_exit = ' (\u00B0.\u00B0) ' mid_W_exit =' (\u00B0.\u00B0) |' mid_E_exit ='| (\u00B0.\u00B0) ' lower_W_exit = '\u02E5 |' lower_WandE_exit = 'T T' lower_E_exit = '| T' current_room = 'the crew quarters' # 拼接成带换行的完整字符串 a1_map = f"{north_no_exit}\n{top_E_exit}\n{mid_E_exit}\n{lower_E_exit}\n{south_exit}\nYou are in {current_room}." # 调用print输出地图 print(a1_map)
方式2:用列表存储行内容,再拼接换行符
如果需要动态调整地图行的顺序或内容,推荐先将所有行存入列表,再用'\n'.join()方法拼接成字符串,更灵活易维护:
north_exit = ' ___| |___' north_no_exit = ' ___________' south_exit = ' ```| |``` ' mid_no_exit = '| |' top_WandE_exit = '\u2143 L' top_W_exit = '\u2143 |' top_E_exit = '| L' mid_WandE_exit = ' (\u00B0.\u00B0) ' mid_W_exit =' (\u00B0.\u00B0) |' mid_E_exit ='| (\u00B0.\u00B0) ' lower_W_exit = '\u02E5 |' lower_WandE_exit = 'T T' lower_E_exit = '| T' current_room = 'the crew quarters' # 将每一行存入列表 map_lines = [ north_no_exit, top_E_exit, mid_E_exit, lower_E_exit, south_exit, f"You are in {current_room}." ] # 用换行符拼接所有行 a1_map = '\n'.join(map_lines) # 输出地图 print(a1_map)
为什么之前的写法无效?
- 你将
print(...)赋值给a1_map,但print()函数的返回值是None,所以a1_map实际是None,且print()会立即执行输出,导致“提前输出内容”。 - 若不用
print()直接存储逗号分隔的字符串,Python会将其视为元组,调用时只会显示元组结构,不会自动解析换行符。
内容的提问来源于stack exchange,提问作者RCoe
相关产品推荐
相关产品推荐

