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])
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
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. –