You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:06:04