Привет, поэтому я в настоящее время пытаюсь написать код, который запрашивает несколько дней, а затем открывает несколько текстовых файлов (temps1.txt и т.д.), Читает их, сортирует их в словарях со средним и затем распечатывает. Однако некоторые из средних значений имеют крайнее количество десятичных пятен
f = {}
ans = int(input('How many days of data do you have? '))
#figure out how to open certain files
for file_num in range(1, (ans+1)):
file_name = "temps" + str(file_num) + ".txt"
temps = open(file_name)
for line in temps:
room, num = line.strip('\n').split(',')
num = int(num)
#may need to be 4* however many times it appears
num = num/(4*ans)
f[room] = f.get(room, 0) + num
print('Average Temperatures:')
for x in f:
print (x + ':',f[x])
У меня есть пример для комнаты под названием спальня (все спальни в среднем текстовых файлах), а средний - 26,0, но он печатает как 26.000000000000004, как я могу прекратить это делать?
Вы можете сказать Python, как форматировать номер следующим образом:
print('Average Temperatures:')
for x in f:
print ('%.1f:' % x, f[x])
%.1f
говорит, что печатается как число с плавающей запятой, с 1 номером после десятичной точки.
Ты можешь использовать:
for x in f:
print("{:.2f}".format(float(x)))
.2f
означает 2 цифры после точки. Подробнее см. Https://docs.python.org/3.7/library/string.html#formatstrings.
Проверьте функцию round(). Check out: Как округлить до 2 десятичных знаков с помощью Python?
>>> x = 26.000000000000004
>>> print str(round(x, 2))
>>> '26.00'