2015-10-11 5 views
1

Я изучаю программу, используя книгу «Введение в вычисления и программирование с использованием Python» Джона В. Гуттага. Существует упражнение на нем, что говорит следующее:Сумма частей строки в Python

'Finger exercise: Let s be a string that contains a sequence of decimal numbers separated by commas, e.g., s = '1.23,2.4,3.123'. Write a program that prints the sum of the numbers in s.'

Моя попытка была:

#Finger exercise [MIT] PAGE 42  12:50 | 11.10.2015 
s = ','+raw_input('Enter a string that contains a sequence of decimal numbers separated by commas, e.g. 1.23,2.4,3.123): ')+',' 
    total = 0 
    for l in range(0,len(s)): 
     if s[l] == ',': 
      c = l + 1 
      while s[c] != ',': 
       c = c + 1 
       if s[c] == ',': 
        total = total + int(s[int(l),int(c)]) 
print total 

, но он продолжает показывать эту ошибку

TypeError: string indices must be integers, not tuple

Я пытался искать решения в Интернете но только нашли решения, которые работают , но не с содержанием, которое я уже сейчас. Любая помощь?

+0

Позже, когда вы знаете основы, попробуйте эту сумму (map (float, s.split (','))) '. Работает в одной строке –

ответ

1

Вы создаете кортеж при попытке доступа к строковому элементу здесь:

s[int(l),int(c)] 

Запятые обычно создают кортежи.

Вместо этого, вы хотите использовать кусок здесь через двоеточие:

s[int(l):int(c)] 

Обратите внимание, что обе переменные являются уже целые числа, так что вы на самом деле не нужно, чтобы преобразовать их:

s[l:c] 

Также обратите внимание, что вы суммируете целочисленные значения, хотя вы принимаете float в качестве входных данных. Поэтому вместо добавления int(s[l:c]) вы хотите добавить float(s[l:c]).

0

Прежде всего, перед первой запятой нет обработки ничего.

Далее вы должны прокомментировать каждую ее часть, по крайней мере, изначально, чтобы вы ясно поняли, что делает каждая строка.

Вам не нужно проверять наличие «,» в нескольких местах, сохранять переменную.

+0

Вы читали последнее предложение OP? Они немного ищут решение «вот как это сделать», но это решение для исправления * их * кода. – poke

Смежные вопросы