您好我在书中找到了:使用Python工程中的数值方法模块run_kut5,但对于该模块,我需要模块printSoln,所有这些都在本书中提供。现在我编写代码,进行必要的行调整等等。代码如下:
# -*- coding: cp1250 -*-
## module printSoln
''' printSoln(X,Y,freq).
Prints X and Y returned from the differential
equation solvers using printput frequency ’freq’.
freq = n prints every nth step.
freq = 0 prints initial and final values only.
'''
def printSoln(X,Y,freq):
def printHead(n):
print "\n x ",
for i in range (n):
print " y[",i,"] ",
print
def printLine(x,y,n):
print "%13.4e"% x,f
for i in range (n):
print "%13.4e"% y[i],
print
m = len(Y)
try: n = len(Y[0])
except TypeError: n = 1
if freq == 0: freq = m
printHead(n)
for i in range(0,m,freq):
printLine(X[i],Y[i],n)
if i != m - 1: printLine(X[m - 1],Y[m - 1],n)
现在,当我运行该程序时,它说:
line 24, in <module>
m = len(Y)
NameError: name 'Y' is not defined
但是我从书中说:\所以现在当我调用run_kut模块时,我得到了相同的错误,在printSoln中没有定义Y ...
我正试图解决这个问题,但我很糟糕:(
请帮助......
答案 0 :(得分:0)
我猜它是标签/空格问题 - 检查缩进中是否有混合标签和空格。
编辑:如果它不是缩进,并且由于您的错误消息包含“<module>
”而不是文件名,我猜您正在将其粘贴到交互式解释器中。
相反,您应该将代码粘贴到名为printsoln.py的文件中,然后在交互式解释器中运行:
from printsoln import printSoln
如果您仍想将它全部粘贴到解释器中,那么您可能需要删除空行 - def printSoln
之后和每个内部函数之后的空行。交互式解释器使用空行来确定何时完成多行定义,并尝试在函数m = len(Y)
的上下文之外评估printSoln
。在此上下文中,变量Y
不存在。