Как правильно записать текст в файл из массива
Есть два масива с координатами соответственно Х и У.
Моя попытка хоть как-то их записать:
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')
