2016-04-11 8 views
0

Ich habe folgende Python-Code:Wie kann überprüft werden, ob das zweite Argument im Testfall in Python fehlt?

test.assert_equals(string_chunk('everlong'), ['everlong']); 

def string_chunk(string, n): 
    s=[]  
    i=0 
    if n<=0 or n==[]or n==None: 
     return [] 
    elif n>len(string): 
     return [string] 
    else: 
     for i in range(0,len(string),i+n): 
      s.append(string[i:i+n]) 
     return s  

Der Code soll Zeichenfolge Stücke von bestimmten Größe n zurückzukehren, und wird auch prüfen soll, ob n leer ist oder nicht als Parameter übergeben. Es gibt einen Fehler string_chunk() dauert genau 2 Argumente (1 gegeben). Wie stelle ich ein Standardargument zur Verfügung, damit ich dieses mit ein oder zwei Argumenten aufrufen kann?

+0

Was ist Ihre Frage? Was soll dieser Code tun? Funktioniert es? –

+0

Bitte erläutern Sie – danielfranca

+0

Es gibt zwei Möglichkeiten, "optionale" Argumente zu behandeln, entweder mithilfe von [* Standardparameterwerte *] (https://docs.python.org/3/tutorial/controlflow.html#default-argument-values) oder mithilfe von [* beliebigen Argumentlisten *] (https://docs.python.org/3/tutorial/controlflow.html#arbitrary-argument-lists). –

Antwort

0

Das hat nichts mit Testfällen, Tests oder der Behauptung zu tun, die Sie versuchen.

Ihr Code schlägt einfach fehl, weil Ihre Funktion string_chunkgenau zwei Argumente erwartet, aber Sie geben es genau eins.

Wenn Sie n wollen ein optionaler Parameter sein, verwenden Sie einen Standardwert:

def string_chunk(string, n=None): 
    if not n or n < 0: 
     return [] 
    # rest of the logic here 

not n wird für alle Fälle von falsy Werte entfallen n, darunter None, 0 oder die leere Liste [].

edit:

Von Ihrem Kommentar, den ich nehme an, Sie wollen tatsächlich

return [string] 

statt

return [] 

Ich kann nur vermuten, aber Ihre Daten sind unklar.

+0

danke, der vorherige Fehler wurde gelöst, aber es funktioniert nicht, wenn der Wert von n ist abwesend, dh wenn die Zeichenfolge nur gegeben ist – psp

+0

@ psp Ich bearbeitet meine Post mit einer Vermutung, obwohl – timgeb

+0

danke es ist gelöst, ich musste auch für n als nur Integer-Wert und nicht andere, die ich vergessen habe zu überprüfen. Ihre Antwort war wirklich hilfreich. – psp

Verwandte Themen