2016-04-18 17 views
0

私はプログラムを書くとエラーとのトラブルを取得し続けています:あなたは私が働いていたファイルを見ることができないにもかかわらず名前パラメータを渡すときのエラー?

File "C:/Users//Documents///", line 47, in      <module> 
print(operations(sorted_list_desc)) 
NameError: name 'sorted_list_desc' is not defined 

、私は私のコードを提供しています。私は年をループし、年ごとにオペレータをランダムに選択することになっています。しかし、私は上記のエラーを取得し続ける。なぜ私はそれを取得し続ける任意のアイデア?

import csv 

#List to store different operators 
list_operators = ["+","-","*","/"] 


#Function to read file of list 
def read_file(): 

#List to store data 
    sorted_list_desc = [] 

year = csv_file.readline() 
    population = csv_file.readline() 


    return sorted_list_desc 

    print(read_file()) 

def operations(sorted_list_desc): 
    for i in range(len(sorted_list_desc)): 
     operator = random.choice(list_operator) 
    return operator 
print(operations(sorted_list_desc)) 
##   
+1

フルコードを入力できますか?あなたは 'print(operations(sorted_list_desc))'をどこで呼びますか? – miradulo

+0

しました、ごめんなさい – pythonslittlehelper

答えて

1

sorted_list_descread_file()によって生成されます。

print(operations(read_file())) 

行:にあなたの最後の行を変更

print(read_file()) 

は魔法のグローバルオブジェクトの小枝名 sorted_list_descを作成していません。 operations()に明示的に渡す必要があります。

また、あなたが書くことができます:あなたが唯一のあなたの関数read_file()sorted_list_descを割り当てた

sorted_list_desc = read_file() 
print(operations(sorted_list_desc)) 
+0

ありがとうございます!助けた – pythonslittlehelper

1

。したがって、あなたのエラーは、sorted_list_descがあなたの関数のスコープ外のものに割り当てられていないことを伝えています。 Python scoping rulesを参照してください。sorted_list_descをパラメータとして渡す必要はなく、関数内に割り当てられているためです。

0

sorted_list_descは、read_file()関数の範囲内で定義されているため、その関数の外部では参照できません。 print(operations(sorted_list_desc))を 'read_file()'の中で呼び出すこともできますし、sorted_list_desc = []をグローバルスコープで定義することもできます。

関連する問題