首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python间距2048电路板

Python间距2048电路板
EN

Stack Overflow用户
提问于 2018-07-06 01:44:48
回答 2查看 93关注 0票数 1

所以我有一个2048电路板的代码:

代码语言:javascript
复制
count = 0
for i in range(16):
    print(nlist[i], end = ' ')
    count += 1
    if count == 4:
        print("")
        count = 0

如果所有的值都是一位数,则可以很好地执行此操作:

代码语言:javascript
复制
0 0 0 8
0 4 0 0 
0 0 2 2
0 0 0 0 

但是如果我有多个超过1位数的数字:

代码语言:javascript
复制
16 0 2 2048
8 2 32 64
2 2 0 0
2048 2048 4096 4096

所有的间距都被弄乱了。有什么办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2018-07-06 02:08:30

避免为此而编写自定义函数。有很多python包可以在整齐的表格中打印内容。

我的建议是使用PrettyTable

代码语言:javascript
复制
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 
票数 1
EN

Stack Overflow用户

发布于 2018-07-06 01:56:14

正如Keatinge在评论中提到的那样,在打印之前迭代数组并找到最长的数字。

代码语言:javascript
复制
length = max(map(lambda x: len(str(x)), nlist)) + 1

我们取nlist,计算出每个数字写成文本时的长度,然后取最大值并加1( +1表示数字之间有一个空格)。然后,在循环中,我们将所查看的数字串化,并根据需要添加空格。

代码语言:javascript
复制
text = str(x)
text += ' ' * (length - len(text))

完整示例:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51197212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档