Как мне написать код, который использует шаблон накопления, чтобы взять сумму всех чисел и присвоить ее int? - PullRequest
0 голосов
/ 03 февраля 2019

extension_str - строка, и мне нужно преобразовать значения в ней в int, используя накопление, но мы не рассмотрели это в тексте.

Я не знаю, как это решить.Я пробовал многочисленные комбинации циклов for, но мой код все еще не верен.Я знаю, что то, что у меня есть ниже, бесполезно, но у меня нет записи обо всех комбинациях, которые я использовал до сих пор.

addition_str = "2+5+10+20"
print(addition_str.split("+"))

print (int("2"))
print (int("5"))
print (int("10"))
print (int("20"))

accum = 0
for i in num_chars:
    accum = accum + i
print(accum)

extension_str - строка со списком чисел, разделенных знаком +.Напишите код, который использует шаблон накопления, чтобы взять сумму всех чисел и присвоить ее sum_val (целое число).(Вы должны использовать функцию .split ("+") для разделения на "+" и int () для приведения к целому числу).

Ответы [ 3 ]

0 голосов
/ 03 февраля 2019

Вот как я могу вам это объяснить:

Во-первых, как только ваш добавочный_стр разделен, вы получите список строк.Вам нужно превратить их в целое число, чтобы вычислить сумму.

Один эффективный способ сделать это - использовать список понимания:

values = [int(s) for s in strings]

Но вы также можете использовать классический цикл:

values = []
for s in strings:
    values.append(int(s))

Здесь значения - это список целых чисел, например: [2, 5, 10, 20] (без кавычек).

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

acc = 0
for value in values:
    acc += value

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

0 голосов
/ 03 февраля 2019

Вот мое решение шаг за шагом:

  1. addition_str.split("+") вернет ['2','5','10','20']
  2. map(int,addition_str.split("+")) вернет map объект
  3. sum(map(int,['2','5','10','20'])) вернет 37

Таким образом, со стилем в одну строку это дает следующее:

sum_val = sum(map(int,addition_str.split("+")))
0 голосов
/ 03 февраля 2019

Как то так?

accumulation = []
mylist = []

addition_str = "2+5+10+20"
str_nums = (addition_str.split("+"))
for i in str_nums:
    mylist.append(int(i))
    accumulation.append(sum(mylist))
...