2013-09-28 7 views
2

Я только начинаю программировать, и я знаю, что мне все еще не хватает некоторых основ, но я пытаюсь это понять. У меня есть список из 3 и 4 цифр, которые я привез из текстового файла, и я пытаюсь получить сумму этих чисел. Пока все, что я могу сделать, чтобы выполнить python, это выполнить сумму каждого отдельного номера, поэтому, если первое число в списке равно 427, оно печатает 13, вместо добавления 427 + 504 + 219 и т. Д.Преобразование строки в целые числа

Это что у меня есть:

myList = [] 
inFile = open('E:/GIS/GTECH 731/NYCElementarySchools.txt', 'r') 
for row in inFile: 
    col = row.split('\t') 
    if col[1]=='BK': 
     myList = (col[3]) 
     intList = [int(x) for x in myList] 
     print sum(intList) 

Кроме того, когда у меня есть его длина печати, это дает мне список 3-х и 4-х, говоря мне длину каждого номера, не давая мне общее количество номеров.

Должно быть, мне что-то не хватает, но я не знаю, что это такое! Любые предложения приветствуются! Благодаря!

+0

Отформатируйте свой код, отложив его в 4 пробела. – rlms

+0

Опубликуйте некоторые образцы данных из текстового файла. –

+0

@hcwhsa должно нормально работать? –

ответ

1

Это:

myList = (col[3]) 

установит myList к str, а не list, который был бы представлением числа. Таким образом:

intList = [int(x) for x in myList] 

преобразует цифры в цифры. Вы хотите, чтобы int(myList) преобразует всю строку в число.


Вы можете сохранить текущую сумму (инициализируется до 0) и сделать total += int(myList) в общей сложности все номера. Затем после цикл вы можете print результат.

+0

int ("1 2 3") попробуйте это ... – LtWorf

+0

Если 'myList' были такими,' [int (x) для x в myList] 'забросил бы ошибку. – Veedrac

0

Возможно, вы хотите использовать кусок для назначения MyList

myList = col[3:] 

это будет возвращать список все из 3-го столбца на.

1

В коде:

col = row.split('\t') 
if col[1]=='BK': 
    myList = (col[3]) 
    intList = [int(x) for x in myList] 
    print sum(intList) 

'цв = row.split (' \ т ')' составляет список, который разделен на TAB.

Если линия, которая считывается из файла, выглядит следующим образом:

# \t is TAB 
SOMETHING\tBK\t1\t2\t3 

Структура цв является:

col[0] = SOMETHING 
col[1] = BK 
col[2] = 1 
col[3] = 2 
col[4] = 3 

Так что, если вы собираетесь сумму седловины [3] для Col [ ...], то используйте col [3:] = список col [3], col [4]

Таким образом, если вы хотите скопировать результат суммы, вам понадобится другая переменная.

myList = [] 
inFile = open('E:/GIS/GTECH 731/NYCElementarySchools.txt', 'r') 
sumList = [] 
for row in inFile: 
    row_total = 0 
    col = row.split('\t') 
    if col[1]=='BK': 
     intList = [int(x) for x in col[3:]] 
     row_sum = sum(intList) 
     # row_sum = map(lambda x: int(x), col[3:]) 
     print 'row total: %d' % (row_sum) 
     sumList.append(row_sum) 

print 'total: %d' % (sum(sumList)) 
Смежные вопросы