python文本的优点,浮置?

2024-09-29 17:11:36 发布

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

我试图用值格式化一个表,但感觉我做得不好。例如,在对字符串进行除法和传递时,必须将int字典转换为int。而且%f似乎打印了加载的0。我只需要一个小数点的除法,而不是后面所有的0

band1= {'channel1': 10564, 'channel2': 10589, 'channel3': 10612, 'channel4': 10637,'channel5': 10662, 'channel6': 10687,
'channel7': 10712, 'channel8': 10737, 'channel9': 10762, 'channel10': 10787,'channel11': 10812, 'channel12': 10837, }


print '%10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s' % ("Channel 1", "Channel 2", "Channel 3",
"Channel 4", "Channel 5", "Channel 6", "Channel 7","Channel 8", "Channel 9", "Channel 10", "Channel 11", "Channel 12")
print '%10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s' % (band1['channel1'], band1['channel2'], band1['channel3'],
band1['channel4'], band1['channel5'], band1['channel6'], band1['channel7'], band1['channel8'], band1['channel9'], 
band1['channel10'], band1['channel11'], band1['channel12'])
print '%5f %5f %5f %5f %5f %5f %5f %5f %5f %5f %5f %5f' % (int(band1['channel1'])/5.0, int(band1['channel2'])/5.0, int(band1['channel3'])/5.0,
int(band1['channel4'])/5.0, int(band1['channel5'])/5.0, int(band1['channel6'])/5.0, int(band1['channel7'])/5.0, int(band1['channel8'])/5.0, int(band1['channel9'])/5.0, 
int(band1['channel10'])/5.0, int(band1['channel11'])/5.0, int(band1['channel12'])/5.0)

这样可以得到:

^{pr2}$

Tags: channelintchannel8band1channel2channel1channel3channel4
3条回答

round(your_float, decimal_point)将解决您的问题。在

示例:

my_float = 3.5678009

rounded = round(my_float, 2)

print rounded

大于3.57

rows = zip(*((key, value, value/5.) for key, value in sorted(band1.items(), 
                                           key= lambda x: int(x[0][7:]))))

print '\n'.join(''.join('{0:<10}'.format(elem) for elem in tup) 
                                               for tup in rows)

输出:

^{pr2}$

破碎成碎片:

cols = [(key, value, value/5.) for key, value in sorted(band1.items(), 
                                        key= lambda x: int(x[0][7:]))]
print cols
# [('channel1', 10564, 2112.8), ('channel2', 10589, 2117.8), ('channel3', 10612, 2122.4), ('channel4', 10637, 2127.4), ('channel5', 10662, 2132.4), ('channel6', 10687, 2137.4), ('channel7', 10712, 2142.4), ('channel8', 10737, 2147.4), ('channel9', 10762, 2152.4), ('channel10', 10787, 2157.4), ('channel11', 10812, 2162.4), ('channel12', 10837, 2167.4)]
rows = zip(*cols)
print rows
# [('channel1', 'channel2', 'channel3', 'channel4', 'channel5', 'channel6', 'channel7', 'channel8', 'channel9', 'channel10', 'channel11', 'channel12'), (10564, 10589, 10612, 10637, 10662, 10687, 10712, 10737, 10762, 10787, 10812, 10837), (2112.8, 2117.8, 2122.4, 2127.4, 2132.4, 2137.4, 2142.4, 2147.4, 2152.4, 2157.4, 2162.4, 2167.4)]

如果每个结果数都保证只有1个小数点后面有零,则可以:

使用String Format:

>>> i = 2112.800000
>>> print "{0:5.1f}".format(i)
2112.8

或者:

^{pr2}$

相关问题 更多 >

    热门问题