Okay, also anders:
Ich muss eine Aufgabe bearbeiten. Wie die Aufgabe lautet
will ich gar nicht erläutern, denn ich will dafür keine kompakten/sinnvollen/effizienten codes von Forenmitglieder verfasst und geschildert bekommen. Ich muss bei meiner Aufgabe jedoch die genannte Klasse "Graph" (die genau so aussieht, wie ich sie als code gepostet habe) verwenden. Über die Richtigkeit und Funktionalität des Codes kann man diskutieren/streiten/etc. sobald er jedoch in manchen Fällen verwendbar ist, sollte ich ihn wohl in meiner Aufgabe nutzen.
Mir ist halbwegs klar, was der code macht, allerdings fehlen mir zwei wichtige Dinge (die man bei Testen von Algorithmen meist brauch, oder nicht?!) nämlich einmal einen input und dann einen Befehl, der den bearbeiteten Input auch auswirft.
Und nun nehme ich mal deine Antwort für bare Münze:
In dieser Form muss das dort eingegeben werden
Beim zweiten Teil einfach: print
Heißt für mich, ich setze ein Wort namens "dieser" (ohne "") an eine Stelle, die in meinem code "dort" heißt. leider kann ich kein "dort" finden. Also setze ich es einfach mal in eine leere eckige Klammer am Anfang.
"print" (ohne "") beim "zweiten teil" (also vielleicht im zweiten "def" block?) einzusetzen mache ich dann auch mal..
kommt das bei raus:
Code: Alles auswählen
import copy
from operator import itemgetter
class Graph:
def __init__(self):
self.knotenListe = [dieser]
self.kantenListe = [dieser]
def addvertex(self, v1):
if v1 not in self.knotenListe:
self.knotenListe.append(v1)
print
def addedge(self, v1, v2, c):
if not v1 == v2:
self.addvertex(v1)
self.addvertex(v2)
for i in self.kantenListe:
a1 = i[0][0]
a2 = i[0][1]
if a1 == v1 and a2 == v2:
self.kantenListe.remove(i)
self.kantenListe.append(((v1,v2),c))
def getvertices(self):
return copy.copy(self.knotenListe)
def getedges(self):
kanten = copy.copy(self.kantenListe)
return sorted(kanten, key=itemgetter(1))
def cost(self, v1, v2):
ret = None
for i in self.kantenListe:
a1 = i[0][0]
a2 = i[0][1]
if a1 == v1 and a2 == v2:
ret = i[1]
return ret
Ausgabe: nichts! (also nicht in worten sondern kein inhalt)
Ich könnte auch so etwas machen:
Code: Alles auswählen
import copy
from operator import itemgetter
class Graph:
def __init__(self):
self.knotenListe = []
self.kantenListe = []
def addvertex(self, v1):
if v1 not in self.knotenListe:
self.knotenListe.append(v1)
print
def addedge(self, v1, v2, c):
if not v1 == v2:
self.addvertex(v1)
self.addvertex(v2)
for i in self.kantenListe:
a1 = i[0][0]
a2 = i[0][1]
if a1 == v1 and a2 == v2:
self.kantenListe.remove(i)
self.kantenListe.append(((v1,v2),c))
def getvertices(self):
return copy.copy(self.knotenListe)
def getedges(self):
kanten = copy.copy(self.kantenListe)
return sorted(kanten, key=itemgetter(1))
def cost(self, v1, v2):
ret = None
for i in self.kantenListe:
a1 = i[0][0]
a2 = i[0][1]
if a1 == v1 and a2 == v2:
ret = i[1]
return ret
print "juhu, ich bin eine Ausgabe, aber leider beziehe ich mich nicht auf den vorherigen code!"
Ausgabe: juhu, ich bin eine Ausgabe, aber leider beziehe ich mich nicht auf den vorherigen code!
Immerhin habe ich dadurch eine Ausgabe. Das ist etwas, womit ich arbeiten kann, was ich verstehen kann. Aber leider wird keiner der vorherigen Definitionen für die Ausgabe verwendet.
Und ich greife nochmal Dejes Worte auf:
Aber klar doch. Du könntest die Klasse einfach nutzen, ein paar Graphen einfügen und sie dann ausgeben.
Wo wird der Graph eingefügt und in welcher Form und wie werden sie dann ausgegeben?