2017-07-26 58 views
0

我正在运行一个模型,显示一个高达25代的表。然而随着行数的增加,使表格显得杂乱的数字也增加了。这是代码 - 查看链接以了解发生的情况。 image of table running如何对齐列

for x in range(gen_num+1): 
    print(gen_number,"\t\t",juveniles_pop,"\t\t",adults_pop,"\t\t",seniles_pop,"\t\t",juveniles_pop+adults_pop+seniles_pop) 
    gen_number+=1 
    seniles_pop = (seniles_pop * seniles_surv) + (adults_pop * adults_surv) 
    juveniles_pop1 = adults_pop * birth_rate 
    adults_pop = juveniles_pop * juveniles_surv 
    juveniles_pop = juveniles_pop1 

回答

1

在这样的情况下,str.format是一个不错的选择:

print("{:<10} {:<10} {:<10} {:<10} {:<10} {:<10} {:<10}".format(gen_number, juveniles_pop, adults_pop, seniles_pop, juveniles_pop, adults_pop, seniles_pop) 

上面的代码将左对齐数据,每个数字被放置在一个领域具有广阔的10个空格。您可以根据您的要求调整数量。

下面是一个例子:

In [517]: for _ in range(10): print("{:<10} {:<10}".format(random.randint(0, 123456), random.randint(0, 123456))) 
68434  11170  
95911  46785  
96425  57497  
108395  106972  
45328  877  
97760  22434  
37254  72544  
104063  53772  
72188  116733  
20195  70798 
0

查看使用str.format功能,使您的输出对准漂亮。 https://docs.python.org/2/library/string.html

特别,这里是你可能会想如何解决你的问题的例子:

for x in range(gen_num+1): 
    print('{0:{width}} {1:{width}} {2:{width}} {3:{width}} {4:{width}}'.format(gen_number,juveniles_pop,adults_pop,seniles_pop,juveniles_pop+adults_pop+seniles_pop,width=6)) 
    gen_number+=1 
    seniles_pop = (seniles_pop * seniles_surv) + (adults_pop * adults_surv) 
    juveniles_pop1 = adults_pop * birth_rate 
    adults_pop = juveniles_pop * juveniles_surv 
    juveniles_pop = juveniles_pop1