2017-03-24 3 views
-1

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() 
+3

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. –

+0

@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. –

+1

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. –

Antwort

0

aufschreiben: Der Fehler, den Sie sehen werden, ist:

TypeError: object() takes no parameters 

Wenn Sie object() takes no parameters sehen, bedeutet dies fast immer haben Sie den Konstruktor vermasselt.

Überprüfen Sie zunächst die Anzahl der Unterstriche. Stellen Sie sicher, dass sich zwei Unterstriche vorne und zwei hinten befinden.

Als nächstes stellen Sie sicher, dass Sie __init__ richtig geschrieben haben. Zum Beispiel, wenn Sie eine Funktion mit dem Namen __int__ deklarieren würden, würde es nicht tun, was Sie hoffen. :)

Verwandte Themen