0

首先,我不知道这是否可能,或者他是否有正确的解决方法,因为我还在编程入门,但我试图从 .txt 文件中提取的数据在一个类中构建一个字典。但是教授希望我们从文件中提取数据的方法是使用字节计数方法。这是他提出的问题的第一部分。我不打算发布整个事情,因为我确信我可以在这个驼峰之后解决剩下的问题。输入数据 对于每个学生,将从文件中读取以下数据: 每行(记录)将包含 • 学生 ID(5 个字节) • 学生姓名(30 个字节) • 测试 1(3 个字节) • 测试 2(3 个字节) ) • 测试 3(3 个字节)

我已经尝试在init中构建它,并在正常功能下进行。问题是如果我确实让它在类中构建,我无法让它正常工作以拉到主函数

class Grades:

    count = 0
    avg = 0
    studentDict = {}


    def __init__(self, userId, name, test1, test2, test3):
        self.userId = userId
        self.name = name
        self.test1 = test1
        self.test2 = test2
        self.test3 = test3

        openFile = open('Students.txt', 'r')



        for lines in openFile:
            userId = lines[:5].strip(' ')

            name = lines[5:35].strip(' ')

            test1 = lines[35:38].strip(' ')

            test2 = lines[38:41].strip(' ')

            test3 = lines[41:].strip(' ')

        openFile.close


    def setUserId(self, userId):
        self.userId = userId

    def getUserId(self):
        return self.userId

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

    def setTest1(self, test1):
        self.test1 = test1

    def getTest1(self):
        return self.test1

    def setTest2(self, test2):
        self.test2 = test2

    def getTest2(self):
        return self.test2

    def setTest3(self, test3):
        self.test3 = test3

    def getTest3(self):
        return self.test3

myGrades = Grades()

print(myGrades.getUserId())

这就是我所拥有的,因为我试图让它在我继续之前打印一些结果但是这里给了我这个错误代码,TypeError: init () missing 5 required positional arguments: 'userId', 'name' 、“test1”、“test2”和“test3”

我希望它在字典中打印出来

4

1 回答 1

0

调用时myGrades = Grades(),您的类构造函数中缺少 5 个参数,因为您声明它如下:def __init__(self, userId, name, test1, test2, test3):
我认为您应该不带参数声明它,并在读取文件后影响类变量。它应该给出类似的东西:

def __init__(self):

    openFile = open('Students.txt', 'r')

    for lines in openFile:
        userId = lines[:5].strip(' ')

        name = lines[5:35].strip(' ')

        test1 = lines[35:38].strip(' ')

        test2 = lines[38:41].strip(' ')

        test3 = lines[41:].strip(' ')

    openFile.close()

    self.userId = userId
    self.name = name
    self.test1 = test1
    self.test2 = test2
    self.test3 = test3

还要小心,你在调用 . 之后缺少两个括号close

于 2019-07-27T17:11:43.717 回答