Traceback (most recent call last):
File "C:/python實驗/shiyansan.py", line 68, in <module>
number, name, class_,t = item.split(" ", 4)
ValueError: too many values to unpack (expected 4)
報錯怎么解決
202001 張三 1班 高數:89 英語:28 計算機:77
202002 李四 1班 高數:90 英語:84 計算機:88
202003 王五 1班 高數:70 英語:90 計算機:67
問題描述: 撰寫關于學生資訊的類,實體屬性包括:學號、姓名、性別,班級、n門課程成績,要求:
1) 利用檔案讀取,創建一個包含n個學生的班級;
檔案存盤格式以空格分隔例如: 202001 李四 1班 高數:89 英語:28 計算機:77
2) n門課程成績利用字典存盤,支持成績錄入、修改與洗掉;
3) 求解每個學生的n門成績的平均值,及其平均值排名。并按照成績平均成績排名正序輸出功能:學號、姓名、性別、年齡,n門課程成績,n門課程平均值,排名。
class Students:
def __int__(self,number,name,sex,age,class_,scores):
self.setNumber(number)
self.setName(name)
self.setSex(sex)
self.setAge(age)
self.setClass(class_)
self.setScores(scores)
self.setAverage()
def setNumber(self,number):
self.__number=number
def setName(self,name):
self.__name=name
def getName(self):
return self.__name
def setSex(self,sex):
seif.__sex=sex
def setAge(self, age):
self.__age=age
def setClass(self,class_):
self.__class=class_
def setScores(self,scores):
self.__scores=scores
def changeScores(self,subject,scores):
self.__scores[subject]=int(scores)
self.setAverage()
def delScores(self):
del self.__scores
def setAverage(self):
self.__average=sum(self.__scores.values())/len(self.__scores)
def getAverage(self):
return self.__average
def show(self):
print("學號: ",self.__number,"姓名: ",self.__name,"性別: ",self.__sex,"年齡: ",self.__age)
for key,item in self.__scores.items():
print("{0:>5}{1}{2:<5}".format(key, "=", item),end="")
print("%8.2f" %self.__average, end="\t")
def show():
s.sort(key=lambda i: i.getAverage())
for key, item in enumerate(s):
item.show()
print(len(s)-key)
print("\n")
def modify(name, subject, scores):
for i in s:
if i.getName() == name:
i.changeScores(subject, scores)
s = []
with open('C:\\python實驗\\text.txt', 'r',encoding='utf-8',errors='ignore') as f:
messages = f.readlines()
for item in messages:
number, name, class_,t = item.split(" ", 4)
t = list(t.split(" "))
scores = dict()
for i in t.items:
a, b, c = i.partition("=")
scores[a] = int(c)
stu= Students(number, name, sex, age, scores)
s.append(stu)
show()
modify("張三","英語",77)
show()
modify("李四","計算機",90)
show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225129.html
