所以基本上我遇到了一个问题,我已经使我的循环,但由于其中一个变量是在实际的赋值之前定义的,代码停止工作。the code。另一件事是,我正在Spyder中工作,我不知道为什么,但如果我试图编码,使程序收集变量开始(这对于此目的是必不可少的),程序遇到了一个内部问题。关于如何在Spyder中请求用户输入,有什么想法吗?提前感谢大家
基本上,我想做的是对函数进行微分,然后用这些导数创建一个麦克劳林级数。当实际误差((r-j)/r)小于停止变量s时,我想让程序停止并显示结果,但我不知道哪里出了问题。我想做的第二件事是了解如何在程序中从用户那里获得输入。
1条答案
按热度按时间sdnqo3pr1#
所以,这里是,在文本形式,你的代码(对不起,剽窃的论点是无效的在这里)
在一个明显非常混乱的代码中间,甚至更混乱的情况下,与“剽窃”的东西(别担心,如果你有一个工作的代码在您的努力结束,没有办法看起来足够相似,你的原始代码被检测为剽窃,因为我已经张贴在这里:D)实际上有一个很好的问题,我记得我刚才我不得不挠我的头,以了解发生了什么在类似的情况。
这里的问题是,你不能先在
main
函数中计算sympy.diff(q)
,然后再在同一个函数中给q
赋值。由于后面的q = sympy.diff(a)
行,q
必须是一个局部变量(除非你另有说明,见后面)。这是python的默认行为:在函数中赋值变量是局部变量。但是因为你之前阅读过这个变量,在上一行(触发错误的那一行)
a = sympy.diff(q)
中,那么python就有问题了:局部变量a
还不存在。如果没有未来的
q = sympy.diff(a)
,q
在main
中将是“只读”的,python将完成您可能期望的操作:读取全局变量q
。所以,你真实的的问题不是那条线,而是
q = sympy.diff(a)
线。因为即使没有当前错误,该行也不会执行您期望它执行的操作。您可能希望它更改
q
,以便在随后的main
递归调用中,q
从现在开始具有这个新值。不要创建本地值q
,并使main
的下一个调用以全局值q
重新开始。这里你有几个选择。一个是声明
q
有全局变量。只要在main
的开头加上global q
行,q
就成了全局变量。一种更简洁的方法是将q作为参数传递给main。
请注意,使用
count
时可能会遇到同样的问题。您还应该将其声明为全局的,或者更简洁地将其传递给main。还要注意,这只解决了语法错误(当然,也不是所有的错误。例如,
j=sympy.function
都是无意义的)。但这里还有许多其他错误。最不严重的是,您有一个奇怪的习惯,即创建一个Function
,然后立即用另一个函数或表达式覆盖它,将其删除。