Python 此for循环仅显示学生记录的最后一个条目

Python 此for循环仅显示学生记录的最后一个条目,python,python-3.x,Python,Python 3.x,当我在student类中创建多个实例时 显示方法仅显示最后一个条目 这是我的密码 class student: def __init__(self): self.usn= None self.name=None self.branch=None self.phno=None def read(self): self.usn=input("enter the usn: ") self.

当我在student类中创建多个实例时 显示方法仅显示最后一个条目 这是我的密码

class student:
    def __init__(self):
        self.usn= None
        self.name=None
        self.branch=None
        self.phno=None
    def read(self):
        self.usn=input("enter the  usn: ")
        self.name=input("enter the name: ")
        self.branch=input("enter the branch: ")
        self.phno=input("enter the phno: ")

    def display(self):
        print(f'\n{self.usn}  {self.name}  {self.branch}   {self.phno}\n')
print(f'\nusn %name branch phno\n')
n=int(input("enter number of students : "))
for i in range(n):
    emp=student()
    emp.read()
print("\nusn   name branch phno\n")

for i  in student():

    emp[i].display()
read方法运行良好,我能够输入许多学生记录 但是我对只打印最后一个学生记录的显示方法有一个问题

因此,我尝试迭代循环,但最终出现了一个错误

for i  in student():
    emp[i].display()
TypeError:“int”对象不可编辑

那么如何迭代来检索所有对象呢
并显示所有输入的学生记录

在for循环中使用相同的变量。在每次迭代中,最后输入的学生将被删除并替换为新数据。您应该使用一个数组(或任何其他适合您的用例的数据结构),并在每次迭代时在数组中添加一个新的Student

此代码应适用于:

arr=list()
对于范围(n)中的i:
emp=学生()
emp.read()
arr.append(emp)

您需要一个结构来保存类的所有对象,例如列表。 只需使用
emp=[]
即可创建空列表。 然后可以使用方法
append()
将对象附加到列表中。 所以你有:

emp=[]声明空列表
对于范围(n)中的i:
emp.append(student())
emp[i].read()
然后您可以直接在列表上迭代:

对于emp中的x:
x、 显示()

在每次迭代中,
x
将是列表中的下一个对象

根据其他用户给出的答案,我得到了想要的正确输出 这是密码

    class student:
    def __init__(self):
        self.usn= None
        self.name=None
        self.branch=None
        self.phno=None
    def read(self):
        self.usn=input("enter the  usn: ")
        self.name=input("enter the name: ")
        self.branch=input("enter the branch: ")
        self.phno=input("enter the phno: ")

    def display(self):
        print(f'\n{self.usn}  {self.name}  {self.branch}   {self.phno}\n')
n=int(input("enter number of students : "))
arr = list()
for i in range(n):
    emp=student()
    emp.read()
    arr.append(emp)
for x in arr:
    x.display()

所有学生的详细信息都输入到相同的变量中。当您输入第二个学生的详细信息时,它将替换第一个学生的详细信息。最后,剩下的是您最后输入的内容