Цикл назад, используя индексы в Python? - PullRequest
230 голосов
/ 15 мая 2009

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

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

Ответы [ 14 ]

331 голосов
/ 15 мая 2009

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

176 голосов
/ 15 мая 2009

На мой взгляд, это наиболее читабельно:

for i in reversed(xrange(101)):
    print i,
29 голосов
/ 15 мая 2009
for i in range(100, -1, -1)

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

for i in reversed(range(101))

for i in range(101)[::-1]
15 голосов
/ 17 ноября 2009

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

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

Результат:

50
40
30
20
10
5 голосов
/ 12 февраля 2017

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

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

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

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

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

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

Лучший путь

Для pythonic пути, проверьте PEP 0322 .

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

for i in reversed(range(101)):
    print(i)
5 голосов
/ 24 июля 2011

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

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.

3 голосов
/ 28 ноября 2017

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

for i in range(100):
    k = 100 - i
    print(k)
2 голосов
/ 18 мая 2015

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

def reverse(text):
    string = ""
    for i in range(len(text)-1,-1,-1):
        string += text[i]
    return string    
1 голос
/ 29 мая 2017

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

for i in range( 0, 101 ):
    print 100 - i
1 голос
/ 24 июня 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...