Вашего первый вопрос в том, что input
возвращает string
так что вам нужно чтобы отправить его на int
, если вы хотите индексировать его. Вероятно, вы получите следующую ошибку.
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:"))
Преобразование его в состоянии в то время как петля будет работать только при условии, что не изменяет это значение в переменной к int
, это еще string
# Works only once
while int(positiveNum) >= 0:
сейчас следующая проблема заключается в том, что вы используете positiveNum
в качестве номера индекса. Это приведет к IndexError
, если последний введенный номер больше, чем SIZE
, скажем, 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
Здесь также несколько альтернатив цикла
# 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])
обращают внимание, вы используете positiveNum как в качестве индекса в списке, который должен быть доступы и оба, как фактическое число заданное Пользователь. То есть, если пользователь дает вам «100», вы попытаетесь получить доступ к numberList [100], в то время как numberList может содержать только одно число внутри, а – deathyr
в идиоматическом питоне. While цикл не является подходящей конструкцией для использования. Даже на других языках вы обычно используете цикл while, когда вы не знаете, сколько предметов вы будете перебирать. Для обоих циклов вы знаете, сколько. В качестве учебной вещи это прекрасно, но не думайте, что это правильный способ сделать это. –