Python - 在字符串中添加所有数字

时间:2017-11-11 05:07:31

标签: python

如何创建一个返回由3位或更多位数组成的字符串之和的函数。例如,如果参数/字符串是“13456”。如何返回(1 * 3 + 3 * 4 + 4 * 5 + 5 * 6)的结果。谢谢,所有帮助表示赞赏。对python来说很新。

6 个答案:

答案 0 :(得分:1)

另一个单行:

a = '13456'

print(sum([int(x)*int(y) for x, y in zip(a[1:], a[:-1])]))

答案 1 :(得分:0)

my_string = "12345"
total = 0
for n in range(len(my_string) - 1):
    total += int(my_string[n]) * int(my_string[n+1])

答案 2 :(得分:0)

您只需要遍历字符串,将实际值乘以下一个值并将其添加到变量中以便稍后返回。

def func(param):
    ret = 0
    for i in range(len(param)-1):
        ret = ret + int(param[i]) * int(param[i+1])
    return ret

答案 3 :(得分:0)

此函数首先将您的字符串转换为列表,然后在其上应用地图以将所有元素转换为整数。最后,它使用循环来访问和乘以连续元素,

def str_sum(nstr):
    nint = list(map(int, list(nstr)));
    res = 0;
    for i in range(len(nint[:-1])):
        res += nint[i]*nint[i+1]
    return res

使用maplist(map(...))的结果转换为列表在Python 2.7中是多余的,但在Python 3.X中是必需的,因为map返回一个对象而不是列表。

答案 4 :(得分:0)

使用range + sum

l = '13456'
sum([int(l[i])*int(l[i+1]) for i in range(len(l)-1)])
#Output:
#65

使用range(len(l)-1),您可以获得如下所示的开始,结束索引

Output:[0, 1, 2, 3]

循环上面的列表并在列表l上编制索引,

int(l[i])*int(l[i+1]) # gives [1*3, 3*4 , ...]

汇总输出列表

sum([1*3, 3*4 , ...]) # gives 65

答案 5 :(得分:0)

def func(input):
    return sum([int(input[i])*int(input[i+1]) for i in range(len(input)-1)])