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

Python中接收用户自定义非线性多项式方程输入及eval用法疑问

处理用户输入的非线性方程(含三角函数)的Python实现

问题

要写Python代码让用户输入类似2*x**2 - sin(x) + 1的非线性方程,试了eval()但不知道怎么定义变量x,当前测试代码是:

s = input("enter your equation here")
equation = eval(s)

解决方法

1. 直接计算特定x值的结果

如果只是想算某个x对应的数值,先给x赋值再用eval()就行,别忘了导入math模块(因为用到sin这类数学函数):

import math

s = input("输入你的方程:")
x = float(input("输入x的值:"))
result = eval(s)
print(f"结果:{result}")

2. 做成可反复调用的函数

要是需要多次用不同x计算,把方程包装成函数更方便:

import math

s = input("输入你的方程:")
def calculate(x):
    return eval(s)

# 举个例子测试
print(f"x=0时:{calculate(0)}")  # 结果是1
print(f"x=π/2时:{calculate(math.pi/2)}")  # 结果约为4.9348

3. 安全提醒

eval()会直接执行用户输入的代码,要是有人输入恶意指令(比如删文件的代码)会搞出大问题。如果是给不熟悉的人用的程序,要么用ast.parse限制允许的语法,要么提前过滤输入里的危险内容。

内容的提问来源于stack exchange,提问作者siddhartha U

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:48:24