如何创建一个返回由3位或更多位数组成的字符串之和的函数。例如,如果参数/字符串是“13456”。如何返回(1 * 3 + 3 * 4 + 4 * 5 + 5 * 6)的结果。谢谢,所有帮助表示赞赏。对python来说很新。
答案 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
使用map
将list(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)])