2017-11-11 94 views
-1

如何創建一個返回由3個或更多數字組成的字符串的總和的函數。例如,如果參數/字符串是「13456」。如何返回(1 * 3 + 3 * 4 + 4 * 5 + 5 * 6)的結果。謝謝,所有幫助表示感謝。對python很新穎。Python - 添加字符串中的所有數字

+2

你嘗試過這麼遠嗎? –

回答

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

你只需要通過字符串,將實際值乘以下一個值,並將其添加到一個變量,以便稍後返回。

def func(param): 
    ret = 0 
    for i in range(len(param)-1): 
     ret = ret + int(param[i]) * int(param[i+1]) 
    return ret 
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 

使用list(map(...))是在Python 2.7多餘的,但在Python 3.X必要作爲地圖返回一個對象,而不是一個列表轉換的map結果到列表中。

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 
0
def func(input): 
    return sum([int(input[i])*int(input[i+1]) for i in range(len(input)-1)]) 
+0

您是否看到其他答案?這個解決方案已經發布。 – Transhuman

1

另外一個班輪:

a = '13456' 

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