Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法将存储的变量插入Numpy正弦函数_Python_Variables_Numpy_Matplotlib_Cgi - Fatal编程技术网

Python 无法将存储的变量插入Numpy正弦函数

Python 无法将存储的变量插入Numpy正弦函数,python,variables,numpy,matplotlib,cgi,Python,Variables,Numpy,Matplotlib,Cgi,我试图从html页面表单中获取一个条目,并将其传递给cgi脚本,在该脚本中获取该条目并给出该条目的正弦函数。 条目将是:x或x**2或1-x/x 我一直在工作,直到我尝试在np.sin中使用变量lala。它返回一个空白页 下面是一些代码 import cgi import cStringIO import matplotlib.pyplot as plt import numpy as np form = cgi.FieldStorage() def doit(): lala = f

我试图从html页面表单中获取一个条目,并将其传递给cgi脚本,在该脚本中获取该条目并给出该条目的正弦函数。 条目将是:x或x**2或1-x/x

我一直在工作,直到我尝试在np.sin中使用变量lala。它返回一个空白页

下面是一些代码

import cgi
import cStringIO
import matplotlib.pyplot as plt
import numpy as np

form = cgi.FieldStorage()

def doit():
    lala = form.getvalue('x')
    x = np.linspace(-np.pi,np.pi,100)
    y = np.sin(lala)

    format = "png"
    sio = cStringIO.StringIO()

    plt.plot(x, y)
    plt.axis('tight')
    plt.savefig(sio, format=format)

    data_uri = sio.getvalue().encode('base64').replace('\n', '')
    img_tag = '<img src="data:image/png;base64,{0}" alt="sucka" />'.format(data_uri)

    print("Content-type: text/html\n")
    print("<title>Try Ageen</title>")
    print("<h1>Hi</h1>")
    print(img_tag)
    print("<h1>This is the sine of %s</h1>" %xx)

doit()
正如我所说,它将在html代码中返回变量lala,如下所示:例如,这是x的正弦

它不允许我将lala变量插入y=np.sinHERE。即使lala的返回值是x。

form.getvalue'x'返回一个字符串。在传递到np.sin之前,必须将其转换为numpy数组。由于脚本崩溃,您将得到一个空白页。

您从lala=form.getvalue'x'中得到了什么?打印出来。很可能是一个字符串,比如“x”

np.sin需要一个数字或数组

In [785]: np.sin(1)
Out[785]: 0.8414709848078965
In [786]: x=np.linspace(-np.pi, np.pi, 4)
In [787]: x
Out[787]: array([-3.14159265, -1.04719755,  1.04719755,  3.14159265])
In [788]: np.sin(x)
Out[788]: 
array([ -1.22464680e-16,  -8.66025404e-01,   8.66025404e-01,
         1.22464680e-16])
要在plt.plotx、y中工作,y应具有与x相同的元素数,例如y=np.sinx。我没看到你做过那样的计算

使用字符串“x”的np.sin'x将不起作用

如果要使用html表单中的字符串来选择用于打印的数组,我建议使用字典映射:

dd = {'x': x, 'x2': x**2, 'x1': x/(1-x)}
y = sin(dd[lala])

尝试所有这些。我一编词典,那一页就翻不起来了。拉拉返回“x”,是的。y=np。sindd[lala]不工作。谢谢你的回复。