2017-06-23 6 views
0

Ich bin neu in Python und habe Schwierigkeiten zu verstehen, wie man Schleife verwenden.Schleife, Python, definieren eine Reihe von Variablen und Funktionen

könnte jemand mir helfen, wie man unter Code in einer Schleife/Liste schreibt, die viel kürzer sein wird?

def a1(self): 
    if aorb1 == 1: 
     return texta1 
    return textb1 

def a2(self): 
    if aorb2 == 1: 
     return texta2 
    return textb2 

def a3(self): 
    if aorb3 == 1: 
     return texta3 
    return textb3 

Vielen Dank.

+2

Versuchen Sie, die Funktionen in einer Schleife zu generieren? – user3080953

+1

Könnten Sie näher erläutern, was Sie erreichen möchten? Dies wird uns helfen, Ihren Code in eine Schleife umzuwandeln. – JNevens

+0

ja. Ich versuche, die Funktionen in einer Schleife zu generieren. ist es möglich? Ich bin wirklich neu in Python. Ich versuche dasselbe mit verschiedenen Variablenreihen zu machen. Anstatt jede Funktion zu schreiben, gibt es eine Möglichkeit, eine Schleife zu benutzen, so dass ich nur einmal schreiben muss? Danke – Feibai

Antwort

0

Ich kann einen Stich in die Richtung machen, in die Sie gehen und ein gewisses Maß an Führung bieten, aber ich vermute, dass ich ohne weitere Informationen nicht in die richtige Richtung gehe.

Zunächst einmal brauchen Sie self nicht als Parameter. Das gilt nur für Objekte.

Als nächstes müssen Sie die Variablen angeben, die in der Funktion als Parameter verwendet werden. Es sieht so aus, als hätten Sie versucht, a und b zu verwenden, ohne sie zu deklarieren.

def a1(a, b) 
    if a == 1: 
     return texta 
    elif b == 1: 
     return textb 

Seien Sie vorsichtig, dass Sie keine Fälle verpassen. Was ist, wenn a = 0 und b = 0? Dann würde diese Funktion None zurückgeben.

Schließlich bin ich nicht sicher, was genau Sie mit der Schleife zu tun versuchen, aber vielleicht so etwas?

# assign a and b values somewhere 
a = 1 
b = 0 

# save the functions in a list 
my_functions = [a1, a2, a3] 

# execute each function with the parameters `a` and `b` 
for f in my_functions: 
    result = f(a, b) 
    x.append(result) 

Dies wird in einer Liste führt die Ergebnisse Ihrer Funktion Ausführungen mit Parametern a und b enthält. Möchte mehr helfen, aber wir brauchen mehr Informationen. Vielleicht stimuliert das Obige das.

0

Sie lambdas erzeugen könnte, wo man a und b passieren, wie folgt:

my_funcs = [] 
for i in range(1,4): 
    func = lambda a, b: textas[i] if a == 1 or b == 1 else textbs[i] 
    my_funcs.append(func) 

können Sie so nennen eine Funktion wie folgt aus:

my_funcs[0](0,1) # this does the same as your function a1 

Ich weiß nicht, was Sie wollen texta1 oder textb1 zu sein. Dies könnte in einem Wörterbuch gespeichert werden, wie im obigen Beispiel.

+1

Das Generieren einer Funktion in einer Schleife ist in Python trivial. –

+0

es funktioniert! groß. Danke vielmals – Feibai

Verwandte Themen