2016-03-10 2 views
0

Я работаю над программой, которая отображает данные из различных текстовых файлов и отображает их различными способами. Я не очень хорошо знаком с Python и, вероятно, в моем коде есть много ошибок. Когда я запускаю код, я получаю ошибку unexepected EOF while parsing. Кто-нибудь знает, что здесь не так?неожиданный EOF при разборе

from time import sleep 
import sys 

for i in range(21): 
    sys.stdout.write('\r') 
    sys.stdout.write("[%-20s] %d%%" % ('='*i, 5*i)) 
    sys.stdout.flush() 
    sleep(0.25) 

print('\nWelcome to The Arithmatic Quiz: Teacher Eddition.') 

UserName = input('Please input your user name and press enter.') 

if UserName == 'MrSmith': 
    print ('Please proceed.') 

else: 
    quit() 

Password = input('Please input your password and press enter.') 

if Password == 'Maths': 
    print ('Welcome Mr Smith.') 

else: 
    quit() 

import csv 
import operator 

classdata = 0 
while classdata == 0: 

    Class = input ('Which class do you want the data for?') 

    Display = input ('How do you want the data t be sorted? Alphabetically  (A), on highest score for the first try (H1), on highest score for the second try (H2), on highest score for the third try (H3), or average score (Avg)?') 

if Class == '1': 
    Class_1 = open('class_1.txt','r') 

    csv1 = csv.reader(Class_1,delimiter=',') 

    if Display == 'A': 
     sortA = sorted(csv1,key=operator.itemgetter(1)) 

     for eachline in sortA: 
      print (eachline) 

    if Display == 'H1': 
     sortB = sorted(csv1,key=operator.itemgetter(2)) 

     for eachline in sortB: 
      print (eachline) 

    if Display == 'H12': 
     sortB = sorted(csv1,key=operator.itemgetter(3)) 

     for eachline in sortB: 
      print (eachline) 

    if Display == 'H3': 
     sortB = sorted(csv1,key=operator.itemgetter(4)) 

     for eachline in sortB: 
      print (eachline) 

    elif Display == 'Avg': 
     sortC = sorted(csv1,key=operator.itemgetter(5)) 

     import csv 
     from collections import Counter 

     def average_column (csv_filepath): 
      row_totals = Counter() 
      with open('Class_1',"rb") as f: 
       reader = csv.reader(f) 
       column_count = 0.0 
       for column in reader: 
        for row_idx, row_value in enumerate(column): 
         try: 
          n = float(row_value) 
          row_totals(row_idx) += n 
          column_count += 1.0 
          column_count -= 1.0 
          row_indexes = row_totals.keys() 
          row_indexes.sort() 
          averages = (row_totals(idx)/column_count for idx in row_indexes) 
          print(averages) 

Если это поможет, я бегу на Python 3.4.3

+0

Не могли бы вы опубликовать, по крайней мере часть вас входного файла (ов). Кроме того, вы публикуете довольно много кода, не могли бы вы быть более конкретным, отлаживали ли вы, и знаете, где он не работает? Чем больше информации вы предоставляете, тем более вероятно, что вы получите хороший ответ. Благодарю. – lrnzcig

+0

Добро пожаловать в Stackoverflow! Почему вы думаете, что вы не используете функцию 'input'? И постарайтесь сделать свой код настолько маленьким, насколько это возможно (т. Е. Попытаться сделать минимальный пример, когда эта проблема воспроизводима). – Ilya

+0

Ошибка возникает непосредственно по незакрытой инструкции Try/expect. –

ответ

0

Вы пропускаете except часть вашего цикла try/except в конце кода. Если у вас есть заявление try, вы также должны иметь оператор except, если вы этого не сделаете, он даст вам ошибку, которую вы видите. Вот часть кода, который отсутствует except заявление:

try: 
    n = float(row_value) 
    row_totals(row_idx) += n 
    column_count += 1.0 
    column_count -= 1.0 
    row_indexes = row_totals.keys() 
    row_indexes.sort() 
    averages = (row_totals(idx)/column_count for idx in row_indexes) 
    print(averages) 
except: # here is the except statement you were missing 
    pass 
+0

Спасибо @MarkyPython, это исправлено. – Alan

+0

Рад, что я мог бы помочь! – MarkyPython

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