因此,我试图用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()
您正在引用上次在while循环中设置的局部变量fname、lname和idNo。所需的变量分别存储在Student类的每个实例中。请尝试以下for循环:
相关问题 更多 >
编程相关推荐