Très pratique! Je pensais que c'était un mémo La fonction eval () renvoie le résultat du calcul avec la chaîne de caractères de ** expression ** comme argument.
>>> eval("1 + 2")
3
>>> eval("1" "2")
12
>>> eval("1" + "2")
12
>>> eval("1" "+" "2")
3
Quand l'utiliser, je l'ai utilisé dans [Ce problème] d'AtCoder (https://atcoder.jp/contests/arc061/tasks/arc061_a).
Énoncé du problème Vous recevrez la chaîne S, qui se compose uniquement de nombres entre 1 et 9. Dans cette chaîne, vous pouvez mettre un + à certains endroits entre ces caractères. Vous n'êtes pas obligé d'en mettre un. Cependant, le + ne doit pas être consécutif. Toutes les chaînes de caractères créées de cette manière peuvent être considérées comme des formules mathématiques et la somme peut être calculée. Calculez les valeurs de toutes les formules possibles et sortez la somme.
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