2017-02-21 15 views
0

Ich benötige einen Code, der die Eingabe von 5 POS-Nummern verlangt und diese dann rückwärts ausgibt. Ich würde gerne eine While-Schleife verwenden. Dies ist, was ich bisher herausgefunden habe, aber es funktioniert nicht die zweite while-Schleife.Python-Liste, die rückwärts eingegebene Zahlen ausgibt

positiveNum = 0 
SIZE = 5 
numberList= [] 
ARRAY_LIMIT = SIZE -1 

while len(numberList) < SIZE : 
    positiveNum = input("Enter a positive number:") 
    numberList.append(positiveNum) 
while int(positiveNum) >= 0: 
    print(numberList[positiveNum]) 
    positiveNum -= 1 
+0

achten, verwenden Sie positiveNum sowohl als Index der Liste, die durch muss gegeben Zugriffe und beide als die tatsächliche Zahl sein der Benutzer. Wenn der Benutzer Ihnen "100" gibt, versuchen Sie, auf numberList [100] zuzugreifen, während numberList nur eine Zahl haben kann, anstatt – deathyr

+0

in idiomatic python. Eine while-Schleife ist nicht das richtige Konstrukt. Selbst in anderen Sprachen würden Sie normalerweise eine while-Schleife verwenden, wenn Sie nicht wissen, wie viele Elemente Sie durchlaufen würden. Für beide Schleifen wissen Sie wie viele. Als Bildungssache ist es in Ordnung, aber denke nicht, dass das der richtige Weg ist. –

Antwort

0

Sie sollten die Länge von numberList iterieren und nicht positive num. Grundsätzlich ändern Sie die zweite while-Schleife zu diesem.

i = SIZE; 
while i>0: 
     print(numberList[i-1]) 
     i=i-1 
0

Auf der zweiten Schleife, Sie werden auf die gleiche positiveNum Variable, ohne es auf die Größe des Arrays Reseting, versuchen:

SIZE = 5 
numberList= [] 
ARRAY_LIMIT = SIZE -1 

while len(numberList) < SIZE : 
    positiveNum = input("Enter a positive number:") 
    numberList.append(positiveNum) 
index = SIZE - 1 
while index >= 0: 
    print(numberList[index]) 
    index -= 1 
0

Ihre erste Problem ist, dass input eine string gibt so müssen Sie um es zu einem int zu werfen, wenn Sie damit indexieren möchten. Sie erhalten wahrscheinlich den folgenden Fehler.

TypeError: list indices must be integers or slices, not str

# Won't work with string 
numberList[positiveNum] 
positiveNum -= 1 
# Need to cast to int first 
positiveNum = int(input("Enter a positive number:")) 

es in der while-Schleife Zustand Konvertieren wird nur für den Zustand arbeitet, ist es, diesen Wert nicht zu einem int in den Variablen ändern, ist es immer noch ein string

# Works only once 
while int(positiveNum) >= 0: 

Jetzt Das nächste Problem ist, dass Sie positiveNum als Indexnummer verwenden. Dies wird eine IndexError verursachen, wenn die letzte Nummer eingegeben größer als SIZE, sagen 100.

SIZE = 5 
number_lst = [] 

while len(number_lst) < SIZE: 
    # Should perform error checking if you must have positive numbers 
    num = int(input("Enter a positive number: ")) 
    number_lst.append(num) 

# Output backwards using while 
i = len(number_lst) - 1 
while i >= 0: 
    print(number_lst[i]) 
    i -= 1 

Hier ist auch ein paar für Schleife Alternativen

# Output backwards using for 
for item in number_lst[::-1]: 
    print(item) 

for item in reversed(number_lst): 
    print(item) 

for i in range(len(number_lst) - 1, -1): 
    print(number_lst[i]) 

for i in reversed(range(len(number_lst))): 
    print(number_lst[i]) 
0

while-Schleifen verwenden:

size = 5 
number_list = [] 

while len(number_list) < size: 
    number_list.append(int(input("Enter a positive number: "))) 
i = 1 
while i <= size: 
    print(number_list[size - i]) 
    i += 1 

Verwenden einer For-Schleife für die zweite Schleife:

size = 5 
number_list = [] 

while len(number_list) < size: 
    number_list.append(int(input("Enter a positive number: "))) 
for i in number_list[::-1]: 
    print(i) 

Mit zwei for-Schleifen, die in diesem Fall sinnvoller wäre:

size = 5 
number_list = [] 

for _ in range(size): 
    number_list.append(int(input("Enter a positive number: "))) 
for i in number_list[::-1]: 
    print(i) 
Verwandte Themen