2016-04-25 3 views
0

Я не могу понять, почему я получаю синтаксическую ошибку для этой функции, которую я написал. Это происходит при первом elif. Когда я пытаюсь запустить его, ошибка в IDLE только говорит «недопустимый синтаксис», а затем выделяет «elif».Функция if/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 по 10 знаков.

Любая помощь очень ценится!

+0

Это опечатка. Вы не закрываете последнюю скобку в заявлении печати по строке 9. – 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 Awesome! Если этот ответ сработал, примите этот ответ. Благодаря! :) – Edward

Смежные вопросы