2016-10-25 4 views
0

Ich versuche, eine Funktion zu erstellen, die einen Sentinel-Wert (eine Ganzzahl) übernimmt und eine Liste von ganzen Zahlen zurückgibt. Die Funktion fordert den Benutzer auf, eine Liste von Ganzzahlen zu erstellen, wobei der angegebene Sentinel-Wert als die Nummer verwendet wird, die der Benutzer in eingibt, um die Erstellung der Liste zu beenden. Für Antworten bitte, es so einfach wie möglich machen Refrain wie ich Python noch jede Technik verwenden, die zu weit fortgeschritten ist am Lernen und will nicht zu weit voraus zu springen ...Erstellen einer Funktion, die eine Liste von Ganzzahlen erstellt

def createIntList(): 
    createlist = [] 
    while myInt != addNum: #having problems around here!! 
     myInt = input("What do you want the sentinel to be?") 
     addNum = input("Please enter a number, ", myInt, "to stop: ") 
    createlist.append(addNum) 
    return createlist 
+0

Welche Version von Python? Außerdem versuchen Sie Variablen zu vergleichen, bevor Sie sie erstellen. – MooingRawr

+0

Wo ist 'addNum' definiert? –

+0

Wo ist 'myInt' definiert? –

Antwort

1

das ist wirklich was für iter ist , die als erstes Argument eine Funktion annehmen kann, die einen sentinal Wert keine Argumente und gibt einen Wert, und für das zweite Argument, der ihm sagt, wenn

def get_int(prompt="Enter a number:"): 
    return input(prompt) 

sentinal = input("Enter your sentinal:") 
print(list(iter(get_int,sentinal))) 

alternativ können Sie eine Methode schreiben zu akzeptieren, um die Daten zu stoppen bis Ihre Sentinal erreicht ist ...

def input_until(prompt,sentinal): 
    a = [] 
    while True: 
     tmp = input(prompt) 
     if tmp == sentinal: return a 
     a.append(tmp) 

die kleinste Änderung, die Sie zu Ihrem bestehenden Code machen könnte, ist

def createIntList(): 
    createlist = [] 
    #define both variables before your loop 
    myInt = input("What do you want the sentinel to be?") 
    addNum = None 
    while myInt != addNum: #having problems around here!! 
     #dont ask each time for a new sentinal... 
     addNum = input("Please enter a number, "+ str(myInt)+ " to stop: ") 
     createlist.append(addNum) # append your values inside the list... 
    return createlist 
+0

Wenn ich versuche, das auszuführen, indem ich es durch ein Def-Main-Kommando aufruft. Ich erhalte eine Fehlermeldung, def main(): createIntList() main() Ich erhalte eine Fehlermeldung wie diese Traceback (jüngste Aufforderung zuletzt): File "hw6.py", Zeile 37, in main() File "hw6.py", Zeile 35, in dem Haupt createIntList() File "hw6.py", Zeile 22, in createIntList addNum = Eingang ("Bitte geben Sie eine Nummer", myInt, "to stop:") TypeError: Eingabe erwartet höchstens 1 Argumente, habe 3 –

+0

das ist Ursache Sie aufgerufene Eingabe falsch ... Eingabe ist nicht wie Drucken, wo Sie nur Zeichenfolgen mit einem Komma verbinden ... sehen Meine Bearbeitung Ich habe Ihren Code geändert, um auch diesen Fehler zu beheben .... diese Klasse kann wirklich schwer für Sie sein, Sie sollten sich auf die Python-Dokumentation zu 'input' beziehen –

Verwandte Themen