Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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 命令引发异常:NameError:name';x';没有定义_Python - Fatal编程技术网

Python 命令引发异常:NameError:name';x';没有定义

Python 命令引发异常:NameError:name';x';没有定义,python,Python,错误端 回溯(最近一次呼叫最后一次): 文件“D:\Users\Arda\AppData\Local\Programs\Python\Python38-32\lib\site packages\discord\ext\commands\bot.py”,第892行,在invoke中 等待ctx.command.invoke(ctx) 文件“D:\Users\Arda\AppData\Local\Programs\Python\Python38-32\lib\site packages\discor

错误端

回溯(最近一次呼叫最后一次): 文件“D:\Users\Arda\AppData\Local\Programs\Python\Python38-32\lib\site packages\discord\ext\commands\bot.py”,第892行,在invoke中 等待ctx.command.invoke(ctx) 文件“D:\Users\Arda\AppData\Local\Programs\Python\Python38-32\lib\site packages\discord\ext\commands\core.py”,第797行,在invoke中 等待注入(*ctx.args,**ctx.kwargs) 文件“D:\Users\Arda\AppData\Local\Programs\Python\Python38-32\lib\site packages\discord\ext\commands\core.py”,第92行,包装为 从exc引发CommandInvokeError(exc) discord.ext.commands.errors.CommandInvokeError:命令引发异常:NameError:未定义名称“x”


我知道这个错误怎么解决?

看起来你没有给你的代码调用的
x
y
变量赋值
plt.plot(x,y)
你可以替换它

def plotx(arg):
    m=np.linspace(-np.pi,np.pi,1000)
    l=arg.split(",")
    l1=l[0]
    l1=l1.replace("?","m")
    l2=l[1]
    l2=l2.replace("?","m")
    print(l1)
    print(l2)
    exec("x ="+l1)
    exec("y ="+l2)
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.spines['left'].set_position('center')
    ax.spines['bottom'].set_position('center')
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_ticks_position('left')
    plt.plot(x,y)
    plt.show()
  

@client.command()
async def plot(ctx,arg):
    plotx(arg)

更清楚的是:

l=arg.split(",")
x=l[0].replace("?","m")
y=l[1].replace("?","m")
你可以只写一行,但我认为这会牺牲清晰度


更好的做法是首先接受x和y作为参数

我还在不同的文件中编写了这段代码,它可以工作什么?执行(“x=”+l1)?你的意思是x=l1吗?这能回答你的问题吗?不,l1类似于np.sin(m)。和exec(“x=”+l1)=>x=np.sin(m)#np.sin(m)根据exec函数计算,强烈建议不要执行
exec(“var=…”)
。按照quamrana的建议简单地执行
x=l1
,应该可以修复错误。例如,我的目的是当我编写exec(“x=“+l1”)时,l1=np.sin(?)x将等于np.sin(?)数组你知道可以将函数作为参数传递吗?
l=arg.split(",")
x=l[0].replace("?","m")
y=l[1].replace("?","m")
arg = arg.replace("?","m")
x,y = arg.split(",")