2017-12-15 1 views
0

Ich bin neu in Python-Funktionen und praktiziere gerade an meinem Ende. Ich schrieb einige grundlegende Code, der Benutzer für eine Nummerneingabe, 9 mal fragt, und gibt dann entweder wahr oder falsch basierend auf> 100 oder < 100.Python-Code in eine Funktion verwandeln

Dieser Code funktioniert:

list_1 = [] 
count = 0 
while count < 10: 
    text = int(input('list a number:')) 
    if text < 100: 
     list_1.append(True) 
    else: 
     list_1.append(False) 

    count = count + 1 
print(list_1) 

Jetzt möchte ich um das in eine Funktion umzuwandeln (mit For-Schleife anstelle von etwas anderem). Ich habe versucht, ein paar Versionen und kann es nicht bekommen, passiert nichts, wenn ich dies auszuführen:

def foo(): 
    list_1 = [] 
    text = int(input('list a number:')) 
    for x in range(10): 
     if text > 100: 
      list_1.append(True) 
     else: 
      list_1.append(False) 
      return() 

2 Fragen:

  1. Wie kann ich diese Funktion zu schreiben, so dass es tatsächlich nützlich ist, und gibt True zurück oder falsch?

  2. Kann mir jemand ein einfaches Beispiel zeigen, wie sich die Verwendung einer Funktion in diesem Fall lohnen könnte? Wie könnte ich es vom ersten Stück Code trennen, damit es auf andere Weise nützlich ist?

ich nur schreiben Teile des Codes verzweigen mag, ist es in einer effizienteren Weise

Dank

+0

Möchten Sie eine Liste von T/F zurückgeben? Oder nur ein Wert? Die Rückkehr ist nutzlos, solange sie innerhalb der Schleife ist. –

+0

@coldspeed Ich möchte eine Liste von T/F zurückgeben, wie das obere Beispiel zeigt. Vielen Dank. Vielleicht ist es meine Unkenntnis mit Return, etwas anderes als Drucken zu versuchen – JD2775

+1

Okay, in diesem Fall, entfernen Sie die 'return()', und platzieren Sie 'return list_1' außerhalb der Schleife? –

Antwort

1

Es sieht aus wie Sie einen Fehler in der Rückgabewert für foo() haben. Stellen Sie sicher, dass Sie die Liste aus Ihrer Funktion zurückgeben. Beispiel:

def foo(): 
    list_1 = [] 
    for x in range(10): 
     text = int(input('list a number:'))#this should be inside the loop 
     if text > 100: 
      list_1.append(True) 
     else: 
      list_1.append(False) 
    return(list_1) #you are passing list_1 after your for loop 

bool_list = foo() #will pass return value in function 
#print(list_1) this will throw an error! 
print(bool_list) #bool_list was list_1 in foo() 

Beim Lesen von Namespaces ist es wichtig, Funktionen zu verstehen. Wenn Sie foo() starten, wird es seinen eigenen Code ausführen, aber wenn Sie Objekte mit einem Rückgabewert nicht übergeben, können Sie es nicht an anderen Orten verwenden.

Funktionen sind für einen gut gepflegten Code unbedingt erforderlich. Immer wenn eine Operation wiederholt benötigt wird, reduzieren Funktionen unnötige Codezeilen. Sie bieten auch Vielseitigkeit, wenn die gleiche Operation viele Male ausgeführt werden muss, aber in leicht unterschiedlicher Weise. Sie könnten ein Argument durch foo() übergeben, das angibt, wie oft Sie beispielsweise Ihre for-Schleife durchlaufen möchten.

1

Es gibt eine fast unbegrenzte Anzahl von Möglichkeiten, um die Organisation, die Sie Funktionen verwenden können, . Der Haupttreiber Ihrer Entscheidung ist, ob Sie die Funktionalität wiederverwenden können oder ob es Ihren Code vereinfacht. Also, im Wesentlichen, kann ich das in einen Baustein einbauen, ist die Frage, die Sie sich stellen sollten.

In Ihrem Beispiel sagen Sie also, dass Sie Eingaben in mehreren verschiedenen Szenarien vornehmen müssen, oder Sie müssen vielleicht eine Anzahl von Listen auswerten und die Druckausgabe bereitstellen.

Sie könnten Dinge trennen basiert darauf, dass:

def take_input(list): 
    count = 0 
    while count < 5: 
     inputlist.append(int(input('list a number:'))) 
     count += 1 

def print_output(list): 
    outputlist = [] 
    for input in list: 
     if input < 100: 
      outputlist.append(True) 
     else: 
      outputlist.append(False) 
    print(outputlist) 

inputlist = [] 
take_input(inputlist) 
print_output(inputlist) 
+0

Take_input hat Nebenwirkungen, aus keinem guten Grund. –

Verwandte Themen