Дмитрий Asked:2022-04-18 15:36:31 +0000 UTC2022-04-18 15:36:31 +0000 UTC 2022-04-18 15:36:31 +0000 UTC 如何从括号中取出表达式然后求解? 772 n = "√(9-5)-√(4+5)" 我需要算法取出 9-5 和 4+5,然后求解这两个表达式并将它们添加到列表中。例子: root = [] n = "√(9-5)-√(4+5)" z = "9-5" n = eval(z) n = 4 root.append(n) 4+5也是一样 python 2 个回答 Voted Best Answer Zhihar 2022-04-18T15:50:24Z2022-04-18T15:50:24Z 算法和你上一个任务一样,只有我们不仅要寻找数字,还要寻找符号 然后我们执行得到的字符串——这是解决表达式的最快方法,否则你需要单独编写它的解析器 import re n = "√(9-5)-√(4+5) + 15" res = [eval(text) for text in re.findall(r'\(([0-9-+]*)\)', n)] print(res) 请eval自行承担使用风险:) SergFSM 2022-04-19T00:20:09Z2022-04-19T00:20:09Z 如果你对函数的使用感到困惑eval(),那么你可以这样解决: from re import findall n = "√(9-5)-√(4+5) + 15" d = { '+': lambda x,y: x+y, '-': lambda x,y: x-y } res = [d[o](int(x), int(y)) for x, o, y in findall(r'\((\d+)(\D+)(\d+)\)', n)] print(res) # [4, 9]
算法和你上一个任务一样,只有我们不仅要寻找数字,还要寻找符号
然后我们执行得到的字符串——这是解决表达式的最快方法,否则你需要单独编写它的解析器
请
eval自行承担使用风险:)如果你对函数的使用感到困惑
eval(),那么你可以这样解决: