2016-02-27 2 views
-1

Я пытаюсь сделать s-программу, которая берет текст и возвращает пользователю каждую третью букву, включая первую букву. Это то, что я написал.строка в индексе вне диапазона grok learning

msg = input('Message? ') 
for i in range(len(msg)): 
    (i) = (i*3) 
    print(msg[i], end=' ') 

Это возвращает все thurd письмо, включая 1-ю букву, а затем и выдает ошибку:

Файл "program.py", строка 4, в печати (МВП [I], конец =» ') IndexError: строка index out of range

Также программное обеспечение, которое я использую, говорит: Тестирование первого примера, но игнорирование пробелов. В вашем представлении появилось исключение типа IndexError. Это произошло в строке 4 вашего представления.

Каков самый простой способ исправить это?

+0

Это домашнее задание? – GLaDOS

+0

ваш индекс выйдет за пределы диапазона, когда вы пересечете 1/3 строки – dnit13

ответ

1

Предположим, у вас есть строка «Здесь мы». Он имеет длину 11. Вы даете i пройти весь путь до конца строки, но как только i достигает 4, эта строка с индексом i * 3 (12) не определена. Вместо этого вы не должны идти дальше, чем i, разделенный на 3 (округление). Это, как вы могли бы сделать, что:

msg = input('Message? ') 
for i in range((len(msg) // 3) + 1): 
    (i) = (i*3) 
    print(msg[i], end=' ') 
0

Вы можете увеличивать диапазон с шагом 3:

msg = input('Message? ') 
for i in range(0, len(msg), 3): 
    print(msg[i], end=' ') 
1

то, что вы хотите сделать, может быть легко достигнуто путем нарезки строку

msg = input('Message? ') 
print(msg[::3]) 
1

Это должно работать:

msg = input("Message?: ") 
count = 1 
for i in msg: 
    if count % 3 == 0: 
     print("First char in string is " + msg[0] + ", the third is " + i) 
    count += 1 
Смежные вопросы