2016-09-20 9 views
0

私はEric Matthes氏の本「Python Crash Course」を読んでいますが、私は練習8-15で問題を抱えているようです。Python Crash Course 8-15、定義されていないエラー

8-15は、「print_models.pyの関数をprint_functions.pyという別のファイルに入れます。print_models.pyの一番上にimport文を記述し、インポートされた関数を使用するようにファイルを変更します。ここで

はprinting_functions.pyモジュールのための私のコードです:ここでは

def print_models(unprinted_designs, completed_models): 
    """Simulate printing each design, until none are left. 
    Move each design to completed_models after printing.""" 
    while unprinted_designs: 
     current_design = unprinted_designs.pop() 

     # Simulate creating a 3D print from the design. 
     print("Printing model: " + current_design) 
     completed_models.append(current_design) 

def show_completed_models(completed_models): 
    """Show all the models that were printed.""" 
    print("\nThe following models have been printed:") 
    for completed_model in completed_models: 
     print(completed_model) 

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron'] 
completed_models = [] 
print_models(unprinted_designs, completed_models) 
show_completed_models(completed_models) 

は、運動のために私のコードです8-15

import printing_functions as pf 

pf.print_models(unprinted_designs, completed_models) 
pf.show_completed_models(completed_models) 

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron'] 
completed_models = [] 
print_models(unprinted_designs, completed_models) 
show_completed_models(completed_models) 

このコードを実行すると、モジュールと同じ出力を受け取ることができます。しかし、私はまた、「unprinted_designs」が定義されていないことを述べ、下部にエラーを受け取ります。しかし、私は明らかにこの変数をリストの中で私のコードの最下部に定義しているので、なぜこのエラーが出るのかわかりません。

誰かが私が間違っている可能性のあるアイデアはありますか?どんなフィードバックも高く評価されます。あなたの時間をありがとう。

+1

なぜ 'print_functions.py'に無関係なコードがありますか?それは正確なコピーなので、関数内にないコードを取り除く。変数を使用する前に定義してください。 – Li357

答えて

1

あなたはたいてい正しいことをやったことがありますが、変数を使用する前にそれを割り当てる必要があります。あなたが離れてきたので、また

は、/モジュールに機能を移し、変数は、このモジュールに残っている間、の末尾に不要な行を削除し

import printing_functions as pf 

unprinted_designs = ['iphone case', 'robot pendant', 'dodecahedron'] 
completed_models = [] 

pf.print_models(unprinted_designs, completed_models) 
pf.show_completed_models(completed_models) 

次に、これらのインポートされたものを使用する必要があります他のモジュール関数定義のみがそこにあるはずです

+0

あなたのコメントをありがとう、私はこれを行うとき、私の答えは2回印刷されます。私はモジュールの下の行を削除しようとしましたが、何もしませんでした。 – PhantomDiclonius

+0

'printing_functions.py'の一番下に、それらの機能を実行しているので、2回印刷されます –

関連する問題