Es gibt eine Leiter. Auf der 3. Sprosse der Leiter ist ein Affe, die 5. Sprosse hat ein Eichhörnchen, die 8. Sprosse hat eine Taube, die 15. Sprosse hat einen Adler, die 17. Sprosse hat einen anderen Affen.Ich lerne Objekte und Klassen in Python und ich habe versucht, ein Programm zu schreiben, das mich Druckfunktionen von Tieren auf verschiedenen Leitersprossen erfordert
Der Affe hat 2 Augen, 2 Hände, 2 Beine. Das Eichhörnchen hat 2 Augen, 4 Beine. Die Taube hat 2 Augen, 2 Flügel, 2 Beine und kann fliegen. Der Adler hat 2 Augen, 2 Flügel, 2 Beine und kann fliegen.
Ich habe den Code in zwei Module Leiter-Benutzer und ladderutils
ladder-user.py Um Tier Merkmale
from ladderutils import ladder
l = ladder()
print (l.animal_at_rung(3))
print (l.animal_at_rung(5))
print (l.animal_at_rung(8))
print (l.animal_at_rung(15))
print (l.animal_at_rung(10))
print (l.get_animals_count())
print (l.animal_at_rung(3) == l.animal_at_rung(17))
print (type(l.animal_at_rung(3)) == type(l.animal_at_rung(17)))
print (l.animal_at_rung(8).fly())
print (l.animal_at_rung(3).fly())
print (l.hop(3))
print (l.animal_at_rung(3))
print (l.animal_at_rung(4))
print (l.hop(4))
print (l.animal_at_rung(4))
ladderutils.py
class Animal(object):
features= {}
def __init__(self,eyes,legs,hands,wings,fly):
self.features['eyes'] = eyes
self.features['legs'] = legs
self.features['hands'] = hands
self.features['wings'] = wings
self.features['fly'] = fly
def fly(self):
return self.features['fly']
class Monkey(Animal):
def __init__(self,eyes,legs,hands):
self.name = 'Monkey'
Animal.__init__(self,eyes,legs,hands,0,False)
def __repr__(self):
temp = {}
for key in self.features:
if(self.features[key]>0 and self.features[key]!=False):
temp[key] = self.features[key]
return str({self.name:temp})
class Squirrel(Animal):
def __init__(self,eyes,legs):
self.name = 'Squirrel'
Animal.__init__(self,eyes,legs,0,0,False)
def __repr__(self):
temp = {}
for key in self.features:
if(self.features[key]>0 or self.features[key]!=False):
temp[key] = self.features[key]
return str({self.name:temp})
class Pigeon(Animal):
def __init__(self,eyes,legs,wings):
self.name = 'Pigeon'
Animal.__init__(self,eyes,legs,0,wings,True)
def __repr__(self):
print(self.features)
temp = {}
for key in self.features:
if(self.features[key]>0 or self.features[key]==True):
temp[key] = self.features[key]
return str({self.name:temp})
class Eagle(Animal):
def __init__(self,eyes,legs,wings):
self.name = 'Eagle'
Animal.__init__(self,eyes,legs,0,wings,True)
def __repr__(self):
temp = {}
for key in self.features:
if(self.features[key]!=0 and self.features[key]!=False):
temp[key] = self.features[key]
return str({self.name:temp})
class ladder:
ladder_pos = {}
def __init__(self):
self.ladder_pos['3'] = Monkey(2,2,2)
self.ladder_pos['5'] = Squirrel(2,4)
self.ladder_pos['8'] = Pigeon(2,2,2)
self.ladder_pos['15'] = Eagle(2,2,2)
self.ladder_pos['17'] = Monkey(2,2,2)
def animal_at_rung(self,pos):
if(str(pos) in self.ladder_pos):
return self.ladder_pos[str(pos)]
else:
return ('None')
def get_animals_count(self):
return len(self.ladder_pos)
def hop(self,pos):
if(str(pos+1) in self.ladder_pos):
return ("Not Empty")
else:
self.ladder_pos[str(pos+1)] = self.ladder_pos[str(pos)]
del self.ladder_pos[str(pos)]
return ('None')
Meine Ausgabe zu drucken geteilt ist
{'Monkey': {'legs': 2, 'wings': 2, 'fly': True, 'eyes': 2}}
{'Squirrel': {'legs': 2, 'wings': 2, 'fly': True, 'eyes': 2}}
{'hands': 0, 'legs': 2, 'fly': True, 'wings': 2, 'eyes': 2}
{'Piegon': {'legs': 2, 'wings': 2, 'fly': True, 'eyes': 2}}
{'Eagle': {'legs': 2, 'wings': 2, 'fly': True, 'eyes': 2}}
None
4
False
False
True
True
None
None
{'Monkey': {'legs': 2, 'wings': 2, 'fly': True, 'eyes': 2}}
Not Empty
{'Monkey': {'legs': 2, 'wings': 2, 'fly': True, 'eyes': 2}}
Aber soll ich
Monkey <eyes: 2, legs: 2, hands: 2>
Squirrel <eyes: 2, legs: 4>
Pigeon <fly: True, eyes: 2, legs: 2, wings: 2>
Eagle <fly: True, eyes: 2, legs: 2, wings: 2>
None
5
False
True
True
False
None
None
Monkey <eyes: 2, legs: 2, hands: 2>
Not empty
Monkey <eyes: 2, legs: 2, hands: 2>
Vielen Dank. Es hat mein Verständnis des Themas erhöht. –
@AjaySingh froh, ich könnte helfen. Und fühlen Sie sich frei, zu antworten und/oder die Antwort zu akzeptieren, wenn es Ihr Problem gelöst hat;) –