Не понимаю откуда к числу добавилось + 1

Рейтинг: 0Ответов: 1Опубликовано: 19.07.2023

Работаю с кодом и ниоткуда берётся + 1 к числу с которым я работал. Это действие происходит в конце работы программы. То есть у неё есть число 1 то есть 2 элемент списка но почему число превращается в 2

asda = 7

c = 5

v = []

e = c - 1

q = len(v)

h = []

f = q * 2

k = (c - len(v))

w = (c - len(v) - 1)

x = c * 2

for i in range(1, asda + 1):
    v.append(i)

running = True
while running:
    print(v)
    n = c - len(v)
    if q == 1:
        running = False
        break
    if len(v) + len(v) == c:
        n = 0
    if len(v) < c:
        print(n - 1, 'Это оно')   # Вот в этом месте
        v.pop(n - 1)              # Почему отказывается удалять
        print(n - 1, 'Это оно2')  # И просто код продолжается, Хотя должен удалиться первый элемент(Вся магия происходит на последним действии)
        h.append(v[0])
    if len(v) >= c - 1:
        v.pop(c - 1)
        h.append(v[0])
        v.append(h[0])
        v.pop(0)
        h.pop(0)

Выводит код

[1, 2, 3, 4, 5, 6, 7]
[2, 3, 4, 6, 7, 1]
[3, 4, 6, 1, 2]
[4, 6, 1, 3]
0 Это оно
0 Это оно2
[6, 1, 3]
1 Это оно
1 Это оно2  # Вот здесь показывает элемент который должен быть удалён
[6, 3]  # Оно собственно не удаляется(Главный вопрос почему не удаляется)
2 Это оно  # И херакс эта цифра уже 2

Вопрос почему в конце работы кода не удаляется 1 элемент списка(Написал в комментариях где работа кода меня не устраивает)

Ответы

▲ 2Принят

Итак, вы проходите проверку if len(v) < c: со списком [4, 6, 1, 3]. Значение n при этом равно 1 (n = c - len(v))

Выполнено удаление элемента с индексом 0. Идем на следующую итерацию. Список [6, 1, 3], значение n равно 5-3=2. Повторяем первый абзац:

Итак, вы проходите проверку if len(v) < c: со списком [6, 1, 3]. Значение n при этом равно 2 (n = c - len(v)).

Выполнено удаление элемента с индексом 1. Идем на следующую итерацию. Список [6, 3], значение n равно 5-2=3.

Теперь вы проходите проверку if len(v) < c: со списком [6, 3]. Значение n при этом равно 3 (n = c - len(v)).

Получается, вы хотите удалить элемент с индексом 2 из списка [6, 3]. Если вы умеете напиться их пустой чашки, наверное, сможете и это сделать... Но Python не умеет удалять из списка то, чего там нет...

Так понятно, что у вас происходит? Ровно то, что написано...