Sehr angenehm! Ich dachte, es wäre ein Memo Die Funktion eval () gibt das Berechnungsergebnis mit der Zeichenfolge ** Ausdruck ** als Argument zurück.
>>> eval("1 + 2")
3
>>> eval("1" "2")
12
>>> eval("1" + "2")
12
>>> eval("1" "+" "2")
3
Wann ich es verwenden soll, habe ich in [Dieses Problem] von AtCoder (https://atcoder.jp/contests/arc061/tasks/arc061_a) verwendet.
Problemstellung Sie erhalten die Zeichenfolge S, die nur aus Zahlen zwischen 1 und 9 besteht. Innerhalb dieser Zeichenfolge können Sie an einigen Stellen zwischen diesen Zeichen ein + setzen. Sie müssen keine eingeben. Das + darf jedoch nicht fortlaufend sein. Alle auf diese Weise erstellten Zeichenketten können als mathematische Formeln betrachtet und die Summe berechnet werden. Berechnen Sie die Werte aller möglichen Formeln und geben Sie die Summe aus.
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)
Recommended Posts