如何在循环期间分配新变量?

时间:2019-02-25 05:02:55

标签: python python-3.x

我不是说英语的人,所以如果我犯了一些英语错误,请原谅我。

我目前正在研究Python程序,并停留在这里。 这就是我的代码:

enter image description here

您可能会猜到,是的,我是初学者。

我试图给新变量student [i]赋值,但是却给了我一个错误。

编码使其正常工作的正确方法是什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在屏幕上,看起来您正在向Student变量分配student实例,因此它不支持项目分配student[i]

要修复此问题,您可以将其更改为列表并附加到结果中。

students = []
i = 0

while i < 4:
   student = Studen(namelist[i], mathlist[i])
   students.append(student)
   i += 1

print(students)
for student in students:
   print(student.name_and_score())

答案 1 :(得分:0)

看起来您定义了类但从未实例化它。看起来您正在尝试将这些Student对象添加到数组中,因此首先我们在声明mathlist后添加一个空数组:

students = []

然后,在继续之前,我想澄清一些问题。您似乎对变量的作用域感到困惑。 Python在范围内定义符号:简而言之,如果您在某个块中声明某些内容,则该代码将在该块以及该块内部的任何块中可见,这意味着如果您在for循环内定义了一个变量,在外面看不到。这并不意味着您对已经声明的符号所做的更改在修改它们的代码块之外不成立,这可能就是为什么您指向创建列表然后向其中添加元素的原因:列表在循环外部声明,因此如果您可以从循环内部向其中添加Student对象,也可以在外部访问它们。

也就是说,在第一个循环中只需替换

student[i]=Students(namelist[i], mathlist[i])

使用

students.add(Student(namelist[i], mathlist[i])

,您将获得所需的输出,将Studenti作为参数的namelist[i]对象放在数组位置mathlist[i]

有关重命名变量的说明:我将您的Students类重命名为Student,因为一个类通常定义了一个单数实体,因此如果执行peter = Student('Peter', 5),我可以说peterStudent。我将student列表重命名为students,因为列表是Python中多个对象的集合,因此在这种情况下最好用复数名称定义。