2017-11-11 22 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

実際の値に次の値を掛けて、それを後で返すために変数に追加するだけで済みます。

0

この関数は、まず文字列をリストに変換し、マップを適用してすべての要素をintに変換します。最後に、

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(...))を使用してリストにmapの結果を変換する、連続した要素へのアクセスと乗算するループを使用してマップではなく、リストのオブジェクトを返すようにPythonの3.XでのPython 2.7で冗長が、必要です。

0

使用rangerange(len(l)-1)と+ sum

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

、あなたは、エンド・インデックスのようなリストL上の上記のリストとインデックスをループ

Output:[0, 1, 2, 3] 

下のスタートを切ることができ、

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])])) 
関連する問題