Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2010 10:16:41

Olyaleo
От:
Зарегистрирован: 2010-03-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

там где мы присваиваем row = “abcd” из table.csv данные вообще не изменяются, это константа. А вот в таблице input1.csv буквенные коды менятся, там могут быть:

1    dfsaas    cccc    242
2 dfsaas bbbb 242
3 dfsaas aaaa 242
4 dfsaas dddd 242
5 dfsaas caac 242
6 dfsaas bdab 242
7 dfsaas acdb 242
8 dfsaas dddc 242
т.е. всевозможные комбинации “a” “b” “c” “d” букв.
Верно, если это будет комбинация “сссс”, то сумма = сумме всех значений столбца “с”, т.е. = 88.
Griffon, судя по результатом вашего кода, расчет производится верно. Но, к сожалению, у меня не получается запустить этот скрипт у себя на компьютере.



Офлайн

#2 Март 30, 2010 10:34:52

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

Подредактировали где я сказал?
Какая ошибка теперь?



Офлайн

#3 Март 30, 2010 10:42:13

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

Ага. Cтолбца значит. То есть “abcd” уникальные имена столбцов. А мы даём в файле инпут имя столбца для каждой строки.
то есть:
a b c d
0 0 1 0 c
0 0 1 0 c
0 0 1 0 c
0 1 0 0 b

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv
import math

cols = "abcd"
result = []

table = open('table.csv')
data = []
for string in table.readlines():
data.append(map(int, string.rstrip().split(',')))

inputs = open('input1.csv')
for string in inputs.readlines():
rows = string.split(',')[2].strip()
summa = 0
for i, char in enumerate(rows):
summa += data[i][cols.index(char)]
result += [summa]

print(result)
Разделитель в input.csv запятая я надеюсь.

Или всётаки сумма элементов строки? Как это обьяснялось вами же ранее.

с с с с (из файла)
0 0 0 0 а
0 0 0 0 b
1 1 1 1 c
0 0 0 0 d
?
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv
import math

rows = "abcd"
result = []

table = open('table.csv')
data = []
for string in table.readlines():
data.append(map(int, string.rstrip().split(',')))

inputs = open('input1.csv')
for string in inputs.readlines():
cols = string.split(',')[2].strip()
summa = 0
for i, char in enumerate(cols):
summa += data[rows.index(char)][i]
result += [summa]

print(result)
UPD: Стоит определится :)



Отредактировано (Март 30, 2010 10:53:48)

Офлайн

#4 Март 30, 2010 10:57:01

Olyaleo
От:
Зарегистрирован: 2010-03-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

урааа!!! все заработала…
Griffon, спасибо Вам огромное
теперь разберусь как следует с кодом, и буду дальше вопросы задавать )))



Офлайн

#5 Март 30, 2010 11:10:18

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

Только import'ы тут вообще не надо. :)



Офлайн

#6 Март 30, 2010 12:56:57

Olyaleo
От:
Зарегистрирован: 2010-03-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

я себе чуть усложнила задачу, поэтому у меня уже возникли вопросики:
1) в таблице где находится уникальный код, я изменила переменные с плаващей (.), следовательно мне пришлось поменять int на float . Но почему то считывание происходит не совсем корректно, не пойму почему он так их записывает, у меня в таблице 1 столбце значения ,а считывает как
2) как мне записать в таблицу Output.csv, полученные значения в 2 столбика (x,y).

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv
import math

cols = "abcd"
result = []

table = open('TableSeven.csv', 'r')
data = []
for string in table.readlines():
data.append(map(float, string.rstrip().split(',')))
print data

inputs = open('Input.csv', 'r')

for string in inputs.readlines():
rows = string.split(',')[1].strip()
summa = 0
for i, char in enumerate(rows):
summa += data[i][cols.index(char)]
result += [summa/100]
for x in result:
x.writeopen('Output.csv', 'w')

cols = "abcd"
result = []

table = open('TableNine.csv', 'r')
data = []
for string in table.readlines():
data.append(map(float, string.rstrip().split(',')))

inputs = open('Input.csv', 'r')
for string in inputs.readlines():
rows = string.split(',')[3].strip()
summa = 0
for i, char in enumerate(rows):
summa += data[i][cols.index(char)]
result += [summa/100]
for y in result:
y.writeopen('Output.csv', 'w')



Офлайн

#7 Март 30, 2010 13:44:39

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

Уверена что прочитала хоть одну книгу по питону?
http://python.su/forum/viewtopic.php?id=4648
Для записи формируем массив строк и записываем в файл. Это точно в литературе есть с примерами.



Офлайн

#8 Март 30, 2010 13:56:42

Olyaleo
От:
Зарегистрирован: 2010-03-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

с чего начать? хочу написать код

да, уверена, я уже просто потом вспомнила этот нюанс с float.
Потому что теории много, а практики никакой, отсюда и вылетают глупые вопросы. Но мне простительно, я же в разделе чайников :), а даже не новичков. Зато теперь этот нюанс точно в голове отложился. Кстати, спасибо за ссылку, там много полезной инфы.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version