| f | def evalform(formula, *args): | f | def evalform(formula, *args): |
| vars = [] | | vars = [] |
| n | name = '' | n | var = '' |
| for ch in formula: | | for ch in formula: |
| if ch.isalpha(): | | if ch.isalpha(): |
| n | name += ch | n | var += ch |
| else: | | else: |
| n | if name and name not in vars: | n | if var and var not in vars: |
| vars.append(name) | | vars.append(var) |
| name = '' | | var = '' |
| if name and name not in vars: | | if var and var not in vars: |
| vars.append(name) | | vars.append(var) |
| vars.sort() | | vars.sort() |
| t | ctx = dict(zip(vars, args)) | t | mapping = dict(zip(vars, args)) |
| return eval(formula, {}, ctx) | | return eval(formula, {}, mapping) |