2017-08-16 1 views
0

Wie kann ich <zip object at 0x03B1C3C8> in meinem ProgrammWie drucke ich die Paarwerte in meinem Array aus

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

Antwort

0

Gerade list() wie unten verwenden beheben:

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

Hinweis: Sie brauchen nicht list() anzuwenden, wenn Sie nur das zurückgegebene zip Objekt durchlaufen müssen.

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

Dank Liste() hat mir sehr geholfen! – Ibrahim

0

Ich würde sagen, Sie total zip vergessen:

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) wird ein Tupel erstellen, die Sie dann

0

Von der Python-Dokumentation drucken können, wenn Sie zip verwenden es gibt einen Iterator von Tupeln (das Python definiert mit diesen '()').

Es wird wahrscheinlich am einfachsten nur iterieren Ihre Noten wie so Tupel:

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

Dies gibt Ihnen:

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

Aber ich hätte lieber Student.getGrade zurückkehren nur die Liste der Noten . Dann haben Sie eine andere Funktion getReport, die die Stunden sowie die Noten druckt.

+0

Eine gute Lösung, aber meine Aufgabe sagt, ich muss es mit 'print (stud1.getGrade())' tun – Ibrahim

Verwandte Themen