Как правильно записать текст в файл из массива

Есть два масива с координатами соответственно Х и У.

Моя попытка хоть как-то их записать:

f = open('Lab4_coords.txt', 'w')
points_x = []
points_y = []

point_list = [Point_6(10, -2),
              Point_6(0, -7),
              Point_6(-4, 4),
              Point_6(-1, 5)]
for point in point_list:
    point.display_point()  # Отображение точки
    points_x.append(point.getX())  # Добавление в массив для отрисовки
    points_y.append(point.getY())  # Добавление в массив для отрисовки
    f.write(str(point) + '\n')

Приводит к тому что в самом файле записи выглядят:

введите сюда описание изображения

Как мне записать их в файл в формате "(номер точки) координата_х: координата_у" ?


Ответы (1 шт):

Автор решения: gil9red

Попробуйте:

for i, point in enumerate(point_list, 1):
    point.display_point()  # Отображение точки
    x, y = point.getX(), point.getY()
    points_x.append(x)  # Добавление в массив для отрисовки
    points_y.append(y)  # Добавление в массив для отрисовки
    f.write(f'({i}) {x}:{y}\n')

Функция enumerate используется для возврата индекса. Без второго параметра она возвращает от 0.

А строка с f используется для форматирования строки, что будет записана в файл


Еще вариант использовать функцию строкового представления класса Point_6, то, что у вас было в файле это строковое представление по умолчанию и его можно поменять через магический метод __str__:

class Point_6:
    ...

    def __str__(self):
        return f'{self.x}:{self.y}'

Тогда тот код можно представить как:

for i, point in enumerate(point_list, 1):
    point.display_point()  # Отображение точки
    x, y = point.getX(), point.getY()
    points_x.append(x)  # Добавление в массив для отрисовки
    points_y.append(y)  # Добавление в массив для отрисовки
    f.write(f'({i}) {point}\n')
→ Ссылка