Я пытаюсь выполнить цикл от 100 до 0. Как это сделать в Python?
for i in range (100,0)
не работает.
Я пытаюсь выполнить цикл от 100 до 0. Как это сделать в Python?
for i in range (100,0)
не работает.
Попробуйте range(100,-1,-1)
, 3-й аргумент - это инкремент для использования (задокументировано здесь).
("диапазон" параметров, запуск, остановка, шаг задокументированы здесь)
По-моему, это наиболее читаемо:
for i in reversed(xrange(101)):
print i,
for i in range(100, -1, -1)
и немного более длинное (и более медленное) решение:
for i in reversed(range(101))
for i in range(101)[::-1]
Как правило, в Python вы можете использовать отрицательные индексы для начала со спины:
numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
print numbers[-i - 1]
Результат:
50
40
30
20
10
Почему ваш код не работает
Код 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)
Другое решение:
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.
Простой ответ для решения вашей проблемы может быть таким:
for i in range(100):
k = 100 - i
print(k)
Короткий и сладкий. Это было моим решением при курсе CodeAcademy. Распечатывает строку в порядке очереди.
def reverse(text):
string = ""
for i in range(len(text)-1,-1,-1):
string += text[i]
return string
for var in range(10,-1,-1)
работает
Вы всегда можете увеличить диапазон и вычесть из переменной в вашем случае 100 - i
где i in range( 0, 101 )
.
for i in range( 0, 101 ):
print 100 - i
Я пробовал это в одном из упражнений 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')
Я хотел пройти через два списка в обратном направлении одновременно, поэтому мне нужен был отрицательный индекс. Это мое решение:
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
О, хорошо, прочитайте вопрос неправильно, я полагаю, что нужно вернуться назад в массиве? если так, у меня есть это:
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])
a = 10
for i in sorted(range(a), reverse=True):
print i