Цикл назад с использованием индексов в Python?

Я пытаюсь выполнить цикл от 100 до 0. Как это сделать в Python?

for i in range (100,0) не работает.

Ответ 1

Попробуйте range(100,-1,-1), 3-й аргумент - это инкремент для использования (задокументировано здесь).

("диапазон" параметров, запуск, остановка, шаг задокументированы здесь)

Ответ 2

По-моему, это наиболее читаемо:

for i in reversed(xrange(101)):
    print i,

Ответ 3

for i in range(100, -1, -1)

и немного более длинное (и более медленное) решение:

for i in reversed(range(101))

for i in range(101)[::-1]

Ответ 4

Как правило, в Python вы можете использовать отрицательные индексы для начала со спины:

numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
    print numbers[-i - 1]

Результат:

50
40
30
20
10

Ответ 5

Почему ваш код не работает

Код for i in range (100, 0) в порядке, кроме

третий параметр (step) по умолчанию +1. Поэтому вы должны указать третий параметр для range() как -1, чтобы сделать шаг назад.

for i in range(100, -1, -1):
    print(i)

ПРИМЕЧАНИЕ. Сюда входит 100 & 0 на выходе.

Есть несколько способов.

Лучший путь

Для питонического способа, проверьте PEP 0322.

Это пример Python3 для печати от 100 до 0 (включая 100 и 0).

for i in reversed(range(101)):
    print(i)

Ответ 6

Другое решение:

z = 10
for x in range (z):
   y = z-x
   print y

Результат:

10
9
8
7
6
5
4
3
2
1

Подсказка: Если вы используете этот метод для подсчета индексов в списке, вам потребуется -1 из значения "y", так как индексы вашего списка начинаются с 0.

Ответ 7

Простой ответ для решения вашей проблемы может быть таким:

for i in range(100):
    k = 100 - i
    print(k)

Ответ 8

Короткий и сладкий. Это было моим решением при курсе CodeAcademy. Распечатывает строку в порядке очереди.

def reverse(text):
    string = ""
    for i in range(len(text)-1,-1,-1):
        string += text[i]
    return string    

Ответ 9

for var in range(10,-1,-1) работает

Ответ 10

Вы всегда можете увеличить диапазон и вычесть из переменной в вашем случае 100 - i где i in range( 0, 101 ).

for i in range( 0, 101 ):
    print 100 - i

Ответ 11

Я пробовал это в одном из упражнений codeacademy (реверсирование символов в строке без использования обратного или:: -1)

def reverse(text):
    chars= []
    l = len(text)
    last = l-1
    for i in range (l):
        chars.append(text[last])
        last-=1

    result= ""   
    for c in chars:
        result += c
    return result
print reverse('hola')

Ответ 12

Я хотел пройти через два списка в обратном направлении одновременно, поэтому мне нужен был отрицательный индекс. Это мое решение:

a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
    print(i, a[i])

Результат:

-1 2
-2 5
-3 4
-4 3
-5 1

Ответ 13

О, хорошо, прочитайте вопрос неправильно, я полагаю, что нужно вернуться назад в массиве? если так, у меня есть это:

array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"]


counter = 0   

for loop in range(len(array)):
    if loop <= len(array):
        counter = -1
        reverseEngineering = loop + counter
        print(array[reverseEngineering])

Ответ 14

a = 10
for i in sorted(range(a), reverse=True):
    print i