2016-11-23 5 views
-3

私は他の関数でそれらを使うことができるように変数を与えて辞書から要素にアクセスしようとしていますが、定義されていないことを教えてくれます。辞書から要素にアクセスしますか? Python

私が使用していたファイル(mood.txt):

happy, Jennifer Clause 
happy, Jake Foster 
sad, Jonathan Bower 
mad, Penny 
excited, Logan 
awkward, Mason Tyme 

私のコード:

def theFile(): 
    moodFile = open("mood.txt") 
    theMood = moodFile.readlines() 
    moodFile.close() 
    return(theMood) 

def makeTheDict(myFile): 
    moodDict = {} 

    for lines in myFile: 
     (mood, name) = lines.split(",") 

     moodDict[mood] = name.strip() 

    return(moodDict) 


def printMood(mood, moodDict): 

    if mood in moodDict: 
     print("The people who are", mood, ":", name) 


def main(): 

    moodFile = theFile() 

    moodDict = makeTheDict(moodFile) 

    findMood = input("Which mood do you want to choose?: ") 
    printMood(findMood, moodDict) 

私はこのエラーを得続ける:私は誰かを説明することを願って

NameError: global name 'name' is not defined 

を私が間違っていることを私に教えてください!ありがとう!

+1

あなたの避難所」あなたが実際にコードを投稿したのであれば、ここでは定義されていない行についてエラーが発生するでしょうから '(mood、name)= lines.split("、 ")' – e4c5

+0

私は苦労していたgをタイプして同時に見ることができます。 – naraemee

+0

ok私は何をしましたか?私はそれを修正した – naraemee

答えて

1

あなたの機能にnameを定義していません。

def printMood(mood, moodDict): 
    if mood in moodDict: 
     print("The people who are", mood, ":", moodDict[mood]) 

それともキーを既存のない場合に返すために、デフォルトの引数を受け入れdict.get()属性を使用:GEへmoodDict[mood]に名前を使用します。あなたはどちらif条件の乗り心地と各反復で比較を取得します:

def printMood(mood, moodDict): 
    print("The people who are", mood, ":", moodDict.get(mood, '-')) # you can use any default string instead of '-'. 
+0

ありがとう!これは今よりずっと意味をなさない! – naraemee

0

私はこの行を推測していることが問題である:

if mood in moodDict: 
    print("The people who are", mood, ":", name) 

試してみてください。

if mood, names in moodDict.iteritems(): 
    print("The people who are", mood, ":", names) 
関連する問題