Кажется, не получается, чтобы цикл работал с диапазоном - PullRequest
0 голосов
/ 11 марта 2019
numbers = [5, 9, 13, 17, 21] 

for list in range(5,22,4): 
    print(numbers[list], end =" ")

Не получается заставить его работать, продолжайте получать

IndexError: индекс списка вне диапазона

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Ваш код, кажется, смешивает два подхода к решению одной и той же задачи.

Один печатает существующий список номеров:

numbers = [5, 9, 13, 17, 21] 

for number in numbers: 
    print(number, end=" ")

# or, alternatively

for index in range(len(numbers)): 
    print(numbers[index], end=" ")

Другой генерирует ту же последовательность чисел, используя функцию range():

for number in range(5,22,4):
    print(number, end=" ")

# or, reusing one of the previous approaches

numbers = range(5,22,4)

for number in numbers: 
    print(number, end=" ")

Имейте в виду, что range() создает объект диапазона, который подходит для перечисления и индексации, но не поддерживает другие операции со списками, такие как нарезка, конкатенация и повторение (конкатенация с самим собой). Если вы хотите получить numbers в виде списка, напишите явно:

numbers = list(range(5,22,4))

и тогда вы можете сделать:

for number in numbers * 2: 
    print(number, end=" ")

, который напечатает вашу последовательность чисел дважды.

1 голос
/ 11 марта 2019

Ваша переменная чисел имеет индекс от 0 до 4 (python начинается с 0 и увеличивается оттуда) - ваша команда диапазона дает вам числа:

[5, 9, 13, 17, 21]

You 'повторяя python, что вы хотите перейти от числа 5 к числу 22, с шагом 4. Это означает, что когда вы пытаетесь напечатать числа [список], переменная list фактически является индексом 5 на итерациицикл for, и он будет вне диапазона индексов переменной numbers, поскольку он имеет только индексы 0, 1, 2, 3 и 4

...