2017-08-16 39 views
0

如何解決<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()) 
+0

'return list(zip(self.grade,self.hours))' – dawg

回答

0

只要使用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') 
+0

Thanks list()幫了很多! – Ibrahim

0

我說你渾然忘記郵編:

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)將創建一個元組,你可以再打印

0

從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,打印小時以及等級。

+0

一個很好的解決方案,但我的任務說我必須用'print(stud1.getGrade())' – Ibrahim