Задать вопрос
@argeo05

Запись типа float в файл python?

Недавно начал изучать python...
Передо мной стоит задача:
spoiler
Имеется файл с данными по успеваемости абитуриентов. Он представляет из себя набор строк, где в каждой строке записана следующая информация:

Фамилия;Оценка_по_математике;Оценка_по_физике;Оценка_по_русскому_языку

Поля внутри строки разделены точкой с запятой, оценки — целые числа.

Напишите программу, которая считывает файл с подобной структурой и для каждого абитуриента выводит его среднюю оценку по этим трём предметам на отдельной строке, соответствующей этому абитуриенту.

В качестве ответа на задание прикрепите полученный файл со средними оценками.

Если кратко то нужно вывести средний балл по предметам для каждого ученика, но при записи в файл типа float целого числа нуля после запятой нет.
вот код
#!/bin/python3
with open('1.txt') as txt, open('2.txt','w') as out:
  s=txt.read().strip()
  for p in range(s.count('\n')+1):
    s=txt.readline().strip().split(';')
    print ((float(s[1])+float(s[2])+float(s[3]))/3)#как должно быть файле
    out.write((float(float(s[1])+float(s[2])+float(s[3]))/3))#запись в файл
    out.write('\n')
with open('2.txt','r') as out:
  g=out.read().strip()
  print(g)#печать в файл

Почему так происходит? Как пофиксить?
Sample Input: чтение из файла

Петров;85;92;78
Сидоров;100;88;94
Иванов;58;72;85

Sample Output:
85.0
94.0
71.666666667
  • Вопрос задан
  • 1996 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
Какая то странная каша у тебя
for line in open('1.txt', 'r', encoding='utf-8'):
    data = line.strip().split(';')
    name, grades = data[0], [int(x) for x in data[1:]]
    avg = sum(grades)/len(grades)
    if avg == int(avg):
        avg = int(avg)
    open('2.txt', 'a').write(f'{avg}\n')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@argeo05 Автор вопроса
#!/bin/python3
with open('1.txt') as txt, open('2.txt','w') as out:
  s=txt.read().strip()
  for p in range(s.count('\n')+1):
    s=txt.readline().strip().split(';')
    out.write(str((float(float(s[1])+float(s[2])+float(s[3]))/3)))
    out.write('\n')
with open('2.txt','r') as out:
  g=out.read().strip()
  print(g)

Как бы это не было парадоксально нашёл ответ @Sergey Gornostaev на стороннем ресурсе. Спасибо)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы