a='123456789abcdef'
start=0
stop=len(a)
step=1
for i in range(start,stop,step):
print(a[i])
step=step+1
возможно ли как-то повлиять внутри цикла на параметры фунции range ( start,stop,step)?
Python
Питон, циклы, функция range
Документация как бы намекает нам:
Атрибуты какбэ есть, но их нельзя менять.
Берём, пробуем, чтобы понять, насколько нельзя:
Какие варианты:
1) Переделать на while, как выше советуют.
2) Если нужно уменьшить диапазон на ходу, можно использовать break.
3) Если шаг меняется по некоему закону (например, кольцо шагов в списке), можно итерироваться по отдельному индексу, а сам шаг на каждой итерации брать из списка или вычислять.
4) Написать свой range, с шагом и атрибутами.
5) Использовать самомодифицирующийся цикл. Верный путь к труднообнаружимым ошибкам, но если ты не ПТУшник и не гуманитарий, то можно. Это тоже ручное управление циклом, как и while, но плюс - можно подложить в список сразу несколько элементов.
The range type represents an immutable sequence of numbers...и
New in version 3.3: The start, stop and step attributes.https://docs.python.org/3/library/stdtypes.html#range
Атрибуты какбэ есть, но их нельзя менять.
Берём, пробуем, чтобы понять, насколько нельзя:
r = range(0, 10, 2)
for i in r:
print(i)
if i == 6: r.stop = 16
Запускаем, получаем от интерпретатора по щам: 0
2
4
6
Traceback (most recent call last):
File "/home/main.py", line 199, in
if i == 6: r.stop = 16
AttributeError: readonly attribute
Двойные стандарты: мне-то не даёт сделать класс с атрибутами только для чтения. Прямо как Паскаль какой-то, прости, Господи.Какие варианты:
1) Переделать на while, как выше советуют.
2) Если нужно уменьшить диапазон на ходу, можно использовать break.
3) Если шаг меняется по некоему закону (например, кольцо шагов в списке), можно итерироваться по отдельному индексу, а сам шаг на каждой итерации брать из списка или вычислять.
4) Написать свой range, с шагом и атрибутами.
5) Использовать самомодифицирующийся цикл. Верный путь к труднообнаружимым ошибкам, но если ты не ПТУшник и не гуманитарий, то можно. Это тоже ручное управление циклом, как и while, но плюс - можно подложить в список сразу несколько элементов.
my_range = [0]
for i in my_range:
print(i)
if i < 100: my_range.append((i + 1) ** 2)
6) Использовать функции из itertools. Они позволяют построить достаточно большое количество сценариев итерирования. a = '123456789abcdef'
start = 0
stop = len(a)
step = 1
for i in range(start, stop, step):
print(a[i])
# Изменение параметров range
if i == 2:
start = 3
stop = 8
step = 2
Андрей Лахурин
не получается

Петр Енин
Ну , разумеется)))
Похожие вопросы
- Помогите решить информатику на языке ПИТОН!!!!!!!!!!!!!! с помощью циклов while и for
- Что за зверь Питон.
- Питон. Нужно помочь решить задачу с циклом for
- Питон программирование. Цикл for
- Почему list index out of range? что надо исправить?
- Питон во всем такой медленный? (сравнивал с JavaScript)
- Вы согласны с мнением, что питон хуже других языков программирования?
- Питон на сириусе. Кинотеатр
- Решить две задачи на питоне. Помогите пожалуйста
- Как сделать так чтобы питон воспринимал число 13, не как 1 и 3?