Найти - Пользователи
Полная версия: Работа со столбцами
Начало » Python для новичков » Работа со столбцами
1
glsmen
Уважаемые форумчаны,
Подскажите плиз где допускаю ошибку или не понимаю.
Суть: У меня есть следующая таблица в текстовом файл.
ns1 6 -3
ns2 6 -3
ns3 7 -4
ns4 8 -2
ns5 8 -3
ns6 7 -2
ns7 6 -1

Добавляю, к примеру, на второй столбец постоянную 2.
Должно получится следующее
ns1 8 -3
ns2 8 -3
ns3 9 -4
ns4 10 -2
ns5 10 -3
ns6 9 -2
ns7 8 -1

Вот код, который я написал
import os
import sys
class cc_cat:
    def __init__(self,line):
        list=line.split()
        self.all=line
        self.fn=str(list[0])
        self.dx=float(list[1])
        self.dy=float(list[2])
    
fc=open('f1.txt','r')
ddx=2
ddy=5
tocal=[]
for li in fc:
    mycat=cc_cat(li)
    mycat.dx=ddx+mycat.dx
#    mycat.dy=ddy+mycat.dy
    print mycat.all
fc.close()
     
Программа выдает исходных данных без изменений. Что делать, чтобы на выходе получались измененные данные?

Firik
Переименуйте list
glsmen
Firik
Переименуйте list
Как?
Firik
Вместо

list=line.split()
Пишите

string_list=line.split()
glsmen
Firik
Вместо
Не, не помогает!
Stright
Вы изменяете атрибут mycat.dx, а принтом выводите атрибут, который не менялся
Firik
glsmen
И не поможет, но так надо. В вашем случае, чтобы изменить данные и вывести их, нужно использовать свойства.
На 3 питоне я бы сделал так
import os 
import sys

class cc_cat:
def __init__(self,line):
s_list=line.split(' ')

self.fn=str(s_list[0])
self.dx=float(s_list[1])
self.dy=float(s_list[2])

@property
def all(self):
return [self.fn, self.dx, self.dy]

fc= "ns1 8 -3"
ddx=2
ddy=5

mycat=cc_cat(fc)
mycat.dx=ddx+mycat.dx
# mycat.dy=ddy+mycat.dy
print(mycat.all)
glsmen
Firik
glsmenИ не поможет, но так надо. В вашем случае, чтобы изменить данные и вывести их, нужно использовать свойства.На 3 питоне я бы сделал так

Спасибо за совет! Буду пробовать!
glsmen
Firik
И не поможет, но так надо. В вашем случае, чтобы изменить данные и вывести их, нужно использовать свойства.На 3 питоне я бы сделал так

Попробовал и по Вашему методу, но не получилось, так как у меня питон 2.7.9.
Но решил проблему старинным методом. Вот код
for li in fc:
    mycat=cc_cat(li)
    mycat.dx=mycat.dx+ddx
    mycat.dy=mycat.dy+ddy
    mm=str(mycat.fn)+' '+str(mycat.dx)+' '+str(mycat.dy)
    print mycat.all
    tocal.append(mm)
#print tocal
for li1 in tocal:
    print li1
fc.close() 
Как видите, код получилось грубым. Все равно спасибо Firik!

Если есть другие варианты подскажите, плиз. Заранее благодарен!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB