2016-04-05 6 views
-1

versuchen, eine Funktion zu erstellen, die einen Stapel in umgekehrter Reihenfolge druckt.Stapel in umgekehrter Reihenfolge

dies ist der Code, den ich bisher habe:

def read_ints(num):    
    integer = int(input("Enter a integer:")) 
    stack = Stack() 
    for i in range(integer): 
    if stack.is_empty() == True: 
     stack.push(num) 
    else: 
     stack.pop() 

ich geschaffen habe einen Testfall:

read_integers(3) 
4 
3 
2 

so, wenn ich 4 Typ, 3 und 2. die Ausgabe 2 sein sollte, 3 4. jede Hilfe wäre toll, danke! im Moment wird nur eine ganze Zahl dreimal ausgedruckt. Also 3 Ich erhalte, 3,3

+0

Ist 'num' sein soll, wie viele Zahlen Sie lesen wollen? – tzaman

+0

yeah das ist was num ist :) – deans7

+0

Die Funktionsnamen hier stimmen nicht überein, die Definition von 'Stack' ist nicht vorgesehen, und zu keinem Zeitpunkt erzeugt der Code, den Sie bereitstellen, irgendeine nicht-prompte Ausgabe. Wir haben also keine Ahnung, was Sie drucken, ob Sie drucken oder welche Codelogik Sie haben. Es ist extrem wichtig zu wissen, welche Bestellungstaste gedrückt wurde, um zu verstehen, was Sie überhaupt meinen, indem Sie "in umgekehrter Reihenfolge" drucken; meinst du Print in der Reihenfolge Zeug wurde geschoben (FIFO, die Umkehrung der natürlichen Reihenfolge eines Stapels, die LIFO ist), oder drucken vom Ende der zugrunde liegenden Liste bis zum Anfang (LIFO, umgekehrt für eine "Liste", aber natürliche Reihenfolge von Stapel)? – ShadowRanger

Antwort

0
integer = int(input("Enter a integer:")) 

Diese Linie muss innerhalb Ihre for-Schleife sein - sonst Sie akzeptieren einmal eingegeben, und dann dreimal Looping, die dumm ist.

for i in range(integer): 

Angenommen, Sie num ganze Zahlen lesen möchten, sollten Sie Schleife bis zu range(num), nicht range(integer).

if stack.is_empty() == True: 
    stack.push(num) 
else: 
    stack.pop() 

Dies ist wahrscheinlich nicht das, was Sie wollen - du bist nur auf den Stapel hinzufügen, wenn es leer ist, oder aber sofort knallen. Stattdessen möchten Sie alle Zahlen zuerst an und dann alle am Ende. Außerdem hast du wieder num und integer verwechselt - du willst deinen Eingang zum Stack hinzufügen, nicht dein Loop-Limit!

Also, vorausgesetzt Ihr Stack.pop druckt, was knallte Sein:

for i in range(num): 
    integer = int(input("Enter an integer: ")) 
    stack.push(integer) 

while not stack.is_empty(): 
    stack.pop() 
+0

es funktioniert dank! Ich sehe was ich falsch liege – deans7