2015-07-09 49 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

它守LD像下面這樣

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他們打開該文件的功能啓動時,關閉文件時,其功能完成

你已經做了同樣的錯誤很多次

實際錯誤提示您正在閱讀封閉文件對象的內容