组合各种对象并相应地打印出来的最佳方法是什么?

2024-10-01 22:39:23 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我试图用Python编写一个程序,构建一个学生列表,并最终将其打印到屏幕上。对于用户选择添加的每个学生,输入名字、姓氏和ID号

我的问题是,尽管我试图将每个新创建的人员附加到名为studentList[]的列表中,但当我在最后打印出该列表时,我会得到一个正确的student编号的输出,但都包含与我输入的最后一个student相同的信息

例如,如果我添加学生“Johnny Tsunami 4”、“Billy Bobblie 23”、“Biggus Dickus 77”,我的输出将为:

Biggus Dickus 77
Biggus Dickus 77
Biggus Dickus 77

我不确定我的错误在哪里,无论是在列表附加机制中还是在用于打印对象的for循环中。非常感谢您的帮助

class Student(object):
    fname = ""
    lname= ""
    idNo = 0

    def __init__(self, firstname, lastname, idnumber):
        self.fname = firstname
        self.lname = lastname
        self.idNo = idnumber


def make_student(fname, lname, idNo):
  student = Student(fname, lname, idNo)
  return student


def main():
    maxStudCount = 0
    studentList = []
    studQuery = raw_input("Would you like to add a student? (Type 'Yes'     or 'No'): ")

    while studQuery == 'Yes' and maxStudCount < 10:
        fname = raw_input("Enter first name: ")
        lname = raw_input("Enter last name: ")
        idNo = raw_input("Enter ID No: ")

        person = make_student(fname, lname, idNo)
        studentList.append(person)

        maxStudCount = maxStudCount + 1
        studQuery = raw_input("Add another student? ('Yes' or 'No'): ")


    for item in studentList:
        print fname, lname, idNo


if __name__ =='__main__':
    main()

Tags: self列表inputrawmaindeffnamestudent
1条回答
网友
1楼 · 发布于 2024-10-01 22:39:23

您正在引用上次在while循环中设置的局部变量fname、lname和idNo。所需的变量分别存储在Student类的每个实例中。请尝试以下for循环:

for item in studentList:
     print item.fname, item.lname, item.idNo

相关问题 更多 >

    热门问题