【问题标题】:How do I print out the pair values in my array如何打印出数组中的对值
【发布时间】:2017-08-16 22:41:44
【问题描述】:

如何在我的程序中修复<zip object at 0x03B1C3C8>

class Student(object):
    def __init__(self, name, surname, grade, hours):
        self.name = name
        self.surname = surname
        self.grade = grade
        self.hours = hours

    def getName(self):
        return '{}'.format(self.name)

    def getSurname(self):
        return '{}'.format(self.surname)

    def getGrade(self):
        return zip(self.grade, self.hours)

    def getHours(self):
        return '{}'.format(self.hours)

    def getQPoints(self):
        pass

stud1 = Student("John","Brown",["A","B","A"],["15.0","25.0","20.0"])
stud2 = Student("Mary","Watson","B","20")

print (stud1.getGrade())
print (stud1.getHours())

【问题讨论】:

  • return list(zip(self.grade, self.hours))

标签: python python-3.x


【解决方案1】:

只需使用list(),如下所示:

def getGrade(self):
    return list(zip(self.grade, self.hours))

注意:如果您只需要循环返回的zip 对象,则无需应用list()。

>>> for i, j in stud1.getGrade():
...     print(i, j)
...
('A', '15.0')
('B', '25.0')
('A', '20.0')

【讨论】:

  • Thanks list() 帮了大忙!
【解决方案2】:

我会说你完全忘记了 zip:

class Student(object):
    def __init__(self, name, surname, grade, hours):
        self.name = name
        self.surname = surname
        self.grade = grade
        self.hours = hours

    def getName(self):
        return '{}'.format(self.name)

    def getSurname(self):
        return '{}'.format(self.surname)

    def getGrade(self):
        return (self.grade, self.hours)

    def getHours(self):
        return '{}'.format(self.hours)

    def getQPoints(self):
        pass

stud1 = Student("John","Brown",["A","B","A"],["15.0","25.0","20.0"])
stud2 = Student("Mary","Watson","B","20")

print (stud1.getGrade())
print (stud1.getHours())

return (self.grade, self.hours) 将创建一个可以打印的元组

【讨论】:

    【解决方案3】:

    根据 python 文档,当您使用 zip 时,它会返回一个元组迭代器(python 使用这些 '()' 定义)。

    像这样迭代你的成绩元组可能是最简单的:

    for grade in stud1.getGrades():
        print("Grade: " + grade[0] + " Hours studied: " + grade[1])
    

    这会给你:

    Grade: A Hours studied: 15.0
    Grade: B Hours studied: 25.0
    Grade: A Hours studied: 20.0
    

    但我宁愿让Student.getGrade 只返回成绩列表。然后有另一个函数getReport 打印小时数和成绩。

    【讨论】:

    • 一个很好的解决方案,但我的任务说我必须使用print (stud1.getGrade())
    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2015-12-24
    相关资源
    最近更新 更多