镇上可迭代练习的老师

问题描述 投票:0回答:0

https://www.codecademy.com/courses/learn-intermediate-python-3/projects/new-teacher-in-town-project

大家好,我在这个 codecademy 自学中卡在了第三步。我对说明试图告诉我做什么感到困惑。我卡在第 3 步,其中也提供了提示。

镇上的新老师 你是松谷小学的新老师!

本项目将帮助您练习并进一步掌握从迭代器和迭代器课程中学到的材料,方法是利用学到的信息来建立和组织新教室和学生名册。

  1. 今天是夏天的第一天,在接下来的几个月里,你要为即将入学的小学生做准备!

首先看roster.py中的代码。您已获得班上 10 个孩子的学生花名册。每个孩子的记录包含姓名、年龄、身高(英寸)、最喜欢的课堂科目和最喜欢的动物,以帮助您更好地了解他们。

我们已经了解到,可迭代对象只是一个可以遍历的 Python 对象。这个字典列表是您的第一个可迭代对象。导航到 script.py 并从 roster.py 导入 student_roster 列表。为 student_roster 列表创建一个迭代器,并使用 next() 打印出每个学生的信息。

2.

现在我们对班上的学生有了更多的了解,让我们开始组织班级吧!首先,我们应该创建一个自定义类,让我们能够管理我们的课堂和学生。

您已获得一个名为 classroom_organizer.py 的文件。开始定义您的自定义 ClassroomOrganizer 类。

首先,我们应该从 roster.py 文件中导入 student_roster 列表,以便我们可以在自定义课程中使用它。我们稍后需要的另一个模块是 itertools 模块。现在让我们将它们都导入到 classroom_organizer.py 文件中。

3。 接下来,我们要创建一个简单的方法来运行早间点名,即按名字字母顺序对所有学生进行排序。当您迭代 ClassroomOrganizer 对象时,它应该在每次 next() 调用或 for 循环迭代时一次返回每个学生的名字。

为我们的 ClassroomOrganizer 类定义迭代器协议来实现这一点。定义后,在 ClassroomOrganizer 对象上使用 next() 调用或 for 循环来打印出点名时的下一个学生。

为步骤 3 提供的提示:应该定义一个类成员,用于存储已返回 self.stored_names 中哪个学生的索引。

from roster import student_roster
import itertools

# Import modules above this line
class ClassroomOrganizer:
  def __init__(self):
    self.sorted_names = self._sort_alphabetically(student_roster)

  def _sort_alphabetically(self,students):
    names = []
    for student_info in students:
      name = student_info['name']
      names.append(name)
    return sorted(names)

  def get_students_with_subject(self, subject):
    selected_students = []
    for student in student_roster:
      if student['favorite_subject'] == subject:
        selected_students.append((student['name'], subject))
    return selected_students
  
  def __iter__(self):
    return self.stored_names
  
  def __next__():
    return self

我的代码可能有错误。

classroom_roster_object = ClassroomOrganizer()
classroom_iterated_object = iter(classroom_roster_object)
print(classroom_iterated_object)

我认为

self.stored_names
需要放置在某个地方或创建。

python iterable
© www.soinside.com 2019 - 2024. All rights reserved.