Ваша проблема в том, что вы используете те вложенные циклы while, которые не выходят до тех пор, пока их условие не станет ложным .Таким образом, проверка внешнего цикла while на то, что i
меньше длины my_list
, не происходит, пока не завершатся все вложенные циклы while (чего никогда не будет).В частности, я думаю, что проблема заключается в последнем цикле while:
while i > insert_position:
list_copy.append(my_list[i-1])
i += 1
Этот цикл while не закончится, потому что i
всегда будет больше, чем insert_position
, и в итоге значение i
будетза пределами длины вашего my_list
.
Если вы измените логику кода для использования if
операторов внутри цикла while, я думаю, что это будет лучше, и тогда вам нужно только увеличить i
один раз в конце:
i = 0
while i < len(my_list) + 1:
if i < insert_position:
list_copy.append(my_list[i])
elif i == insert_position:
list_copy.append(value)
else:
list_copy.append(my_list[i-1])
i += 1