2016-11-10 5 views
0

Könnte mein aktueller Code für diese Funktion funktionieren? Hier ist das Ziel von dem, was ich versuche, zuerst zu tun und dann mein aktueller VersuchErmitteln und Zurückgeben des Werts am Standortindex in einer Liste

Blick auf die Liste der Werte, xs. Suchen Sie und geben Sie den Wert am Standortindex zurück. Wenn der Index für xs ungültig ist, geben Sie stattdessen die Antwort zurück.

Aktuelle Code:

def get(xs, index, response=None): 
    xs=[] 
    i=0 
    for i in xs: 
     try: 
      while i<len(xs): 
       index=xs.index(xs,index) 
       index = i 
      return i 
     except: 
      return response 

Dank jede Hilfe dankbar ist

+0

was ist es, dass Sie versuchen, genau das zu tun ? –

+0

Es wird auf jeden Fall nicht funktionieren, vorausgesetzt, Sie ordnen 'xs = []' zu, so dass die 'for'-Schleife niemals eingegeben wird. Sieht aus, als hättest du eine Reihe von Looping-Schichten. – AChampion

Antwort

1

Sie scheinen sehr verwirrt zu sein über das, was Sie zu tun versuchen ...

Also, wenn ich das richtig verstanden, Sie xs[index] zurückgeben, wenn es sonst response, eine einfache Möglichkeit, das nach dem EAFP-Prinzip zu tun ist:

def get(xs, index, response=None): 
    try: 
     return xs[index] 
    except IndexError: 
     return response 
+0

Ich mag, wie wir beide völlig entgegengesetzte Dinge verstanden :-) –

+1

Ja, ich habe aufgegeben, den Code angesichts der Grad der Verwirrung zu interpretieren und nur versucht, die englische Frage zu beantworten. Aber wir haben das gleiche Muster entwickelt. – AChampion

+0

Darf ich Ihnen nicht die Schuld geben. –

1

Viele Fragen hier, sie sie durch die Segmente brechen:

  • Sie neu zuweisen den Namen der Liste, die Sie in so passieren die Liste effektiv zu verlieren Sie in sind:

    xs=[] 
    

    es ist nicht notwendig, dass diese Zeile entfernt werden kann.

  • Sie weisen einen Wert i (erinnert an C), die überschrieben wird, wenn die Schleife beginnt und Sie verwenden ein for-loop wenn Sie nicht wirklich brauchen:

    i=0 
    for i in xs: 
    

    wieder, dies kann auch sein, entfernt.

  • Sie verwenden eine try-except mit einem blanken except; Sie sollten die Ausnahme angeben, die hier ausgelöst werden könnte, nämlich ValueError.

    try: 
        # content 
    except ValueError: 
        return response 
    
  • Sie verwenden eine while Schleife bekommen die index (und start Angabe), neu zuweisen, und dann es zurückkehrt; es macht nicht viel Sinn. Sie suchen wirklich nach return xs.index(index).

    Auch hier könnte man wirklich ersetzen alle, dass Code mit xs.index(index)

Alles in allem könnte Ihre Funktion wie folgt aussehen:

def get(xs, index, response=None): 
    try: 
     return xs.index(index) 
    except ValueError: 
     return response 
Verwandte Themen