2016-11-18 5 views
-1

Ich erstelle eine Schaltschrankklasse, die Lichtschalter ein- und ausschaltet. Ich habe herausgefunden, wie man den Code schreibt, aber wenn ich mein Objekt erstelle und es drucke, druckt es None. Ich bin nicht sicher, was falsch ist und warum es None anstelle der Rückgabebefragung druckt "Die folgenden Schalter sind eingeschaltet:" Auch wenn keiner der Schalter eingeschaltet ist, sollte die obige Zeichenfolge trotzdem gedruckt werden. Kann mir jemand helfen, herauszufinden, warum es gedruckt wird? Keine anstelle der Zeichenfolge, die ich drucken möchte?Klasse druckt keine

def SwitchBoard(LightSwitch): 
    '''This class will create a switch board for the user to use with n 
    number of switches that is entered by the user''' 

    def __init__(self, num_switches): 
     ''' 
     (SwitchBoard, int) -> NoneType 
     Given a value by the user, the function will create a switch board 
     ''' 
     # create an empty list to be the switchboard with the desired amount 
     # of switches 
     self._listsw = [] 
     # turn each switch to off 
     for index in range(num_switches): 
      self._listsw.append(0) 


    def __str__(self): 
     ''' 
     (SwitchBoard) -> str 
     Returns in a string the switches on the switchboard that are on 
     ''' 
     # create an empty string to store the on switches in 
     result = "" 
     for index in range(len(self._listsw)): 
      if(self._listsw[index] == 1): 
       result += str(index) 
       result += " " 
     return "The following switches are on: " + result 

def which_switch(self): 
    ''' 
    (SwitchBoard) -> list of int 
    Given a switchboard, the function will check to see which switches are 
    on and will return the following switches in order as a list on integers 
    ''' 
    # create an empty list to store the on switches in 
    on_switches = [] 
    # loop through the list to check each switch 
    for index in range(len(self._listsw)): 
     # check if the switch is on 
     if(self._listsw[index] == 1): 
      # if the switch is on, add it to the list 
      on_switches.append(index) 
    # return the list of on switches 
    return on_switches 


def flip(self, n): 
    ''' 
    (SwitchBoard, int) -> NoneType 
    Given a switch as an integer, the function will flip the state of the 
    desired switch on the switchboard. If it is on, it will be turned off. 
    If it is off, it will be turned on. 
    ''' 
    for index in range(len(self._listsw)): 
     # check if the switch is on 
     if(self._listsw[n] == 1): 
      # if it is on, turn the switch off 
      self._listsw[n] = 0 
     # if the switch is off 
     elif(self._listsw[n] == 0): 
      # turn the switch on 
      self._listsw[n] = 1    


def flip_every(self, n): 
    ''' 
    (SwitchBoard, int) -> NoneType 
    Given an integer n, the function will flip the state of every nth 
    integer. If the integer is on, it will be turned off. If the integer is 
    off, it will be turned on. 
    ''' 
    for index in range(0, len(self._listsw), n): 
     # check if the switch is on 
     if(self._listsw[index] == 1): 
      # if it is on, turn the switch off 
      self._listsw[index] = 0 
     # if the switch is off 
     elif(self._listsw[index] == 0): 
      # turn the switch on 
      self._listsw[index] = 1    


def reset(self): 
    ''' 
    (SwitchBoard) -> NoneTypen 
    When called, the function will reset the entire switchboad and all 
    switches will be turned off. 
    ''' 
    # go through the switchboard 
    for index in range(len(self._listsw)): 
     # and turn every switch off 
     self._listsw[index] = 0 
+2

Bitte fügen Sie Ihren Code in Ihre Frage ein. –

+0

Ich habe einen Screenshot gepostet Klick "mein Code so weit" –

+1

Ja, aber wir eine Kopie einfügen ist viel besser. – Gormador

Antwort

2

Sehr einfacher Fehler: Sie definieren Ihre Klasse als eine Funktion.

ersetzen:

def SwitchBoard(LightSwitch): 

mit

class SwitchBoard(LightSwitch): 

Und Sie sind gut zu gehen. Wie es derzeit steht, wird SwitchBoard als eine Funktion mit einem Argument behandelt, das nichts zurückgibt ... daher die None.

+0

Verdammt, verpasst das. – Gormador

+0

Obwohl, @ shamanth-chedde, Prime-Beispiel zugunsten der gesamten relevanten Code-Kopie eingefügt, da dies nicht auf dem ursprünglich angehängten Bild sichtbar war ;-) – Gormador

+0

oh jeez Idk, wie ich das in Ordnung vermissen Vielen Dank! –

Verwandte Themen