へー便利!と思ったのでメモ
eval()関数は式の文字列を引数として計算結果を返す。
使い方
>>> eval("1 + 2")
3
>>> eval("1" "2")
12
>>> eval("1" + "2")
12
>>> eval("1" "+" "2")
3
どういう時に使うのかというと、僕はAtCoderのこの問題で使いました。
問題文
1 以上 9 以下の数字のみからなる文字列 S が与えられます。 この文字列の中で、あなたはこれら文字と文字の間のうち、いくつかの場所に + を入れることができます。 一つも入れなくてもかまいません。 ただし、+ が連続してはいけません。
このようにして出来る全ての文字列を数式とみなし、和を計算することができます。
ありうる全ての数式の値を計算し、その合計を出力してください。
from itertools import product
s = list(input())
n = len(s)
answer = 0
pattern = list(product(['+', ''], repeat=n-1))
for i in range(2 ** (n-1)):
formula = s[0]
for j, k in zip(pattern[i], s[1:]):
formula += (j + k)
answer += eval(formula)
print(answer)