2015-07-09 2 views
0
viewclass= input("choose a class number and either alphabetically, average or highest?")#type in what you want to select 




if viewclass=='1 average':#variable inputted 
    with open("1.txt") as f:#open text file 
     d = {} 

    for line in f: 
     column = line.split(":")#split name and score 
     names = column[0]#names in column 
     scores = int(column[1].strip()) 

     count = 0 
     while count < 3: 
      d.setdefault(names, []).append(scores)#name and scores added to end of list 
      count = count + 1 
    for names, v in sorted(d.items()):#sorted 
     average = (sum(v)/len(v)) 
     print(names,average)#average score printed 
    averages=[] 
    averages.append(average)  


elif viewclass=='2 average': 
    with open("2.txt") as f: 
     d = {} 

    for line in f: 
     column = line.split(":") 
     names = column[0] 
     scores = int(column[1].strip()) 

     count = 0 
     while count < 3: 
      d.setdefault(names, []).append(scores) 
      count = count + 1 
    for names, v in sorted(d.items()): 
     average = (sum(v)/len(v)) 
     print(names,average) 
    averages=[] 
    averages.append(average) 

elif viewclass=='3 average': 
    with open("3.txt") as f: 
     d = {} 

    for line in f: 
     column = line.split(":") 
     names = column[0] 
     scores = int(column[1].strip()) 

     count = 0 
     while count < 3: 
      d.setdefault(names, []).append(scores) 
      count = count + 1 
    for names, v in sorted(d.items()): 
     average = (sum(v)/len(v)) 
     print(names,average) 
    averages=[] 
    averages.append(average) 

моих код работают, но когда для этого, когда я запускаю его сигнализировать файл, он работает, но когда я выбираю его, я получаю эту ошибкуСортировка ошибок для среднего балла

choose a class number and either alphabetically, average or highest?1 average 
Traceback (most recent call last): 
    File "C:/Users//Documents/New folder (2)/14343 - Copy.py", line 10, in <module> 
    for line in f: 
ValueError: I/O operation on closed file. 

ответ

1
with open("3.txt") as f: 
    d = {} 

Вы заканчиваете с функцией путем создания словаря

Когда с закончена файл открыт в closed

It Shou Л.Д. быть как следующий

with open("2.txt") as f: 
    d = {} 

    for line in f: 
     column = line.split(":") 
     names = column[0] 
     scores = int(column[1].strip()) 

     count = 0 
     while count < 3: 
      d.setdefault(names, []).append(scores) 
      count = count + 1 

with знают как context manager они открывают файл, когда функция запускается и закрывает файл, когда их функция заканчивается

Вы сделали ту же самую ошибку много раз

Фактическая ошибка означает, что вы читаете содержимое закрытого файлового объекта

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