Dies ist Teil meiner Hausaufgaben. Ich erstelle einen Schiffswerbesimulator. Die Werft besteht aus Containern (die eine verkettete Liste sind) und in diesen Containern sind Pakete (die auch eine Sammlung von verknüpften Listen sind). Die Container haben folgende Eigenschaften (Ziel, Gewichtlimit, ID) und Pakete haben (Name des Besitzers, Ziel, Gewicht, ID) Grundsätzlich, wenn ich ein neues Paket erstelle, wenn ein Container mit dem gleichen Ziel nicht existiert, dann brauche ich um einen neuen Container innerhalb der Werft zu schaffen und das Paket innerhalb des Containers zu platzieren; Ansonsten lege ich das Paket einfach in den entsprechenden Container. Die Container werden alphabetisch sortiert und die Pakete werden zuerst bestellt.Zugreifen auf Klasseneigenschaften und geschützte Klassen
Das ist was ich bisher habe. Ich habe den add_container() zum Testen geschrieben und es funktioniert, aber ich werde es nicht brauchen; Der eigentliche Job wird mit der Methode add() erledigt. Es funktioniert nicht und ich kann nicht herausfinden warum. Wenn einer von euch mir einen Grund oder einen Hinweis geben kann, würde ich es sehr schätzen.
from random import *
#Package class
class Package:
def __int__(self, name, destination, weight):
self._name = name
self._destination = destination
self._weight = weight
self._Next = None
self._ID = 0
#Container Class
class Container:
def __init__(self, dest):
self._dest = dest
self._Front = None
self._next = None
self._Maxweight = 2000
self._size = 0
self._Identification = 0
class Shipyard:
def __init__(self):
self._Front = None
self._size = 0
def size(self):
return self._size
def add_container(self, Destination):
container = Container(Destination)
if self._Front == None:
self._Front = container
self._size += 1
container._Identification = ((randint(1,1999)))
elif container._dest < self._Front._dest:
container._next = self._Front
self._Front = container
self._size += 1
container._Identification = ((randint(1, 1999)))
else:
current = self._Front
previous = None
while current is not None and current._dest < Destination:
previous = current
current = current._next
if current == None:
previous._next = container
self._size += 1
container._Identification = ((randint(1, 1999)))
else:
container._next = current
previous._next = container
self._size += 1
container._Identification = ((randint(1, 1999)))
def is_empty(self):
return self._size == 0
def container_exists(self, dest):
container_found = False
First_container = self._Front
if First_container == None:
pass
else:
while container_found != True:
previous = First_container
First_container = First_container._next
if previous._dest == dest:
container_found = True
return True
else:
return False
def printAll(self):
current = self._Front
while current != None:
print(current._dest)
current = current._next
def add(self, name, destination, weight):
package = Package(name, destination, weight)
if self.container_exists(destination) == True:
current = self._Front
while current._dest != destination:
current = current._next
if current._dest == destination:
weightlimit = current._Maxtwiehgt - weight
if weightlimit <= 0:
print("Container to ", destination, "is full!")
return
if current._Front == None:
current._Front = package
current._Maxtweihgt -= weight
current._size += 1
current._Front._ID = (randint(1,1999))
else:
currentPackage = current._Front
previousPackage = None
while currentPackage._Next!= None:
previousPackage = currentPackage
currentPackage = currentPackage._Next
if currentPackage._weight > weight > previousPackage:
package._Next = currentPackage
previousPackage._Next = package
package._ID = (randint(1,1999))
current._Maxweight -= weight
current._size += 1
else:
container = Container(destination)
if self._Front == None:
self._Front = container
self._Front._Front = package #new package
self._Front._Identification = (randint(1,1999)) #container ID
self._Front._Maxweight -= weight #container weight
self._Front._Front._ID = (randint(1,1999)) #package id
self._size += 1 #shipyard size
self._Front._size += 1 #container size
elif self._Front._dest > destination:
container._next = self._Front
self._Front = container
self._Front._Front = package # new package
self._Front._Identification = (randint(1, 1999)) # container ID
self._Front._Maxweight -= weight # container weight
self._Front._Front._ID = (randint(1, 1999)) # package id
self._size += 1 # shipyard size
self._Front._size += 1 # container size
else:
current = self._Front
previous = None
while current._next != None:
previous = current
current = current._next
if current._dest > destination > previous._dest:
container._next = current
previous._next = container
container._Front = package
container._Identification = (randint(1,1999))
container._Maxweight -= weight
container._Front._ID = (randint(1,1999))
self._size += 1
container._size += 1
def main():
myYard = Shipyard()
myYard.add("Jamie", "Atlanta", 120)
main()
Willkommen bei Stack Overflow! Sie können [die Tour] (http://stackoverflow.com/tour) zuerst und lernen [Wie man eine gute Frage stellt] (http://stackoverflow.com/help/how-to-ask) und erstellen Sie eine [ Minimal, vollständig und verifizierbar] (http://stackoverflow.com/help/mcve) Beispiel. Das erleichtert es uns, Ihnen zu helfen. –
@StephenRauch Es tut mir leid. Ich bin neu hier und bin ganz mit dem Problem beschäftigt. Meine Frage ist, dass ich wissen muss, warum das Programm abstürzt und sagt, dass die Paketklasse keine Argumente annimmt. –
Bitte, tut mir nicht leid. Es gibt viele Leute hier, die dir sehr gerne helfen wollen. Aber Sie müssen uns helfen, Ihnen zu helfen. Das bedeutet, dass Sie Ihr Problem etwas reduzieren müssen. Was oft passiert, wenn Sie dies tun, werden Sie die Antwort selbst finden. Und wenn Sie die Antwort nicht finden, dann wird ein abgespecktes Problem oft recht schnell beantwortet. –