Python spacing out 2048 board
本问题已经有最佳答案,请猛点这里访问。
所以我有2048板的代码:
1 2 3 4 5 6 7 | count = 0 for i in range(16): print(nlist[i], end = ' ') count += 1 if count == 4: print("") count = 0 |
如果所有的值都是一个数字,这就很好了:
1 2 3 4 | 0 0 0 8 0 4 0 0 0 0 2 2 0 0 0 0 |
但如果我有多个数字超过1位数:
1 2 3 4 | 16 0 2 2048 8 2 32 64 2 2 0 0 2048 2048 4096 4096 |
所有的间距都弄乱了。有没有解决办法?
避免为此编写自定义函数。有很多python包可以在一个整洁的表中打印东西。
我的建议是用漂亮的
1 2 3 4 5 6 7 8 9 10 | from prettytable import PrettyTable t = PrettyTable(header=False, border=False) for i in range(0,16,4): t.add_row(range(i, i+4)) print t # 0 1 2 3 # 4 5 6 7 # 8 9 10 11 # 12 13 14 15 |
正如Keating在注释中提到的,在打印前迭代数组并找到最长的数字。
1 | length = max(map(lambda x: len(str(x)), nlist)) + 1 |
我们取
1 2 | text = str(x) text += ' ' * (length - len(text)) |
完整示例:
1 2 3 4 5 6 7 8 9 10 | count = 0 length = max(map(lambda x: len(str(x)), nlist)) + 1 for i in range(16): text = str(nlist[i]) text += ' ' * (length - len(text)) print(text, end = '') count += 1 if count == 4: print() count = 0 |