如何将Python用户输入的内容作为代码而非字符串执行
Python执行输入的算术表达式的实现方法
方法1:直接使用eval()(仅适合输入完全可信的场景)
这是最简实现方案,eval()函数可以直接将符合Python语法的字符串作为代码执行:
x = input('Enter a operation: ') # 当用户输入 4*3**2 print('Answer is:', eval(x)) # 输出结果:Answer is: 36
风险提示:
eval()无差别执行所有传入的Python代码,如果输入来源不可控,恶意用户可能传入执行系统指令、删除文件等有害代码,造成严重安全问题。
方法2:增加输入校验后执行(适合公开使用的场景)
如果需要面向不可信用户提供服务,可先通过白名单规则校验输入内容,仅允许算术运算相关的合法字符传入后再执行计算:
import re exp = input('Enter a operation: ') # 白名单仅允许数字、四则运算符、幂运算符、括号、小数点、空格出现 if not re.fullmatch(r'[\d+\-*/()**. ]+', exp): print('非法输入,仅支持标准算术运算表达式') else: print('Answer is:', eval(exp))
内容的提问来源于stack exchange,提问作者DANIEL1475
相关产品推荐
相关产品推荐

