【问题标题】:How can I print this list without the spaces at the beginning?如何在开头没有空格的情况下打印此列表?
【发布时间】:2021-07-16 14:57:21
【问题描述】:

我正在尝试用 Python 制作一个简单的井字游戏。现在使用我的代码,Playtable 看起来像这样:

1 | 2 | 3
  | 4 | 5 | 6 
  | 7 | 8 | 9

我的代码:

x = ["1", "2", "3 \n ", "4", "5", "6 \n ", "7", "8", "9"]
print(" | ".join(x))

如何像在播放表的第一行一样打印播放表?

【问题讨论】:

标签: python tic-tac-toe


【解决方案1】:

我建议你将游戏显示(管道,\n)的游戏逻辑(包含数据的列表)分开

您可以考虑使用行列表,每行是另一个包含一个单元格的列表(嵌套列表):

rows = [
         ["1", "2", "3"],
         ["4", "5", "6"],
         ["7", "8", "9"]
       ]

display = "\n".join([" | ".join(row) for row in rows])

print(display)

" | ".join(row) for row in rows 将遍历行的每个元素(依次为 ["1", "2", "3"]["4", "5", "6"]["7", "8", "9"])并应用 " | ".join()

它被包裹在括号---> [ <--- " | ".join(row) for row in rows ---> ] <--- 中的事实将根据上一个操作的结果创建一个列表,其中包含连接的字符串:[ "1 | 2 | 3", "4 | 5 | 6", "7 | 8 | 9" ]

然后,"\n".join() 将加入上一个列表进行最终展示

这个输出

1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

然后,您可以更轻松地访问不同的元素,例如,使用rows[2][0] 访问第三行第一列(数字 7)

【讨论】:

  • 非常感谢
  • 你能解释一下你代码中的 .join() 是如何工作的吗?
  • @TobiasPutz 我已经添加了一些解释,如果仍然不清楚,请告诉我,我会改写
【解决方案2】:

如果你坚持保持相同的列表x,你可以试试这个:

x = ["1", "2", "3 \n ", "4", "5", "6 \n ", "7", "8", "9"]
for i in range(3):
    print(" | ".join(n.strip() for n in x[i*3:i*3+3]))

输出:

1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

【讨论】:

  • 这看起来很复杂
  • 这不是很复杂,它只是三个人遍历你的列表。
  • 非常感谢。
【解决方案3】:

根据@Cid 评论,这就是您要查找的内容

x = ["1", "2", "3\n4", "5", "6\n7", "8", "9"]
print(" | ".join(x))

输出:

1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

【讨论】:

  • 输出是什么?
  • 输出看起来像 OP 的图像
  • 但是如果你正在尝试制作井字游戏,你应该能够在没有'\n'的情况下访问列表
  • @PCM OP 询问此表的外观。在这一点上,我们不知道他将如何处理它,但您对进一步的处理步骤是正确的,其中的\n 可能会变得难以处理
  • 但是,如果您要将结构更改为无法使用的格式,您可以简单地将其删除并写入print('1 | 2 | 3\n4 | 5 | 6\n7 | 8 | 9')
猜你喜欢
  • 2012-04-16
  • 2016-01-24
  • 2010-10-04
相关资源
最近更新 更多