Python3:当数据打印时,如何调整数据的格式

2024-05-20 18:43:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把这个数据的格式统一给我供用户阅读,但我不能用我所尝试的一切。此处代码:

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()

下面是外壳中的结果:

设置值:

^{pr2}$

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

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


Tags: to数据用户totalmenuvaluesprintsen
3条回答

^{}函数可以做到这一点。在

下面是一个如何使用它的示例:

>>> integer_var = 5
>>> float_var = 3.5
>>> print('{:6d} {:6.2f}'.format(integer_var, float_var))
     5   3.50

对于整型变量,使用d表示浮点变量f:后面的第一个数字是该数字应该占用的空间。对于浮点数,.后面的数字是要显示的小数位数

可以使用C样式的格式字符串,或.format方法。在

作为使用C样式格式字符串的示例,可以执行以下操作:

print("%2i, %5.1f, %5.1f, %5.1f" % (3, 11.2, 5.0, 77.5))
print("%2i, %5.1f, %5.1f, %5.1f" % (11, 12.7, 11.4, 8.1))

这将产生以下结果:

^{pr2}$

基本规则是%5.1f使浮点数包含5个字符,包括一个十进制数字。填充字符将是空格。所以如果你想用8个字符和3个十进制数字作为一个浮点,你可以用%8.3f。或者如果你想要4个字符而没有小数点,你可以用%4.0f

类似地,对于整数%2i,整数的宽度为2个字符。如果你想让一个整数用6个字符,你可以用%6i。如果你想要零填充,你可以像这样给格式字符串加一个零:%06i。请注意%i和%d是等价的。在

使用format。例如:

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()

相关问题 更多 >