Forum / Grundlagen des Programmierens / Hausübung 7 SS16

Hausübung 7 SS16

Hat schon irgendjemand das erste Beispiel der 7.Hü gelöst mit dem try except? wär dankbar über Lösungen ich krieg da immer Fehler raus beim Testfile

Lorenz ±0

Ich hab bsp1 so: aber es gibt mir beim testfile immer Fehler, obwohl ich die ganzen Error bekomme wenn ich es händisch teste

class LandHauptstadt:

def __init__(self):
    self.LandDict = {}
            
def read_File(self,filename):
    
    # Fuege Ausnahmebehandlung fuer Typ 1 hier ein:
    try:
        infile = open(filename,"r")
        
        for line in infile:
            liste = line.split(";")
            
            # Fuege Ausnahmebehandlung fuer Typ 2 hier ein:
            try:
                land = liste[0].strip()
                stadt = liste[1].split(",")[0].strip()
            
                self.LandDict[land] = stadt
            except IndexError:
                print "IndexError"
                
            
    except IOError:
        print "IOError"
        
    else:
        infile.close()
               

def __str__(self):
    Ausgabe = ""
    
    # Fuege Ausnahmebehandlung fuer Typ 4 hier ein:
    for i in self.LandDict.keys():
        try:
            Ausgabe +="Hauptstadt von "+i+" ist "+self.LandDict[i]+",\n"
        except TypeError:
            Ausgabe+="TypeError"
        
    return Ausgabe
        
     
def entferne_Land(self,oldLand):

    # Fuege Ausnahmebehandlung fuer Typ 3 hier ein:
    try:
        del self.LandDict[oldLand]
    except KeyError:
        print "KeyError"
    else:
        return True

    

if name == 'main':

# Bitte Testen Sie Ihren Code ausschliesslich in diesem Abschnitt!

myDict = LandHauptstadt() 
#myDict.read_File("HU_land_hauptstadt.csv")
#print myDict
#myDict.entferne_Land("Oesterreich")
Lorenz ±0

und bsp2: class Kreis:

def __init__(self, Radius, xCenter, yCenter):
    """
    >>> print Kreis(3,1.2,1.33).Radius
    3
    """
    self.Radius=Radius
    self.xCenter=xCenter
    self.yCenter=yCenter
    
    
def BoundingBox(self):
    """
    >>> print  Kreis(3,1.2,1.33).BoundingBox()
    [-1.8, 4.33, 4.2, -1.67]
    """
    BB=[]
    xlo=self.xCenter-self.Radius
    ylo=self.yCenter+self.Radius
    xru=self.xCenter+self.Radius
    yru=self.yCenter-self.Radius
    BB.append(xlo)
    BB.append(ylo)
    BB.append(xru)
    BB.append(yru)
    return BB
    

if name=='main': #myKreis = Kreis(3,1.2,1.33) #print myKreis.BoundingBox() import doctest doctest.testmod(verbose=True)

Jan +4

Meine Lösungen:

Serdar ±0

Hey Jan danke erstmal für deine Lösung. Ich habe leider ein fehler weißt du vielleicht wo mein fehler liegen könnte ?

Sabal ±0

danke für die Lösung!

Jan ±0

Schick mir bitte deine Funktion bzw. Methode read_File

Serdar ±0

Im Anhang findest du sie, ist eig deine Lösung aber iwas scheint falsch zu sein

Jan ±0

Hast du die aktuelle Version des Testfiles heruntergeladen? Denn bei mir gibt das Testskript "OK" aus..

Serdar ±0

Ich habe das runtergeladen was jetzt im Tuwel ist. Im Anhang habe ich noch mein Hauptprogramm, das müsste aber auch stimmen

Serdar ±0

Ok das Problem hab ich beseitigt jetzt steht da ->AttributeError: LandHauptstadt instance has no attribute 'entferne_Land'

Jan ±0

Jetzt glaub ich hab ich deinen Fehler gefunden! Du hast bei deinen Funktionen def str und def entferne_Land einen indented block hinzugefügt der nicht dazugehört.. Die Funktionen sollten alle auf gleicher Höhe sein!

Serdar ±0

Die Funktion ist doch auf gleicher höhe oder nicht ? Siehe im Anhang

Ákos ±0

Servus! Könnte Jemand mir vielleicht helfen? Wenn mein Programm "Run" bekomme ich immer ein solches Fehler: "UnboundLocalError: local variable 'infile' referenced before assignment" (Details im Anhang) Ich konnte nicht finden, warum es vorkommt...

Patrick +1

@ Ákos In line 22. "return" statt "print". Bei print läuft das Programm weiter, was es ja nicht soll, wenn ein Fehler auftritt.

@Serdar Alle Funktionen gehören auf die selbe Stufe innerhalb der Klasse. def str und def entferne_Land sind einen Schritt weiter eingerückt als def read_File.

Mansour ±0

hat jemand sein Lösung getestet und kann es bitte mitteilen ,Danke ... Beim Run , mein Test wurde immer als "failed" gezählt