Skip to main content
 首页 » 编程设计

python 3 : How can I align the the format of this data when it prints

2025年05月04日25zdz8207

我希望这些数据的格式对我来说是统一的,以供用户阅读,但我无法尝试所有方法。代码在这里:

def runModel(): 
global valueJuvenile, valueAdult, valueSenile,total, values 
values = '' 
total = valueSenile + valueJuvenile + valueAdult 
values += 'G' + ', ' 
values += 'Juv' + ', ' 
values += 'Adu' + ', ' 
values += 'Sen' + ', ' 
values += 'Tot' + ', ' 
values += '\n0' + ', ' 
values += str(valueJuvenile) + ', ' 
values += str(valueAdult) + ', ' 
values += str(valueSenile) + ', ' 
values += str(firstTotal) + ', ' 
for n in range(1,numNewGen): 
    if n != 0: 
        values += '\n' 
    values += str(n)+', ' 
    valueJuvenile = round(valueAdult * birthRate * valueJuvenileSR,3) 
    valueAdult = round(valueJuvenile * valueAdultSR,3) 
    valueSenile = round(valueSenile + valueAdult * valueSenileSR,3)  
    total = round(valueSenile + valueJuvenile + valueAdult,3) 
    values += str(valueSenile) + ', ' 
    values += str(valueJuvenile) + ', ' 
    values += str(valueJuvenile) + ', '     
    values += str(total) 
print(values) 
print("Model has been ran!") 
input('\nPlease press Enter to return to menu...') 
menu() 

这是 shell 中的结果:

值集:

Please enter the amount of Juveniles (1 = 1000) 1 
Please enter the amount of Adults (1 = 1000) 1 
Please enter the amount of Seniles (1 = 1000) 1 
Please enter the survival rate for Juveniles 1 
Please enter the survival rate for Adults 1 
Please enter the survival rate for Seniles 1 
Please enter the birth rate of GreenFlies 1 
Please enter the number of new generations 11 
Please enter at what population breakpoint would you like the disease to trigger 11       
 
Running model! 
G, Juv, Adu, Sen, Tot,  
0, 1.0, 1.0, 1.0, 3.0,  
1, 2.0, 1.0, 1.0, 4.0 
2, 3.0, 1.0, 1.0, 5.0 
3, 4.0, 1.0, 1.0, 6.0 
4, 5.0, 1.0, 1.0, 7.0 
5, 6.0, 1.0, 1.0, 8.0 
6, 7.0, 1.0, 1.0, 9.0 
7, 8.0, 1.0, 1.0, 10.0 
8, 9.0, 1.0, 1.0, 11.0 
9, 10.0, 1.0, 1.0, 12.0 
10, 11.0, 1.0, 1.0, 13.0 
Model has been ran! 

正如您在第 0 行看到的,数据与其他数据的位置不同,这也发生在第 10 行,因为 0 是一个额外的字符,它将所有内容向右移动一个位置,我会想知道如何格式化它。

就上下文而言,这是一个程序,其中用户设置变量,这些变量由其他变量设置调整,例如受下一代幼鱼存活率影响的幼鱼值。在输出 shell 中,G 对应于世代数,在这种情况下,0 是用户设置的原始值,直到第 10 代,到那时已经被其他变量影响了 10 次。 Juv、Adu、Sen分别对应少年成年和老年

请您参考如下方法:

使用格式。例如:

def runModel(valueJuvenile, valueAdult, valueSenile,total, values): 
    header = ['G', 'Juv', 'Adu', 'Sen', 'Tot'] 
    format = "{:5}, {:5}, {:5}, {:5}, {:5}".format 
    values = [format(*header)] 
    values.append(format(n, valueJuvenile, valueAdult, valueSenile, firstTotal)) 
    for n in range(1, newNewGen): 
        valueJuvenile = round(valueAdult * birthRate * valueJuvenileSR,3) 
        valueAdult = round(valueJuvenile * valueAdultSR,3) 
        valueSenile = round(valueSenile + valueAdult * valueSenileSR,3)  
        total = round(valueSenile + valueJuvenile + valueAdult,3) 
        values.append(format(n, valueJuvenile, valueAdult, valueSenile, total)) 
    print('\n'.join(values)) 
    print("Model has been ran!") 
    input('\nPlease press Enter to return to menu...') 
    menu()