2011-02-27 73 views
0

您好我在本书中发现:在工程数值方法与Python模块run_kut5,但该模块,我需要模块printSoln,书中所有提供。现在我编写代码,进行必要的行调整等等。代码如下: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 

但我从书cp'd:\所以,现在当我打电话的run_kut模块我得到的同样的错误,没有为Y printSoln定义...

我想摸不着头脑,但我吸:(

帮助,请...

回答

0

我猜想这是一个选项卡/空间问题 - 检查你没有混合制表符和空格的缩进。

编辑:如果它不是缩进,并且由于您的错误消息包含“<module>”而不是文件名,我猜你正在将它粘贴到交互式解释器中。

相反,你应该将代码粘贴到一个名为printsoln.py文件,然后在交互式解释器中运行这个:

from printsoln import printSoln 

如果你仍然想这一切粘贴的解释,那么你就可能需要删除空白行 - 在def printSoln之后和每个内部函数之后。交互式解释器使用空行来找出当你用多线定义完成,并试图评估m = len(Y)的功能printSoln范围之外。在这种情况下,变量Y不存在。

+0

我做到了,起初有这个问题,但我做了所有正确的压痕,现在我得到这样的:\ – 2011-02-27 12:49:11