2016-04-25 13 views
0

私が書いたこの関数の構文エラーがなぜ発生するのかわかりません。それは最初のエリフで発生します。私がそれを実行しようとすると、IDLEのエラーは「無効な構文」としか表示されず、「elif」が強調表示されます。/elif/else構文エラーの場合の機能

コード:

def sort(count_dict, avg_scores_dict, std_dev_dict): 
    '''sorts and prints the output''' 
    menu = menu_validate("You must choose one of the valid choices of 1, 2, 3, 4 \n  Sort Options\n 1. Sort by Avg Ascending\n 2. Sort by Avg Descending\n 3. Sort by Std Deviation Ascending\n 4. Sort by Std Deviation Descending", 1, 4) 
    print ("{}{0:27}{0:39}{0:51}\n{}".format("Word", "Occurence", "Avg. Score", "Std. Dev.", "="*51)) 

    if menu == 1:  
     dic = OrderedDict(sorted(word_average_dict.items(), key=lambda x:x[1], reverse=False)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]) 

    elif menu == 2: 
     dic = OrderedDict(sorted(word_average_dict.items(), key=lambda x:x[1], reverse=True)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]) 

    elif menu == 3: 
     dic = OrderedDict(sorted(std_dev_dict.items(), key=lambda x:x[1], reverse=False)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]) 

    elif menu == 4: 
     dic = OrderedDict(sorted(std_dev_dict.items(), key=lambda x:x[1], reverse=True)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key]) 

    return None 

また、私の印刷フォーマットは正しいものですか?それは右のように多くのスペースを正当化するはずで、最後の2は小数点第4位の浮動小数点です。

ご協力いただきありがとうございます。

+0

それはタイプミスです。 9行目のprintステートメントの最後の括弧を閉じているわけではありません。 – Roberto

+0

あなたは救いの手です! –

答えて

0

あなたはすべてのelifの開始の間に空白行を入力しているようです。

はこれを試してみてください:

def sort(count_dict, avg_scores_dict, std_dev_dict): 
    '''sorts and prints the output''' 
    menu = menu_validate("You must choose one of the valid choices of 1, 2, 3, 4 \n  Sort Options\n 1. Sort by Avg Ascending\n 2. Sort by Avg Descending\n 3. Sort by Std Deviation Ascending\n 4. Sort by Std Deviation Descending", 1, 4) 
    print ("{}{0:27}{0:39}{0:51}\n{}".format("Word", "Occurence", "Avg. Score", "Std. Dev.", "="*51)) 

    if menu == 1:  
     dic = OrderedDict(sorted(word_average_dict.items(), key=lambda x:x[1], reverse=False)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key])) 
    elif menu == 2: 
     dic = OrderedDict(sorted(word_average_dict.items(), key=lambda x:x[1], reverse=True)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key])) 
    elif menu == 3: 
     dic = OrderedDict(sorted(std_dev_dict.items(), key=lambda x:x[1], reverse=False)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key])) 
    elif menu == 4: 
     dic = OrderedDict(sorted(std_dev_dict.items(), key=lambda x:x[1], reverse=True)) 
     for key in dic: 
      print ("{}{0:27}{0:39:.4f}{0:51:.4f}".format(key, count_dict[key], avg_scores_dict[key], std_dev_dict[key])) 
    return None 
+0

は単純なタイプミスでした。それを固定した。 –

+0

@ryandoucette恐ろしい!この回答がうまくいったら、この回答を受け入れてください。ありがとう! :) – Edward

関連する問題