如何舍入我的平均值并去掉我输出中的括号?

2024-04-28 20:11:44 发布

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

我有一个带有输出的程序,但我希望输出是干净的(因此没有括号或引号),并且我希望数字四舍五入到2位小数。你知道吗

我尝试使用round函数和.join方法来处理方括号,但都不起作用。你知道吗

import csv
import locale
from pprint import pprint, pformat

import locale
locale.setlocale(locale.LC_ALL, 'Dutch_Netherlands.1252')

gem_names = 'sellerRating', 'Duration', 'ClosePrice', 'OpenPrice'
gemiddelde = {gem_name: 0 for gem_name in gem_names}  # Zet de totale op nul.

num_waarden = 0
with open('bijlage.txt', newline='') as bestand:
    csvreader = csv.DictReader(bestand, delimiter=';')
    for row in csvreader:
        for gem_name in gem_names:
            gemiddelde[gem_name] += locale.atof(row[gem_name])
            num_waarden += 1

for gem_name, total in gemiddelde.items():
    gemiddelde[gem_name] = gemiddelde[gem_name] / num_waarden

print ('Dit zijn de gemiddelden:')
pprint(gemiddelde)

这是我得到的结果:

Dit zijn de gemiddelden:
{'ClosePrice': 9.712094266277953,
 'Duration': 1.6350826044703595,
 'OpenPrice': 3.553561710398435,
 'sellerRating': 940.226433430515}

我尝试round(gemiddelde)时出错。当我试图使用.join时,我的数字消失了。有人能帮我把这个弄干净吗?你知道吗


Tags: nameinimportforgemnamesde数字
1条回答
网友
1楼 · 发布于 2024-04-28 20:11:44

最好不要在计算过程中round,因为舍入误差可能会增加。相反,只需使用循环和格式字符串来打印值,而不是依赖pprint,例如:

>>> gemiddelte = {'ClosePrice': 9.712094266277953, 'Duration': 1.6350826044703595, 'OpenPrice': 3.553561710398435, 'sellerRating': 940.226433430515}
>>> for key, val in gemiddelte.items():
...     print("%15s  %6.2f" % (key, val))
...
     ClosePrice    9.71
       Duration    1.64
      OpenPrice    3.55
   sellerRating  940.23

或者类似的,使用str.format

>>> for key, val in gemiddelte.items():
...     print("{0:<15} {1:6.2f}".format(key, val))
...
ClosePrice        9.71
Duration          1.64
OpenPrice         3.55
sellerRating    940.23

相关问题 更多 >