Уведомления

Группа в Telegram: @pythonsu

#1 Май 3, 2016 12:24:31

glsmen
Зарегистрирован: 2016-04-19
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со столбцами

Уважаемые форумчаны,
Подскажите плиз где допускаю ошибку или не понимаю.
Суть: У меня есть следующая таблица в текстовом файл.
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()
     
Программа выдает исходных данных без изменений. Что делать, чтобы на выходе получались измененные данные?

Офлайн

#2 Май 3, 2016 13:36:09

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Работа со столбцами

Переименуйте list

Офлайн

#3 Май 3, 2016 14:02:19

glsmen
Зарегистрирован: 2016-04-19
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со столбцами

Firik
Переименуйте list
Как?

Офлайн

#4 Май 3, 2016 14:08:41

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Работа со столбцами

Вместо

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

string_list=line.split()

Офлайн

#5 Май 3, 2016 15:31:35

glsmen
Зарегистрирован: 2016-04-19
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со столбцами

Firik
Вместо
Не, не помогает!

Офлайн

#6 Май 3, 2016 16:08:55

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Работа со столбцами

Вы изменяете атрибут mycat.dx, а принтом выводите атрибут, который не менялся

Офлайн

#7 Май 3, 2016 16:15:34

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Работа со столбцами

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)

Отредактировано Firik (Май 3, 2016 16:16:48)

Офлайн

#8 Май 3, 2016 16:57:32

glsmen
Зарегистрирован: 2016-04-19
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со столбцами

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

Спасибо за совет! Буду пробовать!

Офлайн

#9 Май 4, 2016 10:54:17

glsmen
Зарегистрирован: 2016-04-19
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со столбцами

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!

Если есть другие варианты подскажите, плиз. Заранее благодарен!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version