2011-02-27 17 views
0

こんにちは、私は本の中でPythonのモジュールrun_kut5を数値計算する方法を見つけましたが、そのモジュールではprintSolnモジュールが必要です。今私はコードをcp、必要な行の調整などを行った。printSolnモジュールの問題

line 24, in <module> 
    m = len(Y) 
NameError: name 'Y' is not defined 

しかし、私は本からcp'd:今

# -*- 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) 

私はプログラムを実行すると、それは言う:\私はrun_kutモジュールを呼び出すときだから今私が手のコードは次のようになります同じエラー、printSolnで定義されていないY ...

、してください...

答えて

0
私はこれを理解しようとしているが、私は:(

ヘルプを吸います

私はそれがタブ/スペースの問題だと思います - インデントにタブとスペースが混在していないことを確認してください。

EDIT:インデントされていない場合、エラーメッセージにファイル名ではなく「<module>」が含まれているため、これをインタラクティブなインタープリタに貼り付けることになります。

代わりに、あなたはprintsoln.pyというファイルにコードを貼り付け、その後、対話インタプリタでこれを実行する必要があります。

from printsoln import printSoln 

あなたはまだインタプリタでそれをすべて貼り付けたい場合、あなた'LLおそらく空白行を削除する必要があります - def printSolnの後と各内部関数の後。インタラクティブなインタプリタは、空白行を使用して、複数行の定義が完了した時点を把握し、m = len(Y)を関数printSolnのコンテキスト外で評価しようとします。この文脈では、変数Yは存在しません。

+0

私はその問題を抱えていましたが、私はすべての字下げを正しく行いました。今はこれを得ます:\ –

関連する問題