0

我正在制作一个小程序来显示素数。代码(如下)产生了正确的答案,但我无法让输出看起来“不错”。

import math
N = int(input('List primes up to: '))
maxDigits = math.ceil(math.log10(N)) #equal spacing, even with lesser digit stuff
for i in range(3,N,2):
    for d in range(2,int(math.sqrt(i))):
        if i%d==0:
            break
    else :
        print(str(i),end=' '*(maxDigits-len(str(i))))

这个想法是根据素数可能具有的最大位数,使尽可能多的列适合输出屏幕。但是现在当我运行程序时,它会以一长行显示所有数字,没有任何换行符。这导致输出如下所示:

太丑了!它灼伤了我的眼睛!http://img194.imageshack.us/img194/5522/2eyd.png

这……不是我想要的。如果不是因为数字绕行,并且如果没有足够的空间就知道转到下一行,那么一切都会正常工作。那么我怎样才能摆脱程序中这种烦人的包装呢?越优雅(即请不要告诉我我必须计算终端宽度并将其除以 maxDigits)越好...:D

4

2 回答 2

0

看看库 PrettyPrinter(又名 pprint),您可以设置缩进和深度级别,它会自动处理所有内容

于 2013-08-23T14:59:15.617 回答
0

您可以随时添加换行符。一种简单的方法是'\n'在一定数量的数字之后添加一个字符,比如每 10 个。更复杂的方法是确定终端的宽度并计算每行可以输出多少个数字。

您可能还想查看str.format()哪个允许您设置表格中每列的宽度。查看格式字符串语法以获取有关可用于格式化的选项的详细信息。

于 2013-08-23T15:00:33.750 回答