2016-11-23 11 views
0

辞書のすべての要素をどのように表示するのか分からないようです。私はそれが定義されていないと言ってエラーを取得し続けます。辞書のすべての要素を印刷しますか? Python

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

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

私のコード:私は機能allMoods()内のすべての気分を印刷しようとしています

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, ":", moodDict[mood]) 


def allMoods(moodDict): 

    #code I am having trouble with 
    for moods in moodDict: 
     print(mood, moodDict[moods]) 


def main(): 

    moodFile = theFile() 

    moodDict = makeTheDict(moodFile) 

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

    allMoods(moodDict) 

print(mood, moodDict[moods])から気分を取り除くと、それはすべての名前をうまく表示しますが、私が気分を挿入すると、それは定義されていないと言います。

allMoods()の中にprintMood(mood, moodDict)と呼んでみましたが、どちらもうまく動作しませんでした。

どのようにすべての気分を名前で印刷しますか?誰でも助けることができます!ありがとう!

+3

あなたは「気分はムードディク」と言ったので、気分は定義されていません。それは 'ムードの気分のために 'でなければなりません。 – zondo

+0

期待している結果を表示できますか? – ettanany

答えて

0

このルーチンでは、moodsmoodでした。それらのうちの1つだけが必要です。 moodが最適です。

def allMoods(moodDict): 
    for mood in moodDict: 
     print(mood, moodDict[mood]) 

この変更ですべてが機能します。以前はmoodを呼び出していたところで、forループ内にmoodを定義していましたが、何も定義したり設定したりしていないため、今は動作します。

+0

ありがとうございました!今、私は分かる :) – naraemee

関連する問題