Python如何调用用户输入的整数类型数学函数完成计算
问题根源
你当前的代码中input()返回的是字符串类型的表达式文本,f(k)直接将该字符串作为返回值,因此集合中只会存入重复的表达式字符串,不会执行对应的计算逻辑。
解决方案
使用eval()执行表达式,同时限制作用域避免安全风险,调整后代码如下:
A = set() # 避免使用max作为变量名,防止覆盖Python内置max()函数 max_val = 10**3 func_expr = input("Input a function (use k as variable): ") def f(k): # 限定eval作用域,仅允许访问变量k,禁用内置函数规避恶意代码风险 return eval(func_expr, {"__builtins__": None}, {"k": k}) g = (f(k) for k in range(max_val)) A.update(g) print("A = ", A)
注意事项
- 只要用户输入的表达式仅包含整数运算(加减乘、整数幂
**、取模%等),运算结果全程为整数,不会产生浮点数。如果需要做除法运算,提示用户使用整数除法运算符//而非普通除法/即可满足无浮点数要求。 - 如果你觉得原代码运行速度偏慢,可以直接用集合推导式简化逻辑,执行效率更高:
A = {eval(func_expr, {"__builtins__": None}, {"k": k}) for k in range(max_val)}
内容的提问来源于stack exchange,提问作者Mathphyte
相关产品推荐
相关产品推荐

