【问题标题】:How can I format list elements from this array?如何格式化此数组中的列表元素?
【发布时间】:2021-05-20 07:28:48
【问题描述】:

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

我正在编写一个脚本来使用class Student 存储学生姓名及其相关成绩(除其他外)。系统将要求用户输入学生姓名,然后是他们想要添加的成绩数。然后要求他们输入成绩(无论他们在“成绩数”中指定多少次)。

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

[{'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)

【问题讨论】:

    标签: python arrays list format


    【解决方案1】:

    使用 str.join():

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

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

    【讨论】:

    • 谢谢大家。遇到类似的错误,但我没有包括“地图”。非常感谢!
    【解决方案2】:

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

    你的代码应该是这样的:

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

    【讨论】:

      【解决方案3】:

      您可以使用以下代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 2018-12-18
        • 1970-01-01
        相关资源
        最近更新 更多