如何格式化此数组中的列表元素?

How can I format list elements from this array?

我想指出,这是一个更大脚本的一部分,但为了简单起见,我已经隔离了必要的组件。

我正在使用 class Student 编写一个脚本来存储学生姓名及其相关成绩(以及其他内容)。用户将被要求提供学生姓名,然后是他们要添加的成绩数。然后要求他们输入成绩(无论他们在 'number of grades' 中指定了多少次)。

输入完成后,数据存储在数组中,如下所示:

[{'grades': [99, 88, 77], 'name': 'John Doe'}]

然后以下列格式打印新学生数据:

STUDENT NAME:  John Doe
GRADES:  [99, 88, 77]

如何格式化和打印没有括号的 GRADES: [99, 88, 77]?下面的代码。

students_all = []


class Student:
    def __init__(self, name, grades):
        self._name = name
        self._grades = grades

    def __str__(self):
        return "STUDENT NAME:  {}\nGRADES:  {}".format(self._name, self._grades)
                                                                ###FORMAT HERE^?###

def add_student():
    new_student = {}
    new_student["grades"] = []

    new_student["name"] = input("\nEnter student name:  ")
    while True:
        try:
            num_grades = int(input("Number of Grades:    "))
            break
        except ValueError:
            print("Enter a valid number!")

    print()
    while True:
        try:
            for i in range(0, num_grades):
                grades = int(input("Enter Grade: "))
                new_student["grades"].append(grades)
            break
        except ValueError:
            print("Enter a valid number!")

    students_all.append(new_student)
    return new_student

newstudent = Student(**add_student())
print(newstudent)

使用str.join():

"STUDENT NAME:  {}\nGRADES:  {}".format(self._name, ", ".join(map(str, self._grades)))

此代码还将整数转换为字符串。

您可以使用 str.join(iterable) 函数从可迭代对象创建字符串。

你的代码应该是这样的:

def __str__(self):
        return "STUDENT NAME:  {}\nGRADES:  {}".format(self._name, ', '.join(self._grades))

您可以使用以下代码:

def __str__(self):
            return "STUDENT NAME:  {}\nGRADES:  {}".format(self._name, ', '.join(str(grade) for grade in self._grades))