Сумма строки с положительными и отрицательными целыми числами - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть строка, такая как "12-569-8", и я хочу разделить ее на список целых отрицательных и положительных чисел, чтобы я мог сложить их вместе - например,

list = ['1', '2', '-5', '6', '9', '-8']

, где сумма будет 5. Я в основном борюсь с разделением списка.

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

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

s = "12-569-8"
import re

sum(map(int,re.findall(r'(\d|-\d)', s)))
# 5

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

res = 0
i=0
while i < len(s):
    x = s[i]
    if x != '-':
        res += int(x)
    else:
        i += 1
        res -= int(s[i])
    i += 1

print(res)
# 5
0 голосов
/ 02 апреля 2020

Если вы не хотите использовать импорт, вы можете разделить все символы пробелом и удалить пробел после знака минус. Затем разбейте строку на пробелы, и каждое число будет правильно интерпретировано:

s = "12-569-8"
c = " ".join(s).replace("- ","-") # space out, remove space after minus
n = list(map(int,c.split()))      # split and convert to integers 

print(c) # '1 2 -5 6 9 -8'
print(n) # [1, 2, -5, 6, 9, -8]
...